次の方法で共有


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 パラメーターは、RedirDevName の長さが 0 であったため、無効でした。
STATUS_OBJECT_TYPE_MISMATCH
DeviceObject パラメーターでオブジェクトの種類の不一致が発生しました。

備考

ネットワーク リダイレクターは、汎用名前付け規則 (UNC) 名を処理するために、複数の UNC プロバイダー (MUP) に登録する必要があります。 MUP は、リモート ファイル システム要求を処理できるネットワーク リダイレクター (UNC プロバイダー) に汎用名前付け規則 (UNC) 名を使用して、すべてのリモート ファイル システム アクセスをチャネリングするカーネル モード コンポーネントです。 MUP は、コマンド ラインから実行できる次の例に示すように、アプリケーションによって UNC パスが使用される場合に関係します。

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
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 を する HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

関連項目

FsRtlCancellableWaitForSingleObject

FsRtlDeregisterUncProvider の

FsRtlRegisterUncProvider

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice の

IoGetDeviceAttachmentBaseRef

IoRegisterFileSystem の