IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL (mountmgr.h)
收到此 IOCTL 之後,用戶端驅動程式必須提供磁碟區的裝置(或目標)名稱。 掛接管理員會使用用戶端傳回 裝置名稱 做為符號鏈接的目標。 裝置名稱的範例為 “\Device\HarddiskVolume1”。
掛接管理員客戶端必須支援此 IOCTL。
主要程序代碼
輸入緩衝區
沒有。
輸入緩衝區長度
沒有。
輸出緩衝區
掛接管理員用戶端會傳回緩衝區開頭 Irp->AssociatedIrp.SystemBuffer之類型 MOUNTDEV_NAME 的可變長度結構。 裝置名稱必須插入這個結構 Name 成員所指向的位址。
輸出緩衝區長度
Parameters.DeviceIoControl.OutputBufferLength 在 IRP 的 I/O 堆棧位置,表示輸出緩衝區的大小,以位元組為單位,輸出緩衝區的大小必須大於或等於 sizeof(MOUNTDEV_NAME)
。
狀態區塊
[資訊] 字段會設定為 FIELD_OFFSET(MOUNTDEV_NAME、Name) + output->NameLength,或者,output->NameLength + sizeof(USHORT),其中輸出會指向 Irp->AssociatedIrp.SystemBuffer的緩衝區。
如果作業成功,掛接管理員客戶端必須將 [資訊] 字段設定為包含裝置名稱的 NULL 終止字元串長度,並將 [狀態] 欄位設定為STATUS_SUCCESS。
如果輸出緩衝區太小而無法保存裝置名稱,掛接管理員客戶端必須將 [資訊] 字段設定為 [sizeof(MOUNTDEV_NAME)
],並將 [狀態] 字段設定為 [STATUS_BUFFER_OVERFLOW]。 此外,掛接管理員用戶端會填入 MOUNTDEV_NAME 結構的 NameLength 成員。
言論
最佳做法是,實作者不得進行線程同步處理,而且不得進行封鎖和/或進程間通訊 (IPC) 函式呼叫。
如需詳細資訊,請參閱 在記憶體類別驅動程式中支援掛接管理員要求。
要求
要求 | 價值 |
---|---|
標頭 | mountmgr.h (包括 Mountmgr.h) |