RxStopMinirdr 関数 (mrx.h)
RxStopMinirdr は、以前に開始されたネットワーク ミニ リダイレクターを停止するために呼び出されます。 RxStopMinirdr の一部として、RDBSS は、ネットワーク ミニ リダイレクター ドライバーを汎用名前付け規則 (UNC) プロバイダーとして複数 UNC プロバイダー (MUP) に登録解除します (ドライバーが 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が返されます。 この場合、呼び出し元の有効なユーザー ID (ログオン ID) は、RxContext パラメーターの FsdUid メンバーに保存されます。 また、待機せずに特定の内部 RDBSS ロックを取得できない場合は、STATUS_PENDINGが返され 、PostToFsp が TRUE に設定されます。 STATUS_PENDINGが返されると、 RxStopMinirdr はファイル システム プロセスによって後で処理するためにポストされ、完了します。
ネットワーク ミニ リダイレクターが RDBSS (Controls パラメーターを RxRegisterMinirdr に対する Controls パラメーター) に登録するときに UNC のサポートを示す場合、RxStopMinirdr は、ネットワーク ミニリダイレクターの DeviceName を MUP で UNC プロバイダーとして登録解除しようとします (ネットワーク ミニ リダイレクターの代わりに FsRtlDeregisterUncProvider を呼び出します)。 RxStopMinirdr は、ネットワーク ミニ リダイレクターの代わりに、I/O マネージャー ( IoUnregisterFileSystem を呼び出す) にファイル システムを登録解除します。
RxStopMinirdr ルーチンは、このルーチンが実装されている場合、ネットワーク ミニ リダイレクター MrxStop コールバック ルーチンを呼び出します。 アクティブな FCB が残っていない場合は、STATUS_SUCCESSが返されます。 アクティブな FCB が残っている場合は、STATUS_REDIRECTOR_HAS_OPEN_HANDLESが返されます。 いずれの場合も、リダイレクターの RDBSS ディスパッチャーがスピンダウンされ、RDBSS のネットワーク ミニ リダイレクターの内部状態がRDBSS_STARTABLEに設定されます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | mrx.h (Mrx.h を含む) |
IRQL | <= APC_LEVEL |