MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 例程
RDBSS 會呼叫 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 例程,對目錄變更通知作業的網路迷你重新導向器發出要求。
語法
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY](
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
參數
RxContext [in, out]
RX_CONTEXT 結構的指標。 此參數包含要求作業的 IRP。
傳回值
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 會在成功或適當的 NTSTATUS 值時傳回STATUS_SUCCESS,例如下列其中一項:
傳回碼 | Description |
---|---|
STATUS_FILE_CLOSED | 已取得FCB結構,但已關閉相關聯的SRV_OPEN結構。 |
STATUS_INSUFFICIENT_RESOURCES | 資源不足,無法完成要求。 |
STATUS_INVALID_DEVICE_REQUEST | 指定了無效的裝置要求。 |
STATUS_INVALID_PARAMETER | 在 RxContext 中指定了無效的參數。 |
STATUS_NOT_IMPLEMENTED | 未實作此例程。 |
STATUS_NOT_SUPPORTED | 網路迷你重新導向器不支援指定的要求。 |
備註
RDBSS 會呼叫 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 以回應接收 IRP_MJ_DIRECTORY_CONTROL 要求。
在呼叫 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]之前,RDBSS 會修改 RxContext 參數所指向之RX_CONTEXT結構中的下列成員:
LowIoContext.Operation 成員會設定為 LOWIO_OP_NOTIFY_CHANGE_DIRECTORY。
LowIoContext.ResourceThreadId 成員會設定為在 RDBSS 中起始作業的進程線程。
如果 IrpSp-Flags> 已設定SL_WATCH_TREE位,LowIoContext.ParamsFor.NotifyChangeDirectory.WatchTree 成員會設定為 TRUE。
LowIoContext.ParamsFor.NotifyChangeDirectory.CompletionFilter 成員會設定為 IrpSp-Parameters.NotifyDirectory.CompletionFilter> 的值。
LowIoContext.ParamsFor.NotifyChangeDirectory.NotificationBufferLength 成員會設定為 IrpSp-Parameters.NotifyDirectory.Length> 的值。
LowIoContext.ParamsFor.NotifyChangeDirectory.pNotificationBuffer 成員會藉由呼叫 MmGetSystemAddressForMdlSafe 傳入 Irp-MdlAddress> 和 NormalPagePriority 來設定為傳回的值。 用戶緩衝區也會探查並鎖定以進行寫入存取。
目錄變更通知作業通常是由網路迷你重新導向器實作為異步操作,因為它可能需要相當長的時間。 此作業通常包含將網路要求傳送至要求變更通知的遠端伺服器。 當所需的變更在伺服器上受到影響時,就會取得回應。 這是網路迷你重新導向器可能需要註冊唯一內容值來處理本機起始取消的作業範例。
當 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 例程正在處理時,RX_CONTEXT 的 LowIoContext.ResourceThreadId 成員保證會指出在 RDBSS 中起始作業的進程線程。 LowIoContext.ResourceThreadId 成員可用來代表另一個線程釋放 FCB 結構。 異步例程完成時,可以釋放從初始線程取得的FCB結構。 您可以藉由呼叫 RxReleaseFcbResourceForThreadInMRx 來釋放 FCB 結構。
規格需求
目標平台 |
桌面 |
標頭 |
Mrx.h (包含 Mrx.h) |
另請參閱
MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]
MRxLowIOSubmit[LOWIO_OP_FSCTL]
MRxLowIOSubmit[LOWIO_OP_IOCTL]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]