IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL (mountmgr.h)
マウント マネージャー クライアントによるこの IOCTL のサポートは必須です。 この IOCTL を受信すると、クライアント ドライバーはボリュームの (非永続) デバイス (またはターゲット) 名を指定する必要があります。 マウント マネージャーは、クライアントから返された デバイス名 をシンボリック リンクのターゲットとして使用します。 デバイス名の例として、"\Device\HarddiskVolume1" があります。
メジャー コード
出力バッファー
マウント マネージャー クライアントは、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 を含む) |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示