次の方法で共有


IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL (mountmgr.h)

この IOCTL を受信すると、クライアント ドライバーはボリュームの (非永続) デバイス (またはターゲット) 名を指定する必要があります。 マウント マネージャーは、クライアントからシンボリック リンクのターゲットとして返 デバイス名を使用します。 デバイス名の例として、"\Device\HarddiskVolume1" があります。

マウント マネージャー クライアントによるこの IOCTL のサポートは必須です。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

何一つ。

入力バッファーの長さ

何一つ。

出力バッファー

マウント マネージャー クライアントは、バッファーの先頭にある MOUNTDEV_NAME 型の可変長構造体 Irp->AssociatedIrp.SystemBufferを返します。 デバイス名は、この構造体の Name メンバーが指すアドレスに挿入する必要があります。

出力バッファーの長さ

IRP の I/O スタック位置の Parameters.DeviceIoControl.OutputBufferLength は、出力バッファーのサイズ (バイト単位) を示します。これは、sizeof(MOUNTDEV_NAME)以上である必要があります。

状態ブロック

Information フィールドは、FIELD_OFFSET(MOUNTDEV_NAME, Name) + output->NameLength に設定するか、または出力 ->NameLength + sizeof(USHORT) に設定されます。出力は、Irp->AssociatedIrp.SystemBuffer のバッファーポイントします。

操作が成功した場合、マウント・マネージャー・クライアントは、情報 フィールドを、装置名を含む NULL で終わるストリングの長さに設定し、状況 フィールドをSTATUS_SUCCESSに設定する必要があります。

出力バッファーが小さすぎてデバイス名を保持するには、マウント・マネージャー・クライアントは 情報 フィールドを sizeof(MOUNTDEV_NAME) に設定し、状況 フィールドをSTATUS_BUFFER_OVERFLOWする必要があります。 さらに、マウント マネージャー クライアントは、MOUNTDEV_NAME 構造体の NameLength メンバーを入力します。

備考

ベスト プラクティスとして、実装者はスレッド同期を行ってはならないし、ブロックやプロセス間通信 (IPC) 関数呼び出しを行ってはなりません。

詳細については、「記憶域クラス ドライバー でのマウント マネージャー要求のサポート」を参照してください。

必要条件

要件 価値
ヘッダー mountmgr.h (Mountmgr.h を含む)

関連項目

MOUNTDEV_NAME