IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL (mountmgr.h)

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

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

メジャー コード

IRP_MJ_DEVICE_CONTROL

[入力バッファー]

[なし] :

入力バッファーの長さ

[なし] :

出力バッファー

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

出力バッファーの長さ

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

ステータス ブロック

[情報] フィールドは、FIELD_OFFSET(MOUNTDEV_NAME、Name) + output-NameLength>、または output-NameLength> + sizeof(USHORT) に設定され、出力は Irp-AssociatedIrp.SystemBuffer> のバッファーを指します。

操作が成功した場合、マウント マネージャー クライアントは 、デバイス 名を含む NULL で終わる文字列の長さに Information フィールドを設定し、 Status フィールドをSTATUS_SUCCESSする必要があります。

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

注釈

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

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

要件

要件
Header mountmgr.h (Mountmgr.h を含む)

こちらもご覧ください

MOUNTDEV_NAME