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 クラス ドライバーは、デバイスのアクセス状態を示す LockState メンバーを持つ Irp-AssociatedIrp.SystemBuffer>のバッファー内のCDROM_EXCLUSIVE_LOCK_STATE型構造体を返します。
出力バッファーの長さ
I/O スタックの場所 (IO_STACK_LOCATION) の Parameters.DeviceIoControl.OutputBufferLength メンバーは、出力バッファーのサイズをバイト単位で示します。
ステータス ブロック
[情報] フィールドは、返されるバイト数に設定されます。 要求が成功した場合、 Status フィールドは STATUS_SUCCESS に設定されます。
要求が失敗した場合、 Status フィールドは次のいずれかのエラー メッセージに設定される可能性があります。
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 クラス ドライバーは、次の 2 つのエラーのいずれかが発生すると、この状態コードを返します。
- 呼び出し元は、PASSIVE_LEVEL以外の IRQL レベルで要求を行いました。
- 呼び出し元は、排他モードではないデバイスのロックを解除するために、 RequestType = ExclusiveAccessUnlockDevice で要求を送信しました。
STATUS_INVALID_DEVICE_STATE (Windows エラー コード: ERROR_BAD_COMMAND)
呼び出し元は、クラス ドライバーがマウントされたファイル システム ドライバーのチェックを中断する必要があることを指定せずに、ファイル システム ドライバーがこのデバイスにマウントされている間にデバイスをロックしようとしました。 マウントされたファイル システム ドライバーのチェックを中断するには、呼び出し元が CDROM_EXCLUSIVE_ACCESS の Flags メンバーを 1 に設定する必要があります。
STATUS_INVALID_HANDLE (Windows エラー コード: ERROR_INVALID_HANDLE)
CD-ROM クラス ドライバーは、次の 2 つのエラーのいずれかが発生すると、この状態コードを返します。
- 要求を追跡するために必要なファイル オブジェクトを使用できませんでした。 CD-ROM クラス ドライバーは、この呼び出し元からファイル オブジェクトを作成する要求を受信しませんでした。
- 呼び出し元は、呼び出し元がデバイスへの排他アクセス権を持っていない場合でも、デバイスのロックを解除するために RequestType = ExclusiveAccessUnlockDevice を使用して要求を送信しました。
STATUS_INVALID_PARAMETER (Windows エラー コード: ERROR_INVALID_PARAMETER)
CD-ROM クラス ドライバーは、次の 2 つのエラーのいずれかが発生すると、この状態コードを返します。
- 指定された RequestType は、 EXCLUSIVE_ACCESS_REQUEST_TYPEの有効なメンバーではありません。
- CDROM_EXCLUSIVE_LOCK の CallerName メンバーの呼び出し元名文字列が、名前付け規則に違反しています。 CallerName は 、英数字 (A - Z、a - z、0 - 9)、スペース、ピリオド、コンマ、コロン (:)、セミコロン (;)、ハイフン (-)、アンダースコア (_)) を含む NULL で終わる文字列である必要があります。 文字列の長さは、文字列の末尾にある NULL を含め、CDROM_EXCLUSIVE_CALLER_LENGTH バイト未満である必要があります。
要件
要件 | 値 |
---|---|
Header | ntddcdrm.h (Ntddcdrm.h を含む) |