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(IRP_MJ_CREATE_MAILSLOT 또는 IRP_MJ_CREATE_NAMED_PIPE Irp의 MajorFunction 멤버)을 만드는 데 잘못된 요청이 있었습니다. 이 상태 값은 실패를 나타냅니다. |
STATUS_PENDING | 비동기 요청이 발생했으며 요청 상태가 보류 중입니다. |
STATUS_SUCCESS | RxFsdDispatch 루틴 호출이 성공했습니다. |
발언
RxFsdDispatch RDBSS에서 호출하여 IRP(I/O 요청 패킷)를 처리합니다. 이러한 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 |