Compartilhar via


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

Envia um comando MMC para o dispositivo de gravação. Use essa função quando nenhum buffer de dados for enviado nem recebido do dispositivo.

Sintaxe

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

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 ter entre 6 e 16 bytes.

[out] SenseBuffer

Dados de sensor retornados pelo dispositivo de gravação.

[in] Timeout

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

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.

Valor: 0x00AA0200

 

Os seguintes códigos de erro geralmente 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
Há suporte para a página de recursos solicitada, 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/meio 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 do 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 e dos dados de sensor, 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::SendCommandGetDataFromDevice

IDiscRecorder2Ex::SendCommandSendDataToDevice