IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL (mountmgr.h)
この IOCTL を受信すると、クライアント ドライバーはボリュームの (非永続) デバイス (またはターゲット) 名を指定する必要があります。 マウント マネージャーは、クライアントから返された デバイス名 をシンボリック リンクのターゲットとして使用します。 デバイス名の例として、"\Device\HarddiskVolume1" があります。
マウント マネージャー クライアントによるこの IOCTL のサポートは必須です。
メジャー コード
[入力バッファー]
[なし] :
入力バッファーの長さ
[なし] :
出力バッファー
マウント マネージャー クライアントは、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 を含む) |