次の方法で共有


IDiscRecorder2Ex::SendCommandSendDataToDevice メソッド (imapi2.h)

MMC コマンドとそれに関連付けられているデータ バッファーを記録デバイスに送信します。

構文

HRESULT SendCommandSendDataToDevice(
  [in]  BYTE                 *Cdb,
  [in]  ULONG                CdbSize,
  [out] BYTE [18]            SenseBuffer,
  [in]  ULONG                Timeout,
  [in]  BYTE                 *Buffer,
  [in]  ULONG_IMAPI2_NONZERO BufferSize
);

パラメーター

[in] Cdb

デバイスに送信するコマンド パケット。

[in] CdbSize

送信するコマンド パケットのサイズ (バイト単位)。 6 ~ 16 バイトにする必要があります。

[out] SenseBuffer

記録デバイスによって返されるデータを検出します。

[in] Timeout

send コマンドが結果を受信できる時間制限 (秒単位)。

[in] Buffer

send コマンドに関連付けられているデータを含むバッファー。 NULL にすることはできません。

[in] BufferSize

送信するデータ バッファーのサイズ (バイト単位)。 0 にすることはできません。

戻り値

S_OKまたは次のいずれかの値を成功時に返すことができますが、実装の結果として他の成功コードが返される場合があります。

リターン コード 説明
S_IMAPI_COMMAND_HAS_SENSE_DATA
デバイスはコマンドに失敗しますが、センス データを返します。

値: 0x00AA0200

 

次のエラー コードは、通常、操作の失敗時に返されますが、考えられる唯一のエラー値を表すわけではありません。

リターン コード 説明
E_POINTER
ポインターが無効です。

値: 0x80004003

E_FAIL
不特定のエラー。

値: 0x80004005

E_IMAPI_RECORDER_GET_CONFIGURATION_NOT_SUPPORTED
ドライブは GET CONFIGURATION コマンドをサポートしていません。

値: 0xC0AA020C

E_IMAPI_RECORDER_NO_SUCH_FEATURE
要求された機能ページは、デバイスではサポートされていません。

値: 0xC0AA020A

E_OUTOFMEMORY
必要なメモリを割り当てませんでした。

値: 0x8007000E

E_IMAPI_RECORDER_FEATURE_IS_NOT_CURRENT
要求された機能ページはサポートされていますが、現在の機能としてマークされていません。

値: 0xC0AA020B

E_IMAPI_RECORDER_COMMAND_TIMEOUT
デバイスは、タイムアウト期間内にコマンドを受け入れませんでした。 これは、デバイスが不整合な状態になったか、コマンドのタイムアウト値を増やす必要がある場合があります。

値: 0xC0AA020D

E_IMAPI_RECORDER_INVALID_RESPONSE_FROM_DEVICE
デバイスは、コマンドの予期しないデータまたは無効なデータを報告しました。

値: 0xC0AA02FF

E_IMAPI_RECORDER_MEDIA_UPSIDE_DOWN
メディアは上下逆に挿入されます。

値: 0xC0AA0204

E_IMAPI_RECORDER_MEDIA_BECOMING_READY
ドライブから、準備中であることが報告されました。 後でもう一度要求を試してください。

値: 0xC0AA0205

E_IMAPI_RECORDER_MEDIA_NO_MEDIA
デバイスにメディアがありません。

値: 0xC0AA0202

E_IMAPI_RECORDER_MEDIA_FORMAT_IN_PROGRESS
メディアは現在書式設定されています。 メディアの使用を試みる前に、フォーマットが完了するまで待ってください。

値: 0xC0AA0206

E_IMAPI_RECORDER_MEDIA_BUSY
ドライブから、書き込みの完了など、実行時間の長い操作が実行されていることが報告されました。 ドライブが長期間使用できない場合があります。

値: 0xC0AA0207

E_IMAPI_LOSS_OF_STREAMING
ドライブが書き込みを続行するのに十分な速さでデータを受信できなかったため、書き込みに失敗しました。 ソース データをローカル コンピューターに移動したり、書き込み速度を低下させたり、"バッファー アンダーラン フリー" 設定を有効にしたりすると、この問題が解決する可能性があります。

値: 0xC0AA0300

E_IMAPI_RECORDER_MEDIA_INCOMPATIBLE
メディアに互換性がない、または物理形式が不明です。

値: 0xC0AA0203

E_IMAPI_RECORDER_DVD_STRUCTURE_NOT_PRESENT
DVD 構造が存在しません。 これは、互換性のないドライブ/メディアが使用されている場合に発生する可能性があります。

値: 0xC0AA020E

E_IMAPI_RECORDER_NO_SUCH_MODE_PAGE
デバイスから、要求されたモード ページ (および種類) が存在しないことが報告されました。

値: 0xC0AA0201

E_IMAPI_RECORDER_INVALID_MODE_PARAMETERS
ドライブは、MODE SELECT コマンドのモード ページで指定されたパラメーターの組み合わせがサポートされていないことを報告しました。

値: 0xC0AA0208

E_IMAPI_RECORDER_MEDIA_WRITE_PROTECTED
ドライブは、メディアが書き込み保護されていることを報告しました。

値: 0xC0AA0209

E_IMAPI_RECORDER_MEDIA_SPEED_MISMATCH
メディアの速度はデバイスと互換性がありません。 これは、デバイスでサポートされている速度の範囲よりも高いまたは低い速度メディアを使用することによって発生する可能性があります。

値: 0xC0AA020F

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
指定されたハンドルが無効です。

値: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
指定したネットワーク リソースまたはデバイスが使用できなくなりました。

値: 55

E_IMAPI_RECORDER_LOCKED
前回の操作中にこのレコーダーに関連付けられているデバイスが排他的にロックされているため、この操作は失敗しました。

値: 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、SP2 を使用した Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー imapi2.h

こちらもご覧ください

IDiscRecorder2Ex

IDiscRecorder2Ex::SendCommandGetDataFromDevice

IDiscRecorder2Ex::SendCommandNoData