RxFsdPostRequest 함수(rxprocs.h)

RxFsdPostRequest 는 FSP(파일 시스템 프로세스)에서 처리하기 위해 작업자 큐에 RX_CONTEXT 구조로 지정된 IRP(I/O 요청 패킷)를 큐에 대기합니다.

구문

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

매개 변수

[in] RxContext

작업자 스레드에 큐에 대기할 IRP를 포함하는 RX_CONTEXT 대한 포인터입니다.

반환 값

RxFsdPostRequest 는 다음 값을 반환합니다.

반환 코드 설명
STATUS_PENDING
비동기 요청이 만들어졌으며 이후 처리를 위해 작업자 스레드에 큐에 대기되었습니다. 요청의 상태 보류 중입니다.

설명

RxFsdPostRequest 는 일반적으로 비동기 IRP(I/O 요청 패킷)를 처리하기 위해 RDBSS에서 호출됩니다. 이러한 IRP는 일반적으로 파일에 대한 작업을 요청하는 사용자 모드 애플리케이션에 대한 응답으로 RDBSS에서 수신됩니다. 다른 커널 드라이버가 이러한 IRP를 발급할 수도 있습니다.

RxContext 매개 변수가 가리키는 RX_CONTEXT 구조체의 Flags 멤버에 RX_CONTEXT_FLAG_NO_PREPOSTING_NEEDED 비트 집합이 없는 경우 RxFsdPostRequest는 특정 유형의 요청에 필요한 모든 사용자 주소 공간을 잠그려고 시도합니다. 이 동작을 초래하는 요청은 RxContext가 가리키는 RX_CONTEXT 구조체의 MajorFunction 멤버를 기반으로 하며 다음을 포함합니다.

  • RxContext->MinorFunction이 IRP_MN_QUERY_DIRECTORY경우 CONTROL을 IRP_MJ_DIRECTORY.
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
RxContextMajorFunction 멤버는 이 요청이 게시될 작업 큐를 결정합니다. Parameters.DeviceIoControl.IoControlCode 멤버가 IOCTL_REDIR_QUERY_PATH IRP_MJ_DEVICE_CONTROL 요청이 지연된 작업 큐에 게시됩니다. 이 경우 RxContext 매개 변수의 Flags 멤버에는 RX_CONTEXT_FLAG_FSP_DELAYED_OVERFLOW_QUEUE 비트가 설정됩니다. 다른 모든 요청은 중요한 작업 큐에 게시되고 RxContext 매개 변수의 Flags 멤버에는 RX_CONTEXT_FLAG_FSP_CRITICAL_OVERFLOW_QUEUE 비트가 설정됩니다.

IRP의 FileObject 멤버가 NULL 이 아니며 처리를 위해 요청을 즉시 게시할 수 있는 경우(디바이스 큐에 대한 임계값이 비어 있음) 이 발생합니다. 그렇지 않으면 요청이 볼륨의 오버플로 큐에 게시됩니다.

RxFsdPostRequest에 대한 모든 호출은 RxContext 매개 변수를 전달하는 RxFsdDispatch 루틴을 호출하기 위해 작업자 스레드에 큐에 대기됩니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 rxprocs.h(Rxprocs.h, Rxcontx.h 포함)
IRQL <= APC_LEVEL

추가 정보

RxFsdDispatch