次の方法で共有


FsRtlRegisterUncProvider 関数 (ntifs.h)

FsRtlRegisterUncProvider ルーチンは、ネットワーク リダイレクターを汎用名前付け規則 (UNC) プロバイダーとしてシステムマルチ UNC プロバイダー (MUP) に登録します。

構文

NTSTATUS FsRtlRegisterUncProvider(
  [out] PHANDLE          MupHandle,
        PCUNICODE_STRING RedirectorDeviceName,
  [in]  BOOLEAN          MailslotsSupported
);

パラメーター

[out] MupHandle

FsRtlRegisterUncProvider を呼び出してネットワーク リダイレクターを登録解除するときに使用する MUP ハンドルを返す場所へのポインター。 返されるハンドルは、 FsRtlRegisterUncProvider がSTATUS_SUCCESSを返す場合にのみ有効です。

RedirectorDeviceName

ネットワーク リダイレクターのデバイス名を含む Unicode 文字列へのポインター。

[in] MailslotsSupported

ネットワーク リダイレクターがメールスロットをサポートしている場合は TRUE に 設定します。 このオプションは通常、Microsoft SMB リダイレクターで使用するために予約されています。

戻り値

FsRtlRegisterUncProvider は、成功した場合にSTATUS_SUCCESS、または次のいずれかの適切な NTSTATUS 値を返します。

リターン コード 説明
STATUS_ACCESS_DENIED
MUP に送信された IRP 操作の元のリクエスターの実行モードがカーネル モードからありませんでした。
STATUS_ACCESS_VIOLATION
MUP デバイスへのアクセスを試みたときにアクセス違反が発生しました。
STATUS_DATATYPE_MISALIGNMENT
データのずれが発生しました。
STATUS_INSUFFICIENT_RESOURCES
バッファーにメモリを割り当てるために使用できるリソースが不足していました。
STATUS_INVALID_HANDLE
無効なパラメーターが IRP の MUP に渡されました。
STATUS_INVALID_USER_BUFFER
RedirDevName パラメーターに無効なパラメーターが渡されたか、異常終了が発生しました。

注釈

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

notepad \\server\public\readme.txt

マップされたドライブ文字 ("NET USE" コマンドなど) を作成する操作中、MUP は関係しません。 この操作は、ネットワーク リダイレクターの複数プロバイダー ルーター (MPR) とユーザー モード WNet プロバイダー DLL によって処理されます。 ただし、ユーザー モード WNet プロバイダー DLL は、この操作中にカーネル モード ネットワーク リダイレクター ドライバーと直接通信する可能性があります。

Windows Server 2003、Windows XP、および Windows 2000 では、分散ファイル システム (DFS) ドライブを表さないマップされたドライブで実行されるリモート ファイル操作は MUP を経由しません。 これらの操作は、ドライブ文字マッピングを処理したネットワーク プロバイダーに直接移動します。

Windows Vistaredirector モデルに準拠するネットワーク リダイレクターの場合、マップされたネットワーク ドライブが使用されている場合でも MUP が関係します。 マップされたドライブで実行されるファイル操作は、MUP を経由してネットワーク リダイレクターに移動します。 この場合、MUP は関係するネットワーク リダイレクターに操作を渡すだけであることに注意してください。

Windows Vista リダイレクター モデルに準拠するネットワーク リダイレクターでは、 FsRtlRegisterUncProvider ではなく FsRtlRegisterUncProviderEx を使用する必要があります。

FsRtlRegisterUncProvider は、MUP にプライベート ファイル システム コントロール (FSCTL) を送信して登録を実行します。

ProviderOrder レジストリ値は、MUP が個々のネットワーク リダイレクターにプレフィックス解決要求を発行する順序を決定します。 このレジストリ値は、次のレジストリ キーの下にあります。

HKLM\CurrentControlSet\Control\NetworkProvider\Order

ProviderOrder レジストリ値を変更するには、Windows Server 2003、Windows XP、および Windows 2000 の MUP で再起動を有効にする必要があります。

メールスロットをサポートできるのは、システム上の 1 つのネットワーク プロバイダーだけです。 そのため、 MailslotsSupported パラメーターは通常、Microsoft SMB リダイレクターの 場合にのみ TRUE に設定されます。

IoCreateDevice を呼び出して UNC プロバイダーとして登録するネットワーク リダイレクターのデバイス オブジェクトを作成するドライバー (FsRtlRegisterUncProvider を呼び出すドライバー) は、IoCreateDevice に渡される DeviceCharacteristics パラメーターのオプションの 1 つとしてFILE_REMOTE_DEVICEを渡す必要があります。

UNC プロバイダーを登録解除するには、 FsRtlDeregisterUncProvider を使用し、 MupHandle パラメーターを渡します。

ドライバーがローカル ディスク ファイル システムとして登録されている場合 (たとえば、FILE_NETWORK_FILE_SYSTEMではなく DeviceType パラメーターを FILE_DEVICE_DISK_FILE_SYSTEM に設定して IoCreateDevice を呼び出す)、ドライバーは FsRtlRegisterUncProvider を呼び出して MUP に UNC プロバイダーとして登録することはできません。

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

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

Microsoft Windows Vista での MUP の変更

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

FsRtlDeregisterUncProvider

FsRtlRegisterUncProviderEx

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice