Compartir a través de


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

Envía un comando MMC al dispositivo de grabación que solicita datos del dispositivo.

Sintaxis

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

Comando de paquete para enviar al dispositivo.

[in] CdbSize

Tamaño, en bytes, del paquete de comandos que se va a enviar. Debe tener entre 6 y 16 bytes.

[out] SenseBuffer

Detectar los datos devueltos por el dispositivo de grabación.

[in] Timeout

Límite de tiempo, en segundos, permitido para que el comando send reciba un resultado.

[out] Buffer

Búfer de datos asignado a la aplicación que recibirá datos asociados al comando send. No debe ser NULL.

[in] BufferSize

Tamaño, en bytes, del búfer de datos del búfer . No debe ser cero.

[out] BufferFetched

Tamaño, en bytes, de los datos devueltos en el búfer de datos de búfer.

Valor devuelto

S_OK o uno de los valores siguientes se pueden devolver correctamente, pero se pueden devolver otros códigos de operación correcta como resultado de la implementación:

Código devuelto Descripción
S_IMAPI_COMMAND_HAS_SENSE_DATA
El dispositivo produce un error en el comando, pero devuelve datos de sentido.
 

Los códigos de error siguientes se devuelven normalmente en caso de error de operación, pero no representan los únicos valores de error posibles:

Código devuelto Descripción
E_POINTER
El puntero no es válido.

Valor: 0x80004003

E_FAIL
Error no especificado.

Valor: 0x80004005

E_IMAPI_RECORDER_GET_CONFIGURATION_NOT_SUPPORTED
La unidad no admite el comando GET CONFIGURATION.

Valor: 0xC0AA020C

E_IMAPI_RECORDER_NO_SUCH_FEATURE
El dispositivo no admite la página de características solicitada.

Valor: 0xC0AA020A

E_OUTOFMEMORY
No se pudo asignar la memoria necesaria.

Valor: 0x8007000E

E_IMAPI_RECORDER_FEATURE_IS_NOT_CURRENT
Se admite la página de características solicitada, pero no está marcada como actual.

Valor: 0xC0AA020B

E_IMAPI_RECORDER_COMMAND_TIMEOUT
El dispositivo no pudo aceptar el comando dentro del período de tiempo de espera. Esto puede deberse a que el dispositivo ha entrado en un estado incoherente o puede que sea necesario aumentar el valor de tiempo de espera del comando.

Valor: 0xC0AA020D

E_IMAPI_RECORDER_INVALID_RESPONSE_FROM_DEVICE
El dispositivo notificó datos inesperados o no válidos para un comando.

Valor: 0xC0AA02FF

E_IMAPI_RECORDER_MEDIA_UPSIDE_DOWN
El medio se inserta al revés.

Valor: 0xC0AA0204

E_IMAPI_RECORDER_MEDIA_BECOMING_READY
La unidad informó de que está en proceso de preparación. Vuelva a intentar la solicitud más tarde.

Valor: 0xC0AA0205

E_IMAPI_RECORDER_MEDIA_NO_MEDIA
No hay ningún medio en el dispositivo.

Valor: 0xC0AA0202

E_IMAPI_RECORDER_MEDIA_FORMAT_IN_PROGRESS
El medio está siendo formateado actualmente. Espere a que se complete el formato antes de intentar usar el medio.

Valor: 0xC0AA0206

E_IMAPI_RECORDER_MEDIA_BUSY
La unidad informó de que está realizando una operación de larga duración, como finalizar una escritura. La unidad puede no ser utilizable durante un largo período de tiempo.

Valor: 0xC0AA0207

E_IMAPI_LOSS_OF_STREAMING
Error de escritura porque la unidad no recibió datos lo suficientemente rápido como para continuar escribiendo. Mover los datos de origen al equipo local, reducir la velocidad de escritura o habilitar una configuración de "búfer bajo ejecución libre" puede resolver este problema.

Valor: 0xC0AA0300

E_IMAPI_RECORDER_MEDIA_INCOMPATIBLE
El medio no es compatible o con un formato físico desconocido.

Valor: 0xC0AA0203

E_IMAPI_RECORDER_DVD_STRUCTURE_NOT_PRESENT
La estructura de DVD no está presente. Esto puede deberse a que se usa una unidad o un medio incompatibles.

Valor: 0xC0AA020E

E_IMAPI_RECORDER_NO_SUCH_MODE_PAGE
El dispositivo informó de que la página de modo solicitado (y tipo) no está presente.

Valor: 0xC0AA0201

E_IMAPI_RECORDER_INVALID_MODE_PARAMETERS
La unidad informó de que no se admitía la combinación de parámetros proporcionados en la página de modo para un comando MODE SELECT.

Valor: 0xC0AA0208

E_IMAPI_RECORDER_MEDIA_WRITE_PROTECTED
La unidad informó de que el medio está protegido por escritura.

Valor: 0xC0AA0209

E_IMAPI_RECORDER_MEDIA_SPEED_MISMATCH
La velocidad del medio no es compatible con el dispositivo. Esto puede deberse al uso de medios de mayor o menor velocidad que el intervalo de velocidades compatibles con el dispositivo.

Valor: 0xC0AA020F

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
El identificador especificado no es válido.

Valor: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
El recurso de red o el dispositivo especificados ya no se encuentran disponibles.

Valor: 55

E_IMAPI_RECORDER_LOCKED
El dispositivo asociado a esta grabadora durante la última operación se ha bloqueado exclusivamente, lo que hace que se produzca un error en esta operación.

Valor: 0xC0AA0210

Comentarios

Para obtener más información sobre el contenido del paquete de comandos, los datos de detección y el búfer de datos de salida, consulte la revisión más reciente de la especificación MMC en ftp://ftp.t10.org/t10/drafts/mmc5.

Los comandos definidos por el cliente (CDB) que se usan con este método deben tener entre 6 y 16 bytes de longitud. Además, el tamaño de cada comando debe coincidir con el tamaño definido por el código de operación tal y como se define en la tabla siguiente.

Intervalo de código de operación de CDB Grupo CDB Tamaño de CDB requerido
0x00: 0x1F 0 6 bytes
0x20: 0x3F 1 10 bytes
0x40: 0x5F 2 10 bytes
0x60: 0x7F 3 Aplicará los requisitos de tamaño especificados estándar para este intervalo de código de operación en el futuro.
0x80: 0x9F 4 16 bytes
0xA0: 0xBF 5 12 bytes
0xC0: 0xDF 6 Proveedor único: cualquier tamaño permitido
0xE0: 0xFF 7 Proveedor único: cualquier tamaño permitido
 

Algunos dispositivos muy tempranos usaron códigos de operación únicos del proveedor y, por lo tanto, algunos códigos de operación no se pueden validar de esta manera. Los siguientes códigos de operación siguen siendo válidos y solo comprueban que el tamaño está comprendido entre 6 y 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 Value
Cliente mínimo compatible Windows Vista, Windows XP con SP2 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado imapi2.h

Consulte también

IDiscRecorder2Ex

IDiscRecorder2Ex::SendCommandNoData

IDiscRecorder2Ex::SendCommandSendDataToDevice