Поделиться через


Метод IDiscRecorder2Ex::SendCommandNoData (imapi2.h)

Отправляет команду MMC на устройство записи. Используйте эту функцию, если буфер данных не отправляется на устройство и не получается с устройства.

Синтаксис

HRESULT SendCommandNoData(
  [in]  BYTE      *Cdb,
  [in]  ULONG     CdbSize,
  [out] BYTE [18] SenseBuffer,
  [in]  ULONG     Timeout
);

Параметры

[in] Cdb

Пакет команд для отправки на устройство.

[in] CdbSize

Размер отправляемого пакета команд (в байтах). Должно быть от 6 до 16 байт.

[out] SenseBuffer

Данные контроля, возвращаемые устройством записи.

[in] Timeout

Ограничение времени (в секундах) для получения результата командой отправки.

Возвращаемое значение

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

Комментарии

Дополнительные сведения о содержимом пакета команд и данных контроля см. в последней редакции спецификации 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

См. также раздел

IDiscRecorder2Ex

IDiscRecorder2Ex::SendCommandGetDataFromDevice

IDiscRecorder2Ex::SendCommandSendDataToDevice