IDiscRecorder2Ex::SendCommandGetDataFromDevice メソッド (imapi2.h)
デバイスからデータを要求する MMC コマンドを記録デバイスに送信します。
構文
HRESULT SendCommandGetDataFromDevice(
[in] BYTE *Cdb,
[in] ULONG CdbSize,
[out] BYTE [18] SenseBuffer,
[in] ULONG Timeout,
[out] BYTE *Buffer,
[in] ULONG_IMAPI2_NONZERO BufferSize,
[out] ULONG_IMAPI2_NOT_NEGATIVE *BufferFetched
);
パラメーター
[in] Cdb
デバイスに送信するコマンド パケット。
[in] CdbSize
送信するコマンド パケットのサイズ (バイト単位)。 6 ~ 16 バイトにする必要があります。
[out] SenseBuffer
記録デバイスによって返されるデータを検出します。
[in] Timeout
send コマンドが結果を受信できる時間制限 (秒単位)。
[out] Buffer
send コマンドに関連付けられたデータを受信するアプリケーション割り当てデータ バッファー。 NULL にすることはできません。
[in] BufferSize
バッファー データ バッファーのサイズ (バイト単位)。 0 にすることはできません。
[out] BufferFetched
バッファー データ バッファーで返されるデータのサイズ (バイト単位)。
戻り値
S_OKまたは次のいずれかの値を成功時に返すことができますが、実装の結果として他の成功コードが返される場合があります。
リターン コード | 説明 |
---|---|
|
デバイスはコマンドに失敗しますが、センス データを返します。 |
次のエラー コードは、通常、操作の失敗時に返されますが、考えられる唯一のエラー値を表すわけではありません。
リターン コード | 説明 |
---|---|
|
ポインターが無効です。
値: 0x80004003 |
|
不特定のエラー。
値: 0x80004005 |
|
ドライブは GET CONFIGURATION コマンドをサポートしていません。
値: 0xC0AA020C |
|
要求された機能ページは、デバイスではサポートされていません。
値: 0xC0AA020A |
|
必要なメモリを割り当てませんでした。
値: 0x8007000E |
|
要求された機能ページはサポートされていますが、現在の機能としてマークされていません。
値: 0xC0AA020B |
|
デバイスは、タイムアウト期間内にコマンドを受け入れませんでした。 これは、デバイスが不整合な状態になったか、コマンドのタイムアウト値を増やす必要がある場合があります。
値: 0xC0AA020D |
|
デバイスは、コマンドの予期しないデータまたは無効なデータを報告しました。
値: 0xC0AA02FF |
|
メディアは上下逆に挿入されます。
値: 0xC0AA0204 |
|
ドライブから、準備中であることが報告されました。 後でもう一度要求を試してください。
値: 0xC0AA0205 |
|
デバイスにメディアがありません。
値: 0xC0AA0202 |
|
メディアは現在書式設定されています。 メディアの使用を試みる前に、フォーマットが完了するまで待ってください。
値: 0xC0AA0206 |
|
ドライブから、書き込みの完了など、実行時間の長い操作が実行されていることが報告されました。 ドライブが長期間使用できない場合があります。
値: 0xC0AA0207 |
|
ドライブが書き込みを続行するのに十分な速さでデータを受信できなかったため、書き込みに失敗しました。 ソース データをローカル コンピューターに移動したり、書き込み速度を低下させたり、"バッファー アンダーラン フリー" 設定を有効にしたりすると、この問題が解決する可能性があります。
値: 0xC0AA0300 |
|
メディアに互換性がない、または物理形式が不明です。
値: 0xC0AA0203 |
|
DVD 構造が存在しません。 これは、互換性のないドライブ/メディアが使用されている場合に発生する可能性があります。
値: 0xC0AA020E |
|
デバイスから、要求されたモード ページ (および種類) が存在しないことが報告されました。
値: 0xC0AA0201 |
|
ドライブは、MODE SELECT コマンドのモード ページで指定されたパラメーターの組み合わせがサポートされていないことを報告しました。
値: 0xC0AA0208 |
|
ドライブは、メディアが書き込み保護されていることを報告しました。
値: 0xC0AA0209 |
|
メディアの速度はデバイスと互換性がありません。 これは、デバイスでサポートされている速度の範囲よりも高いまたは低い速度メディアを使用することによって発生する可能性があります。
値: 0xC0AA020F |
|
指定されたハンドルが無効です。
値: 6 |
|
指定したネットワーク リソースまたはデバイスが使用できなくなりました。
値: 55 |
|
最後の操作中にこのレコーダーに関連付けられているデバイスが排他的にロックされているため、この操作は失敗します。
値: 0xC0AA0210 |
注釈
コマンド パケット、センス データ、出力データ バッファーの内容の詳細については、 ftp://ftp.t10.org/t10/drafts/mmc5 の MMC 仕様の最新のリビジョンを参照してください。
このメソッドで使用されるクライアント定義コマンド (CDN) の長さは 6 バイトから 16 バイトである必要があります。 さらに、各コマンドのサイズは、次の表で定義されている操作コードで定義されているサイズと一致する必要があります。
CDB 操作コード範囲 | CDB グループ | 必要な CDB サイズ |
---|---|---|
0x00 — 0x1F | 0 | 6 バイト |
0x20 — 0x3F | 1 | 10 バイト |
0x40 — 0x5F | 2 | 10 バイト |
0x60 — 0x7F | 3 | 今後、このオペコード範囲に標準指定のサイズ要件を適用します。 |
0x80 — 0x9F | 4 | 16 バイト |
0xA0 — 0xBF | 5 | 12 バイト |
0xC0 — 0xDF | 6 | ベンダー固有 - 許可されている任意のサイズ |
0xE0 — 0xFF | 7 | ベンダー固有 - 許可されている任意のサイズ |
一部の非常に初期のデバイスではベンダー固有のオペコードが使用されているため、一部のオペコードはこの方法では検証できません。 次のオペコードは引き続き有効であり、サイズが 6 ~ 16 バイトであることを確認するだけです。
0x02、0x05、0x06、0x09、0x0C、0x0D、0x0E、0x0F、0x10、0x13 0x14、0x19、0x20、0x21、0x22、0x23、0x24、0x26、0x27、0x29、0x2C、0x2D
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista、WINDOWS XP と SP2 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | imapi2.h |