IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)
鎖定裝置以防止移除媒體。 如果驅動程式可在磁碟驅動器使用時防止移除媒體,驅動程式會停用或啟用退出媒體的機制,藉此鎖定磁碟驅動器。 呼叫端必須開啟具有FILE_READ_ATTRIBUTES的裝置,才能傳送此要求。
與 IOCTL_STORAGE_MEDIA_REMOVAL不同,驅動程式會追蹤呼叫端的 IOCTL_STORAGE_EJECTION_CONTROL 要求,並忽略未收到來自相同呼叫端之鎖定要求的解除鎖定要求,進而防止其他呼叫端解除鎖定磁碟驅動器。
卸載式媒體裝置的驅動程式 - 可以支援此 IOCTL 必須執行下列動作:
- 在裝置物件延伸模組中,保留由呼叫端標記的鎖定計數。
- 保留每個實體裝置的鎖定計數。
- 使用此 IOCTL 呼叫時,如果已設定防止移除媒體的旗標,則遞增計數;如果旗標已清除,且驅動程式先前已收到來自相同呼叫端的鎖定要求,請遞減計數。
- 除非所有鎖定計數都是零,否則防止移除媒體。
為了確保正確釋放媒體移除鎖定,類別驅動程式會追蹤使用 IOCTL_STORAGE_EJECTION_CONTROL 鎖定媒體的來電者。 如果呼叫端在未解除鎖定裝置的情況下終止,類別驅動程式就會解除鎖定裝置。
主要程序代碼
輸入緩衝區
Irp->AssociatedIrp.SystemBuffer 的緩衝區包含布爾值,TRUE 表示驅動程式應該鎖定磁碟驅動器中的媒體。
輸入緩衝區長度
布爾值的長度。
輸出緩衝區
沒有。
輸出緩衝區長度
沒有。
狀態區塊
[資訊 ] 字段 設定為零。 [狀態] 字段會設定為 [STATUS_SUCCESS],或可能設定為 [STATUS_INVALID_DEVICE_REQUEST]、[STATUS_NO_MEDIA_IN_DEVICE] 或 [STATUS_DEVICE_NOT_CONNECTED]。
要求
要求 | 價值 |
---|---|
標頭 | ntddstor.h (include Ntddstor.h) |