IOCTL_CDROM_EXCLUSIVE_ACCESS IOCTL (ntddcdrm.h)
IOCTL_CDROM_EXCLUSIVE_ACCESS要求會指示 CD-ROM 類別驅動程式:
- 報告 CD-ROM 裝置的存取狀態。
- 鎖定 CD-ROM 裝置以進行獨佔存取。
- 解除鎖定 CD-ROM 裝置以進行獨佔存取。
主要程序代碼
輸入緩衝區
根據呼叫端要求的作業,呼叫端必須提供下列其中一個結構作為輸入,Irp->AssociatedIrp.SystemBuffer:
-
CDROM_EXCLUSIVE_ACCESS (報告 CD-ROM 裝置的存取狀態)
-
CDROM_EXCLUSIVE_LOCK (鎖定 CD-ROM 裝置進行獨佔存取)
-
CDROM_EXCLUSIVE_ACCESS (若要解除鎖定應用程式鎖定的獨存取 CD-ROM 裝置)
輸入緩衝區長度
IO_STACK_LOCATION 結構中的 Parameters.DeviceIoControl.InputBufferLength 成員會指出使用者配置輸入緩衝區的大小,以位元組為單位。
輸出緩衝區
如果呼叫端要求 CD-ROM 裝置的獨佔存取狀態(RequestType = ExclusiveAccessQueryState),則 CD-ROM 類別驅動程式會在 Irp->AssociatedIrp.SystemBuff er 的緩衝區中傳回 CDROM_EXCLUSIVE_LOCK_STATE類型結構,LockState 成員表示裝置的存取狀態。
輸出緩衝區長度
Parameters.DeviceIoControl.OutputBufferLength I/O 堆棧位置的成員 (IO_STACK_LOCATION) 會指出輸出緩衝區的大小,以位元組為單位。
狀態區塊
[資訊] 字段會設定為傳回的位元元組數目。 如果要求成功,[狀態] 字段會設定為 [STATUS_SUCCESS]。
如果要求失敗,狀態 欄位可能會設定為下列其中一個錯誤訊息:
STATUS_ACCESS_DENIED (Windows 錯誤碼:ERROR_ACCESS_DENIED)
裝置已鎖定供獨佔存取。
STATUS_BUFFER_TOO_SMALL (Windows 錯誤碼:ERROR_INSUFFICIENT_BUFFER)
輸出緩衝區對於 ExclusiveAccessQueryState 要求而言太小。
STATUS_INFO_LENGTH_MISMATCH (Windows 錯誤碼:ERROR_BAD_LENGTH)
輸入緩衝區太小。
STATUS_INVALID_DEVICE_REQUEST (Windows 錯誤碼:ERROR_INVALID_FUNCTION)
當發生下列兩個錯誤的其中一個時,CD-ROM 類別驅動程式會傳回此狀態代碼:
- 呼叫端在 PASSIVE_LEVEL 以外的 IRQL 層級提出要求。
- 呼叫端傳送要求時,RequestType = ExclusiveAccessUnlockDevice 解除鎖定非獨佔模式的裝置。
STATUS_INVALID_DEVICE_STATE (Windows 錯誤碼:ERROR_BAD_COMMAND)
呼叫端嘗試在此裝置上掛接檔系統驅動程式時鎖定裝置,但未指定類別驅動程式應該暫停掛接檔系統驅動程序的檢查。 若要暫停掛接文件系統驅動程式的檢查,呼叫端必須將 旗標 成員 CDROM_EXCLUSIVE_ACCESS 設定為 1。
STATUS_INVALID_HANDLE (Windows 錯誤碼:ERROR_INVALID_HANDLE)
當發生下列兩個錯誤的其中一個時,CD-ROM 類別驅動程式會傳回此狀態代碼:
- 無法追蹤要求所需的檔案物件。 CD-ROM 類別驅動程式未收到從這個呼叫端建立檔案物件的要求。
- 呼叫端傳送要求時,RequestType = ExclusiveAccessUnlockDevice 解除鎖定裝置,即使呼叫端沒有裝置的獨佔存取權。
STATUS_INVALID_PARAMETER (Windows 錯誤碼:ERROR_INVALID_PARAMETER)
當發生下列兩個錯誤的其中一個時,CD-ROM 類別驅動程式會傳回此狀態代碼:
- 指定的 RequestType 不是 EXCLUSIVE_ACCESS_REQUEST_TYPE的有效成員。
- CallerName 中的呼叫端名稱字串 成員 CDROM_EXCLUSIVE_LOCK 違反命名慣例。 CallerName 必須是包含下列字元的 NULL字串:英數位元(A - Z、a - z、0 - 9)、空格、句點、逗號、冒號 (:)、分號 (;)、連字元 (-) 和底線 (_)。 字串的長度必須小於 CDROM_EXCLUSIVE_CALLER_LENGTH 個字節,包括字串結尾的 NULL。
要求
要求 | 價值 |
---|---|
標頭 | ntddcdrm.h (包括 Ntddcdrm.h) |