RxStopMinirdr 函式 (mrx.h)
呼叫 RxStopMinirdr,以停止先前已啟動的網路迷你重新導向器。 作為 RxStopMinirdr的一部分,如果驅動程式指出支援 UNC 名稱,RDBSS 也會將網路迷你重新導向器驅動程式取消註冊為通用命名慣例 (UNC) 提供者 (UNC) 提供者。
語法
NTSTATUS RxStopMinirdr(
[in] IN PRX_CONTEXT RxContext,
[out] OUT PBOOLEAN PostToFsp
);
參數
[in] RxContext
要用來取得裝置物件的RX_CONTEXT結構的指標,並判斷這是文件系統進程。
[out] PostToFsp
如果要求必須張貼,以供文件系統進程稍後處理,則為傳回時設定為TRUE的邏輯值指標。
傳回值
如果停止序列成功或下列其中一個錯誤值,RxStopMinirdr 會傳回STATUS_SUCCESS:
傳回碼 | 描述 |
---|---|
STATUS_PENDING | RDBSS 和網路迷你重新導向器的停止順序必須在文件系統進程的內容中完成。 如果呼叫 RxStopMinirdr 來自不同的進程(例如使用者模式要求),則會張貼要求以供稍後處理,並傳回STATUS_PENDING。 如果某些內部 RDBSS 鎖定在等候的情況下無法取得,也可以傳回此錯誤。 |
STATUS_REDIRECTOR_HAS_OPEN_HANDLES | 網路迷你重新導向器具有開啟的句柄,目前無法停止。 |
STATUS_REDIRECTOR_STOPPED | 網路迷你重新導向器已停止。 |
言論
當停止要求發出至 RDBSS 時,RDBSS 中可能會有進行中的要求。 有些要求可以取消,而其餘的要求需要處理才能完成。
有一些策略可用來關閉 RDBSS。 目前,採用最保守的方法。 取消可取消的作業,並保留停止作業,直到其餘要求執行到完成為止。
RDBSS RxStopMinirdr 通常是因為來自使用者模式應用程式或服務的 FSCTL 或 IOCTL 要求而呼叫,以停止網路迷你重新導向器,不過此呼叫也可以從網路迷你重新導向器或操作系統關機處理的一部分呼叫。
發出呼叫 RxStopMinirdr 之後,RDBSS 允許並傳遞至網路迷你重新導向器的唯一作業是下列 I/O 要求封包的要求:
- IRP_MJ_CLEANUP
- IRP_MJ_CLOSE
RDBSS 和網路迷你重新導向器的停止順序必須在文件系統進程的內容中完成。 如果呼叫 RxStopMinirdr 來自不同的進程(例如使用者模式要求),則必須張貼要求以供稍後處理,並傳回STATUS_PENDING。 在此情況下,呼叫端的有效使用者標識碼(登入標識符)會儲存在 RxContext 參數的 FsdUid 成員中。 此外,如果在等候的情況下無法取得特定內部 RDBSS 鎖定,則會傳回STATUS_PENDING,並將 PostToFsp 設定為 TRUE
如果網路迷你重新導向器在向 RDBSS 註冊時表示對 UNC 的支援(Controls 參數 RxRegisterMinirdr),則 RxStopMinirdr 會嘗試 使用 MUP 將網路迷你重新導向器的 DeviceName 取消註冊為 UNC 提供者(代表網路迷你重新導向器呼叫 FsRtlDeregisterUncProvider)。 RxStopMinirdr 也會代表網路迷你重新導向器,向 I/O 管理員取消註冊文件系統(呼叫 IoUnregisterFileSystem)。
RxStopMinirdr 例程,然後在實作此例程時呼叫網路迷你重新導向器 MrxStop 回呼例程。 如果沒有剩餘的作用中 FBB,則會傳回STATUS_SUCCESS。 如果有一些剩餘的使用中 FBB,則會傳回STATUS_REDIRECTOR_HAS_OPEN_HANDLES。 不論是哪一種情況,重新導向器的 RDBSS 發送器會展開,而 RDBSS 中網路迷你重新導向器的內部狀態會設定為 RDBSS_STARTABLE。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | mrx.h (包括 Mrx.h) |
IRQL | <= APC_LEVEL |