RxFsdDispatch 函式 (mrx.h)
RxFsdDispatch 會實作文件系統驅動程式 (FSD) 分派,讓 RDBSS 處理 I/O 要求封包 (IRP) 。 當 RDBSS 初始化時, RxDriverEntry 例程會將此例程的指標複製到網路迷你重新導向器驅動程式的裝置驅動程式分派數據表上。
語法
NTSTATUS RxFsdDispatch(
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN PIRP Irp
);
參數
[in] RxDeviceObject
此網路迷你重新導向器的 RDBSS 裝置物件的指標。
[in] Irp
正在處理的 I/O 要求封包指標。
傳回值
RxFsdDispatch 會傳回下列其中一個值:
傳回碼 | Description |
---|---|
STATUS_INVALID_DEVICE_REQUEST | 在無效的裝置物件上提出要求。 例如,如果文件系統對象傳遞為 RxDeviceObject 參數,就會傳回此錯誤。 此狀態值表示失敗。 |
STATUS_OBJECT_NAME_INVALID | 建立命名管道或 mailslot 的要求無效, (Irp 的 MajorFunction 成員IRP_MJ_CREATE_MAILSLOT或IRP_MJ_CREATE_NAMED_PIPE) 。 此狀態值表示失敗。 |
STATUS_PENDING | 已提出異步要求,且要求的狀態為擱置中。 |
STATUS_SUCCESS | RxFsdDispatch 例程呼叫成功。 |
備註
RDBSS 會呼叫 RxFsdDispatch 來處理 I/O 要求封包 (IRP) 。 RDBSS 通常會收到這些 IRP,以回應要求檔案作業的使用者模式應用程式。 另一個核心驅動程式也可以發出這類 IRP。
呼叫 RxDriverEntry 例程以初始化 RDBSS 時,會透過網路迷你重新導向器驅動程式的驅動程式分派數據表複製 RxFsdDispatch 例程的指標。
在內部,RDBSS 會維護兩個分派向量:
大部分作業的常見分派向量。
檔案裝置FCB作業的私人分派向量。
如果 IRP 是IRP_MJ_CREATE要求, 則 RxFsdDispatch 會使用常見的分派向量。 如果 IRP 用於檔案物件 FCB 上的作業, RxFsdDispatch 將會檢查是否應該使用私人分派向量。 否則,一般分派向量將用來處理 IRP。
RxFsdDispatch 會呼叫內部例程來處理標準 IRP,其中大部分都會導致呼叫網路迷你重新導向器驅動程式所實作的其中一個回呼例程。
RDBSS 會將一些 IRP 視為特殊且在內部處理。 例如,如果啟用 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 |