IRP_MJ_WRITE

Cada driver de dispositivo que transfere dados do sistema para seu dispositivo deve lidar com solicitações de gravação em uma rotina DispatchWrite ou DispatchReadWrite , uma vez que um driver de nível superior deve ser colocado em camadas em um driver de dispositivo.

Quando enviado

A qualquer momento após a conclusão bem-sucedida de uma solicitação de criação.

Possivelmente, um aplicativo de modo de usuário ou um componente Win32 com um identificador para o objeto de arquivo que representa o objeto de dispositivo de destino solicitou uma transferência de dados para o dispositivo. Possivelmente, um driver de nível superior criou e configurou o IRP de gravação.

Parâmetros de Entrada

O local da pilha de e/s do driver no IRP indica o número de bytes a serem transferidos em Parameters. Write. Length.

Alguns drivers usam o valor em Parameters. Write. Key para classificar as solicitações de gravação de entrada em uma ordem determinada pelo driver na fila do dispositivo ou em uma fila interna gerenciada por driver de IRPs.

Determinados tipos de drivers também usam o valor em Parameters. Write. ByteOffset, que indica o deslocamento inicial para a operação de transferência. Por exemplo, consulte o tópico IRP_MJ_WRITE na documentação do IFS (sistema de arquivos instalável).

Dependendo se o driver de dispositivo subjacente configura os sinalizadores do objeto do dispositivo de destino com DO_BUFFERED_IO ou com DO_DIRECT_IO, os dados são transferidos de um dos seguintes:

  • O buffer em IRP- > AssociatedIrp. SystemBuffer, se o driver usar e/s em buffer

  • O buffer descrito pelo MDL em IRP- > MdlAddress, se o driver de dispositivo subjacente usar e/s direta (DMA ou Pio)

Parâmetros de saída

Nenhum

Operação

Ao receber uma solicitação de gravação, um driver de nível superior configura o local da pilha de e/s no IRP para o próximo Driver, ou cria e configura um IRPs adicional para um ou mais drivers mais baixos. Ele pode configurar sua rotina IoCompletion , que é opcional para o IRP de entrada, mas necessário para o IRPs criado pelo driver, chamando IoSetCompletionRoutine. Em seguida, o driver passa a solicitação para o próximo driver mais baixo com IoCallDriver.

Ao receber uma solicitação de gravação, um driver de dispositivo transfere dados da memória do sistema para seu dispositivo. O driver de dispositivo define o campo de informações do bloco de status de e/s como o número de bytes transferidos quando ele conclui o IRP.

Requisitos

Cabeçalho

WDM. h (incluindo WDM. h, Ntddk. h ou Ntifs. h)

Confira também

DispatchReadWrite

DispatchWrite

IoCallDriver

IoCompletion

IoSetCompletionRoutine