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 値を返します。

リターン コード 説明
STATUS_ACCESS_DENIED
MUP に送信される IRP のリクエスター モードがカーネル モードからではありません。
STATUS_ACCESS_VIOLATION
MUP デバイスへのアクセスを試みたとき、アクセス違反が発生しました。
STATUS_DATATYPE_MISALIGNMENT
データの不整合が発生しました。
STATUS_INSUFFICIENT_RESOURCES
バッファーにメモリを割り当てるために使用できるリソースが不足していました。
STATUS_INVALID_DEVICE_REQUEST
既に登録されている既知のプロバイダーを登録するための要求が行われました。
STATUS_INVALID_PARAMETER
RedirDevName の長さが 0 であったため、RedirDevName パラメーターが無効でした。
STATUS_OBJECT_TYPE_MISMATCH
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 プロバイダーとして登録することはできません。

詳細については、設計ガイドの以下のセクションを参照してください。

UNC の名前付けと MUP のサポート

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)

こちらもご覧ください

FsRtlCancellableWaitForSingleObject

FsRtlDeregisterUncProvider

FsRtlRegisterUncProvider

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice

IoGetDeviceAttachmentBaseRef

IoRegisterFileSystem