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


Метод 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

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

[out] Buffer

Выделенный приложением буфер данных, который будет получать данные, связанные с командой отправки. Не должно иметь значение NULL.

[in] BufferSize

Размер буфера данных буфера в байтах. Не должно быть равно нулю.

[out] BufferFetched

Размер данных, возвращаемых в буфере данных буфера , в байтах.

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

S_OK или одно из следующих значений можно вернуть при успешном выполнении, но в результате реализации могут быть возвращены другие коды успешного выполнения:

Код возврата Описание
S_IMAPI_COMMAND_HAS_SENSE_DATA
Устройство не выполняет команду, но возвращает данные о смысле.
 

Следующие коды ошибок обычно возвращаются при сбое операции, но не представляют единственные возможные значения ошибок:

Код возврата Описание
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::SendCommandNoData

IDiscRecorder2Ex::SendCommandSendDataToDevice