IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL (mountmgr.h)

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

メジャー コード

IRP_MJ_DEVICE_CONTROL

出力バッファー

マウント マネージャー クライアントは、Irp-AssociatedIrp.SystemBuffer> のバッファーの先頭にある Mountmgr.h で定義されている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する必要があります。

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

注釈

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

要件

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

こちらもご覧ください

MOUNTDEV_NAME