Compartilhar via


Função RxFsdPostRequest (rxprocs.h)

RxFsdPostRequest enfileira o IRP (pacote de solicitação de E/S) especificado por uma estrutura RX_CONTEXT para a fila de trabalho para processamento pelo FSP (processo do sistema de arquivos).

Sintaxe

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

Parâmetros

[in] RxContext

Um ponteiro para o RX_CONTEXT que contém o IRP a ser enfileirado em um thread de trabalho.

Retornar valor

RxFsdPostRequest retorna os seguintes valores:

Código de retorno Descrição
STATUS_PENDING
Uma solicitação assíncrona foi feita e foi enfileirada em um thread de trabalho para processamento posterior. O status da solicitação está pendente.

Comentários

RxFsdPostRequest normalmente é chamado pelo RDBSS para processar um IRP (pacote de solicitação de E/S) assíncrono. Normalmente, esses IRPs são recebidos pelo RDBSS em resposta a um aplicativo no modo de usuário que solicita operações em um arquivo. Também é possível que outro driver de kernel emita esse IRP.

Se o membro Flags da estrutura RX_CONTEXT apontada pelo parâmetro RxContext não tiver o RX_CONTEXT_FLAG_NO_PREPOSTING_NEEDED bit definido, o RxFsdPostRequest tentará bloquear qualquer espaço de endereço do usuário necessário para determinados tipos de solicitações. As solicitações que resultam nesse comportamento são baseadas no membro MajorFunction de RX_CONTEXT estrutura apontada por RxContext e incluem o seguinte:

  • IRP_MJ_DIRECTORY CONTROL quando A Função Secundária >RxContext é IRP_MN_QUERY_DIRECTORY.
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
O membro MajorFunction de RxContext determinará em qual fila de trabalho essa solicitação será postada. Uma solicitação IRP_MJ_DEVICE_CONTROL em que o membro Parameters.DeviceIoControl.IoControlCode está IOCTL_REDIR_QUERY_PATH será postada na fila de trabalho atrasada. No caso, o membro Flags do parâmetro RxContext terá o RX_CONTEXT_FLAG_FSP_DELAYED_OVERFLOW_QUEUE bit definido. Todas as outras solicitações são postadas na fila de trabalho crítica e o membro Flags do parâmetro RxContext terá o RX_CONTEXT_FLAG_FSP_CRITICAL_OVERFLOW_QUEUE bit definido.

Se o membro FileObject do IRP não for NULL e a solicitação puder ser postada imediatamente para processamento (o limite para a fila do dispositivo está vazio), isso ocorrerá. Caso contrário, a solicitação será postada em uma fila de estouro no volume.

Todas as chamadas para RxFsdPostRequest são enfileiradas em um thread de trabalho para chamar a rotina RxFsdDispatch passando o parâmetro RxContext .

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho rxprocs.h (inclua Rxprocs.h, Rxcontx.h)
IRQL <= APC_LEVEL

Confira também

RxFsdDispatch