FsRtlRegisterUncProviderEx 関数 (ntifs.h)
FsRtlRegisterUncProviderEx ルーチンは、ネットワーク リダイレクターを汎用名前付け規則 (UNC) プロバイダーとしてシステムマルチ UNC プロバイダー (MUP) に登録します。
構文
NTSTATUS FsRtlRegisterUncProviderEx(
[out] PHANDLE MupHandle,
[in] PCUNICODE_STRING RedirDevName,
[in] PDEVICE_OBJECT DeviceObject,
[in] FSRTL_UNC_PROVIDER_FLAGS Flags
);
パラメーター
[out] MupHandle
FsRtlDeregisterUncProvider を呼び出してネットワーク リダイレクターを登録解除するときに使用する MUP ハンドルを返す場所へのポインター。 返されたハンドルは、 FsRtlRegisterUncProviderEx が STATUS_SUCCESSを返す場合にのみ有効です。
[in] RedirDevName
ネットワーク リダイレクターのデバイス名を含む Unicode 文字列へのポインター。 MUP は、このデバイス名を使用して、ターゲットが \Device\Mup であるオブジェクト マネージャー名前空間にシンボリック リンクを作成します。
[in] DeviceObject
ネットワーク リダイレクターを表す名前のないデバイス オブジェクトへのポインター。
[in] Flags
ネットワーク リダイレクターでサポートされている機能を示すビットマスク。 ネットワーク リダイレクターは、機能がサポートされていることを示すビットを設定します。 Flags パラメーターには、次の 2 つのオプションがあります。
FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED
ネットワーク リダイレクターは mailslots をサポートします。 このオプションは通常、Microsoft SMB リダイレクターで使用するために予約されています。
FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED
ネットワーク リダイレクターは、クライアント側キャッシュを使用したオフライン アクセスをサポートします。
戻り値
FsRtlRegisterUncProviderEx は、成功した場合にSTATUS_SUCCESS、または次のいずれかの適切な NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
|
MUP に送信される IRP のリクエスター モードがカーネル モードからではありません。 |
|
MUP デバイスへのアクセスを試みたとき、アクセス違反が発生しました。 |
|
データの不整合が発生しました。 |
|
バッファーにメモリを割り当てるために使用できるリソースが不足していました。 |
|
既に登録されている既知のプロバイダーを登録するための要求が行われました。 |
|
RedirDevName の長さが 0 であったため、RedirDevName パラメーターが無効でした。 |
|
DeviceObject パラメーターでオブジェクト型の不一致が検出されました。 |
注釈
ネットワーク リダイレクターは、汎用名前付け規則 (UNC) 名を処理するために、複数の UNC プロバイダー (MUP) に登録する必要があります。 MUP は、リモート ファイル システム要求を処理できるネットワーク リダイレクター (UNC プロバイダー) に、汎用名前付け規則 (UNC) 名を使用してすべてのリモート ファイル システム アクセスをチャネル化するカーネル モード コンポーネントです。 コマンド ラインから実行できる次の例に示すように、アプリケーションで UNC パスが使用される場合、MUP が関係します。
notepad \\server\public\readme.txt
マップされたドライブ文字 ("NET USE" コマンドなど) を作成する操作中、MUP は関与しません。 この操作は、ネットワーク リダイレクターの複数プロバイダー ルーター (MPR) とユーザー モードの WNet プロバイダー DLL によって処理されます。 ただし、ユーザー モード WNet プロバイダー DLL は、この操作中にカーネル モード ネットワーク リダイレクター ドライバーと直接通信する場合があります。
Windows Vista リダイレクター モデルに準拠するネットワーク リダイレクターの場合、マップされたネットワーク ドライブが使用されている場合でも MUP が関係します。 マップされたドライブに対して実行されるファイル操作は、MUP を経由してネットワーク リダイレクターに移動します。 この場合、MUP は、関係するネットワーク リダイレクターに操作を渡すだけです。
FsRtlRegisterUncProviderEx は、登録を実行するためにプライベート ファイル システム コントロール (FSCTL) を MUP に送信します。
FsRtlRegisterUncProviderEx の呼び出しで RedirDevName パラメーターで指定されたデバイス名は、オブジェクト マネージャー名前空間の \device\Mup へのシンボリック リンクになります。 また、デバイス名 RedirDevName のオープン要求は、 DeviceObject パラメーターが指す実際のネットワーク リダイレクター デバイス オブジェクトに自身をルーティングします。
FsRtlRegisterUncProviderEx を呼び出すネットワーク リダイレクターは、自身をファイル システムとして登録することはできません (ネットワーク リダイレクターは IoRegisterFileSystem を呼び出してはなりません)。 Windows Vista RDBSS (動的または静的リンク) を使用するネットワーク ミニ リダイレクターは、ファイル システムとして登録されません。
Windows Vista リダイレクター モデルに準拠するネットワーク リダイレクターが所有するリモート ファイル システム スタック上のファイル オブジェクトは、MUP に解決されます。 そのため、 IoGetDeviceAttachmentBaseRef は 、ファイル オブジェクトを所有するネットワーク リダイレクターではなく、MUP のデバイス オブジェクトを返します。 ただし、ファイル オブジェクトの内容はネットワーク リダイレクターによって引き続き所有されます。
ProviderOrder レジストリ値は、MUP が個々のネットワーク リダイレクターにプレフィックス解決要求を発行する順序を決定します。 この順序は、再起動せずに動的に変更できます。 このレジストリ値は、次のレジストリ キーの下にあります。
HKLM\CurrentControlSet\Control\NetworkProvider\Order
メールスロットをサポートできるのは、システム上の 1 つのネットワーク プロバイダーのみです。 そのため、 Flags パラメーターのFSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED オプションは、通常、Microsoft SMB リダイレクターにのみ設定されます。
UNC プロバイダーを登録解除するには、 FsRtlDeregisterUncProvider を使用し、 MupHandle パラメーターを渡します。
ドライバーがローカル ディスク ファイル システムとして登録されている場合 (DeviceType パラメーターを FILE_DEVICE_DISK_FILE_SYSTEM に設定して IoCreateDevice を呼び出すことによって)、ドライバーは FsRtlRegisterUncProviderEx を呼び出して、MUP に UNC プロバイダーとして登録することはできません。
詳細については、設計ガイドの以下のセクションを参照してください。
Microsoft Windows Vista での MUP の変更点
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示