Метод 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
Ограничение времени (в секундах) для получения результата командой отправки.
[in] Buffer
Буфер, содержащий данные, связанные с командой отправки. Не должно иметь значение NULL.
[in] BufferSize
Размер буфера данных для отправки (в байтах). Не должно быть равно нулю.
Возвращаемое значение
S_OK или одно из следующих значений можно вернуть при успешном выполнении, но в результате реализации могут быть возвращены другие коды успешного выполнения:
Код возврата | Описание |
---|---|
|
Устройство не выполняет команду, но возвращает данные о смысле.
Значение: 0x00AA0200 |
Следующие коды ошибок обычно возвращаются при сбое операции, но не представляют единственные возможные значения ошибок:
Код возврата | Описание |
---|---|
|
Недопустимый указатель.
Значение: 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 |
Комментарии
Сведения о содержимом пакета команд, данных контроля и буфера входных данных см. в последней редакции спецификации MMC по адресу ftp://ftp.t10.org/t10/drafts/mmc5.
Длина определяемых клиентом команд (CDB), используемых с этим методом, должна составлять от 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 с пакетом обновления 2 (SP2) [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | imapi2.h |