RxFsdDispatch 함수(mrx.h)

RxFsdDispatch 는 IRP(I/O 요청 패킷)를 처리하기 위해 RDBSS에 대한 FSD(파일 시스템 드라이버) 디스패치를 구현합니다. 이 루틴에 대한 포인터는 RDBSS가 초기화될 때 RxDriverEntry 루틴에 의해 네트워크 미니 리디렉터 드라이버에 대한 디바이스 드라이버 디스패치 테이블을 통해 복사됩니다.

구문

NTSTATUS RxFsdDispatch(
  [in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
  [in] IN PIRP                 Irp
);

매개 변수

[in] RxDeviceObject

이 네트워크 미니 리다이렉터에 대한 RDBSS 디바이스 개체에 대한 포인터입니다.

[in] Irp

처리 중인 I/O 요청 패킷에 대한 포인터입니다.

반환 값

RxFsdDispatch 는 다음 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_INVALID_DEVICE_REQUEST 잘못된 디바이스 개체에 대한 요청이 발생했습니다. 예를 들어 파일 시스템 개체가 RxDeviceObject 매개 변수로 전달되면 이 오류가 반환됩니다. 이 상태 값은 실패를 나타냅니다.
STATUS_OBJECT_NAME_INVALID 명명된 파이프 또는 mailslot을 만들도록 잘못된 요청이 발생했습니다(IrpMajorFunction 멤버가 IRP_MJ_CREATE_MAILSLOT 또는 IRP_MJ_CREATE_NAMED_PIPE). 이 상태 값은 실패를 나타냅니다.
STATUS_PENDING 비동기 요청이 발생했으며 요청의 상태 보류 중입니다.
STATUS_SUCCESS RxFsdDispatch 루틴 호출이 성공했습니다.

설명

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

RxDriverEntry 루틴을 호출하여 RDBSS를 초기화할 때 RxFsdDispatch 루틴에 대한 포인터가 네트워크 미니 리디렉터 드라이버에 대한 드라이버 디스패치 테이블을 통해 복사됩니다.

내부적으로 RDBSS는 두 개의 디스패치 벡터를 유지 관리합니다.

  • 대부분의 작업에 대한 일반적인 디스패치 벡터입니다.

  • 파일 디바이스 FCB 작업을 위한 프라이빗 디스패치 벡터입니다.

IRP가 IRP_MJ_CREATE 요청인 경우 RxFsdDispatch 는 공통 디스패치 벡터를 사용합니다. IRP가 파일 개체의 FCB에 대한 작업인 경우 프라이빗 디스패치 벡터를 사용해야 하는 경우 RxFsdDispatch가 검사. 그렇지 않으면 일반적인 디스패치 벡터가 IRP를 처리하는 데 사용됩니다.

RxFsdDispatch 는 내부 루틴을 호출하여 표준 IRP를 대부분 처리합니다. 그 결과 네트워크 미니 리디렉터 드라이버에서 구현한 콜백 루틴 중 하나에 대한 호출이 발생합니다.

몇 가지 IRP는 특수로 처리되고 RDBSS에서 내부적으로 처리됩니다. 예를 들어 WMI를 사용하는 경우 IRP_MJ_SYSTEM_CONTROL 내부적으로 사용됩니다. IRP_MJ_CREATE_MAILSLOT 또는 IRP_MJ_CREATE_NAMED_PIPE 요청은 특별히 처리되고 거부됩니다(STATUS_OBJECT_NAME_INVALID 오류가 반환됨).

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 mrx.h(Mrx.h, Rxstruc.h, Struchdr.h 포함)
IRQL <= APC_LEVEL

추가 정보

RxDriverEntry