Compartilhar via


Método IDiscRecorder2Ex::SendCommandGetDataFromDevice (imapi2.h)

Envia um comando MMC para o dispositivo de gravação que solicita dados do dispositivo.

Sintaxe

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
);

Parâmetros

[in] Cdb

Pacote de comando a ser enviado para o dispositivo.

[in] CdbSize

Tamanho, em bytes, do pacote de comando a ser enviado. Deve estar entre 6 e 16 bytes.

[out] SenseBuffer

Detectar dados retornados pelo dispositivo de gravação.

[in] Timeout

O limite de tempo, em segundos, permitiu que o comando send recebesse um resultado.

[out] Buffer

Buffer de dados alocado pelo aplicativo que receberá dados associados ao comando send. Não deve ser NULL.

[in] BufferSize

Tamanho, em bytes , do buffer de dados do buffer. Não deve ser zero.

[out] BufferFetched

Tamanho, em bytes, dos dados retornados no buffer de dados do buffer.

Retornar valor

S_OK ou um dos seguintes valores pode ser retornado com êxito, mas outros códigos de êxito podem ser retornados como resultado da implementação:

Código de retorno Descrição
S_IMAPI_COMMAND_HAS_SENSE_DATA
O dispositivo falha no comando, mas retorna dados de sensor.
 

Os seguintes códigos de erro normalmente são retornados em caso de falha na operação, mas não representam os únicos valores de erro possíveis:

Código de retorno Descrição
E_POINTER
O ponteiro não é válido.

Valor: 0x80004003

E_FAIL
Falha não especificada.

Valor: 0x80004005

E_IMAPI_RECORDER_GET_CONFIGURATION_NOT_SUPPORTED
A unidade não dá suporte ao comando GET CONFIGURATION.

Valor: 0xC0AA020C

E_IMAPI_RECORDER_NO_SUCH_FEATURE
Não há suporte para a página de recursos solicitada pelo dispositivo.

Valor: 0xC0AA020A

E_OUTOFMEMORY
Falha ao alocar a memória necessária.

Valor: 0x8007000E

E_IMAPI_RECORDER_FEATURE_IS_NOT_CURRENT
A página de recursos solicitada tem suporte, mas não está marcada como atual.

Valor: 0xC0AA020B

E_IMAPI_RECORDER_COMMAND_TIMEOUT
O dispositivo não aceitou o comando dentro do período de tempo limite. Isso pode ser causado pelo dispositivo ter inserido um estado inconsistente ou o valor de tempo limite para o comando pode precisar ser aumentado.

Valor: 0xC0AA020D

E_IMAPI_RECORDER_INVALID_RESPONSE_FROM_DEVICE
O dispositivo relatou dados inesperados ou inválidos para um comando.

Valor: 0xC0AA02FF

E_IMAPI_RECORDER_MEDIA_UPSIDE_DOWN
A mídia é inserida de cabeça para baixo.

Valor: 0xC0AA0204

E_IMAPI_RECORDER_MEDIA_BECOMING_READY
A unidade informou que está em processo de preparação. Tente a solicitação novamente mais tarde.

Valor: 0xC0AA0205

E_IMAPI_RECORDER_MEDIA_NO_MEDIA
Não há mídia no dispositivo.

Valor: 0xC0AA0202

E_IMAPI_RECORDER_MEDIA_FORMAT_IN_PROGRESS
A mídia está sendo formatada no momento. Aguarde a conclusão do formato antes de tentar usar a mídia.

Valor: 0xC0AA0206

E_IMAPI_RECORDER_MEDIA_BUSY
A unidade informou que está executando uma operação de longa execução, como terminar uma gravação. A unidade pode ser inutilizável por um longo período de tempo.

Valor: 0xC0AA0207

E_IMAPI_LOSS_OF_STREAMING
A gravação falhou porque a unidade não recebeu dados rapidamente o suficiente para continuar gravando. Mover os dados de origem para o computador local, reduzir a velocidade de gravação ou habilitar uma configuração de "buffer sem execução livre" pode resolve esse problema.

Valor: 0xC0AA0300

E_IMAPI_RECORDER_MEDIA_INCOMPATIBLE
A mídia não é compatível ou de formato físico desconhecido.

Valor: 0xC0AA0203

E_IMAPI_RECORDER_DVD_STRUCTURE_NOT_PRESENT
A estrutura do DVD não está presente. Isso pode ser causado por uma unidade/mídia incompatível usada.

Valor: 0xC0AA020E

E_IMAPI_RECORDER_NO_SUCH_MODE_PAGE
O dispositivo informou que a página do modo solicitado (e o tipo) não está presente.

Valor: 0xC0AA0201

E_IMAPI_RECORDER_INVALID_MODE_PARAMETERS
A unidade informou que não havia suporte para a combinação de parâmetros fornecidos na página de modo para um comando MODE SELECT.

Valor: 0xC0AA0208

E_IMAPI_RECORDER_MEDIA_WRITE_PROTECTED
A unidade informou que a mídia está protegida por gravação.

Valor: 0xC0AA0209

E_IMAPI_RECORDER_MEDIA_SPEED_MISMATCH
A velocidade da mídia é incompatível com o dispositivo. Isso pode ser causado pelo uso de mídia de velocidade maior ou menor do que o intervalo de velocidades com suporte pelo dispositivo.

Valor: 0xC0AA020F

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
O identificador especificado é inválido.

Valor: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
O recurso de rede ou dispositivo especificado não está mais disponível.

Valor: 55

E_IMAPI_RECORDER_LOCKED
O dispositivo associado a esse gravador durante a última operação foi bloqueado exclusivamente, fazendo com que essa operação falhasse.

Valor: 0xC0AA0210

Comentários

Para obter detalhes do conteúdo do pacote de comando, dos dados de sensor e do buffer de dados de saída, consulte a revisão mais recente da especificação do MMC em ftp://ftp.t10.org/t10/drafts/mmc5.

Os CDBs (comandos definidos pelo cliente) usados com esse método devem ter entre 6 e 16 bytes de comprimento. Além disso, o tamanho de cada comando deve corresponder ao tamanho definido pelo código de operação, conforme definido na tabela a seguir.

Intervalo de código de operação cdb Grupo CDB Tamanho do CDB necessário
0x00 — 0x1F 0 6 bytes
0x20 — 0x3F 1 10 bytes
0x40 — 0x5F 2 10 bytes
0x60 — 0x7F 3 Imporá requisitos de tamanho especificados padrão para esse intervalo de opcode no futuro.
0x80 — 0x9F 4 16 bytes
0xA0 — 0xBF 5 12 bytes
0xC0 — 0xDF 6 Fornecedor Exclusivo - Qualquer tamanho permitido
0xE0 — 0xFF 7 Fornecedor Exclusivo - Qualquer tamanho permitido
 

Alguns dispositivos muito iniciais usavam opcodes exclusivos do fornecedor e, portanto, alguns opcodes não podem ser validados dessa maneira. Os seguintes opcodes ainda são válidos e verificam apenas se o tamanho está entre 6 e 16 bytes:

0x02, 0x05, 0x06, 0x09, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x13, 0x14, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x26, 0x27, 0x29, 0x2C, 0x2D

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista, Windows XP com SP2 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho imapi2.h

Confira também

IDiscRecorder2Ex

IDiscRecorder2Ex::SendCommandNoData

IDiscRecorder2Ex::SendCommandSendDataToDevice