次の方法で共有


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 (RxRegisterMinirdrを する Controls パラメーター) に登録するときに UNC のサポートを示している場合、RxStopMinirdr ネットワーク ミニ リダイレクターの DeviceName を UNC プロバイダーとして MUP に登録解除します (ネットワーク ミニ リダイレクターの代わりに FsRtlDeregisterUncProvider 呼び出します)。 RxStopMinirdr 、ネットワーク ミニ リダイレクターの代わりに、ファイル システムを I/O マネージャー (IoUnregisterFileSystem呼び出し) に登録解除します。

このルーチンが実装されている場合、RxStopMinirdr ルーチンは、MrxStop コールバック ルーチン ネットワーク ミニ リダイレクターを呼び出します。 アクティブな FCB が残っていない場合は、STATUS_SUCCESSが返されます。 アクティブな FCB が残っている場合は、STATUS_REDIRECTOR_HAS_OPEN_HANDLESが返されます。 いずれの場合も、リダイレクターの RDBSS ディスパッチャーがスピンダウンされ、RDBSS のネットワーク ミニ リダイレクターの内部状態がRDBSS_STARTABLEに設定されます。

必要条件

要件 価値
ターゲット プラットフォーム の デスクトップ
ヘッダー mrx.h (Mrx.h を含む)
IRQL <= APC_LEVEL

関連項目

FsRtlDeregisterUncProvider の

IoUnregisterFileSystem の

RxRegisterMinirdr の

RxStartMiniRdr の

RxUnregisterMinirdr の

RxpUnregisterMinirdr の