RxFsdDispatch 函式 (mrx.h)
RxFsdDispatch 實作 RDBSS 處理 I/O 要求封包的文件系統驅動程式 (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 的要求無效(MajorFunctionIrp 成員 IRP_MJ_CREATE_MAILSLOT 或IRP_MJ_CREATE_NAMED_PIPE)。 此狀態值表示失敗。 |
STATUS_PENDING | 已提出異步要求,且要求的狀態為擱置中。 |
STATUS_SUCCESS | RxFsdDispatch 例程呼叫成功。 |
言論
RDBSS 會呼叫 RxFsdDispatch 來處理 I/O 要求封包(IRP)。 RDBSS 通常會收到這些 IRP,以回應要求檔案作業的使用者模式應用程式。 另一個核心驅動程式也有可能發出這類 IRP。
RxFsdDispatch 例程的指標會在呼叫 RxDriverEntry 例程以初始化 RDBSS 時,透過網路迷你重新導向器驅動程式的驅動程式分派數據表複製。
在內部,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 |