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 |
---|---|
|
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 |
---|---|
|
O ponteiro não é válido.
Valor: 0x80004003 |
|
Falha não especificada.
Valor: 0x80004005 |
|
A unidade não dá suporte ao comando GET CONFIGURATION.
Valor: 0xC0AA020C |
|
Não há suporte para a página de recursos solicitada pelo dispositivo.
Valor: 0xC0AA020A |
|
Falha ao alocar a memória necessária.
Valor: 0x8007000E |
|
Há suporte para a página de recursos solicitada, mas não está marcada como atual.
Valor: 0xC0AA020B |
|
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 |
|
O dispositivo relatou dados inesperados ou inválidos para um comando.
Valor: 0xC0AA02FF |
|
A mídia é inserida de cabeça para baixo.
Valor: 0xC0AA0204 |
|
A unidade informou que está em processo de preparação. Tente a solicitação novamente mais tarde.
Valor: 0xC0AA0205 |
|
Não há mídia no dispositivo.
Valor: 0xC0AA0202 |
|
A mídia está sendo formatada no momento. Aguarde a conclusão do formato antes de tentar usar a mídia.
Valor: 0xC0AA0206 |
|
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 |
|
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 |
|
A mídia não é compatível ou de formato físico desconhecido.
Valor: 0xC0AA0203 |
|
A estrutura do DVD não está presente. Isso pode ser causado por uma unidade/meio incompatível usada.
Valor: 0xC0AA020E |
|
O dispositivo informou que a página do modo solicitado (e o tipo) não está presente.
Valor: 0xC0AA0201 |
|
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 |
|
A unidade informou que a mídia está protegida por gravação.
Valor: 0xC0AA0209 |
|
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 |
|
O identificador especificado é inválido.
Valor: 6 |
|
O recurso de rede ou dispositivo especificado não está mais disponível.
Valor: 55 |
|
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 |