RxStopMinirdr 函式 (mrx.h)

系統會呼叫 RxStopMinirdr 來停止先前已啟動的網路迷你重新導向器。 在 RxStopMinirdr 中,如果驅動程式指出 UNC 名稱支援,RDBSS 也會將網路迷你重新導向器驅動程式取消註冊為通用命名慣例, (UNC) 提供者 (MUP) 。

語法

NTSTATUS RxStopMinirdr(
  [in]  IN PRX_CONTEXT RxContext,
  [out] OUT PBOOLEAN   PostToFsp
);

參數

[in] RxContext

要用來取得裝置物件的RX_CONTEXT結構的指標,並判斷這是否為文件系統進程。

[out] PostToFsp

如果要求必須張貼,供文件系統進程稍後處理時,傳回時設定為TRUE的邏輯值指標。

傳回值

如果停止序列成功或下列其中一個錯誤值,RxStopMinirdr 會傳回STATUS_SUCCESS:

傳回碼 Description
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。 傳回STATUS_PENDING時, 系統會張貼 RxStopMinirdr 以供文件系統進程稍後處理並完成。

如果網路迷你重新導向器在向 RDBSS 註冊時指出 UNC 的支援, (Controls 參數至 RxRegisterMinirdr) , 則 RxStopMinirdr 會嘗試將網路迷你重新導向器的 DeviceName 取消註冊為具有 MUP (呼叫 FsRtlDeregisterUncProvider 的 UNC 提供者,) 。 RxStopMinirdr 也會使用 I/O 管理員取消註冊文件系統, (代表網路迷你重新導向器) 呼叫 IoUnregisterFileSystem) 。

如果實作此例程, 則 RxStopMinirdr 例程會呼叫網路迷你重新導向器 MrxStop 回呼例程。 如果沒有剩餘的使用中FCB,則會傳回STATUS_SUCCESS。 如果有一些剩餘的使用中FCB,則會傳回STATUS_REDIRECTOR_HAS_OPEN_HANDLES。 在這兩種情況下,redrector 的 RDBSS 發送器會關閉,而 RDBSS 中網路迷你重新導向器的內部狀態會設定為 RDBSS_STARTABLE。

規格需求

需求
目標平台 桌面
標頭 mrx.h (包含 Mrx.h)
IRQL <= APC_LEVEL

另請參閱

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr