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.SystemBuffer>的緩衝區中傳回CDROM_EXCLUSIVE_LOCK_STATE類型結構,其 LockState 成員指出裝置的存取狀態。
輸出緩衝區長度
I/O 堆棧位置中的 Parameters.DeviceIoControl.OutputBufferLength 成員 (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 類別驅動程式會傳回此狀態代碼:
- 呼叫端在 IRQL 層級提出要求,而不是PASSIVE_LEVEL。
- 呼叫端使用 RequestType = ExclusiveAccessUnlockDevice 傳送要求,以解除鎖定不在獨佔模式的裝置。
STATUS_INVALID_DEVICE_STATE (Windows 錯誤碼:ERROR_BAD_COMMAND)
呼叫端嘗試在此裝置上掛接檔系統驅動程式時鎖定裝置,但未指定類別驅動程式應該暫停檢查掛接的文件系統驅動程式。 若要暫停掛接文件系統驅動程式的檢查,呼叫端必須將 CDROM_EXCLUSIVE_ACCESS的 Flags 成員設定為 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的有效成員。
- CDROM_EXCLUSIVE_LOCKCallerName 成員中的呼叫端名稱字串違反命名慣例。 CallerName 必須是包含下列字元的 NULL 終止字串:英數位元 (A - Z、a - z、0 - 9) 、空格、句點、逗號、冒號 (:) 、分號 (;) 、連字元 (-) 和底線 (_) 。 字串的長度必須小於CDROM_EXCLUSIVE_CALLER_LENGTH個字節,包括字串結尾的 NULL 。
規格需求
需求 | 值 |
---|---|
標頭 | ntddcdrm.h (包含 Ntddcdrm.h) |