Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El TransferCodecVerbs rutina transfiere uno o varios comandos a un códec o códecs y recupera las respuestas a esos comandos.
El tipo de puntero de función de un TransferCodecVerbs rutina se define de la manera siguiente.
Sintaxis
PTRANSFER_CODEC_VERBS PtransferCodecVerbs;
NTSTATUS PtransferCodecVerbs(
[in] PVOID _context,
[in] ULONG Count,
[in, out] PHDAUDIO_CODEC_TRANSFER CodecTransfer,
[in] PHDAUDIO_TRANSFER_COMPLETE_CALLBACK Callback,
[in] PVOID Context
)
{...}
Parámetros
[in] _context
Especifica el valor de contexto del miembro context de del HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2, o HDAUDIO_BUS_INTERFACE_BDL estructura.
[in] Count
Especifica el número de elementos de la matriz codecTransfer.
[in, out] CodecTransfer
Puntero a una matriz de estructuras de HDAUDIO_CODEC_TRANSFER. Cada elemento de matriz es una estructura que contiene almacenamiento para un comando de salida del llamador y la respuesta de entrada correspondiente del códec.
[in] Callback
Puntero de función a una rutina de devolución de llamada. Este parámetro es un puntero de función de tipo HDAUDIO_TRANSFER_COMPLETE_CALLBACK. El parámetro se puede especificar como NULL. Para obtener más información, vea la siguiente sección Comentarios.
[in] Context
Valor de contexto para la rutina de devolución de llamada. El autor de la llamada convierte el valor de contexto en el tipo PVOID. Después de completar los comandos de forma asincrónica, el controlador del bus de HD Audio pasa el valor de contexto a la rutina de devolución de llamada como parámetro de llamada.
Valor devuelto
transferCodecVerbs devuelve STATUS_SUCCESS si la llamada se realiza correctamente. De lo contrario, la rutina devuelve un código de error adecuado. En la tabla siguiente se muestra un posible código de estado de retorno.
| Código devuelto | Descripción |
|---|---|
|
Indica que no se pudo agregar la solicitud a la cola de comandos debido a una escasez de memoria no paginada. |
Observaciones
Esta rutina envía uno o varios comandos de códec al controlador del bus de AUDIO HD. El controlador de bus emite los comandos a los códecs, recupera las respuestas de los códecs a los comandos y genera las respuestas al autor de la llamada.
El autor de la llamada especifica los comandos de una matriz de estructuras de HDAUDIO_CODEC_TRANSFER. Cada estructura contiene almacenamiento para un comando y la respuesta del códec a ese comando. Antes de llamar a TransferCodecVerbs, el autor de la llamada rellena los comandos de cada una de las estructuras de la matriz. A medida que se completa cada comando, el controlador de HD Audio bus recupera la respuesta del códec y lo escribe en la estructura. Una vez completado el último comando, el autor de la llamada puede leer las respuestas de la matriz.
La rutina puede funcionar de forma sincrónica o asincrónica:
- Si el autor de la llamada especifica NULL para el valor del parámetro de entrada devolución de llamada, el controlador del bus de audio HD completa los comandos del codecTransfer matriz sincrónicamente. (En otras palabras, la rutina solo devuelve después de que los códecs hayan procesado todos los comandos y las respuestas a esos comandos están disponibles).
- Si el autor de la llamada especifica un valorNULL que no es para el parámetro de devolución de llamada de, la rutina funciona de forma asincrónica. (Es decir, la rutina vuelve inmediatamente después de agregar los comandos a su cola interna sin esperar a que los códecs procesen todos los comandos). Después de que los códecs procesen los comandos, el controlador de HD Audio bus llama a la rutina de devolución de llamada. En el caso asincrónico, el autor de la llamada no debe intentar leer las respuestas a los comandos antes de que el controlador de bus llame a la rutina de devolución de llamada.
typedef VOID
(*PHDAUDIO_TRANSFER_COMPLETE_CALLBACK)
(HDAUDIO_CODEC_TRANSFER *, PVOID);
El primer parámetro de llamada es un puntero al codecTransfer elemento de matriz que contiene el comando de códec y la respuesta que desencadenó la devolución de llamada. El segundo parámetro de llamada es el mismo valor de contexto que se especificó anteriormente en el parámetro TransferCodecVerbs rutina callbackContext.
Si se ejecuta correctamente, TransferCodecVerbs devuelve STATUS_SUCCESS. El significado de este código de estado depende de si la rutina funciona de forma sincrónica o asincrónica:
- En el caso sincrónico ( de devolución de llamada es NULL), STATUS_SUCCESS significa que el controlador de bus tiene todos los comandos de la matriz codecTransfer en los códecs y que la rutina ha escrito todas las respuestas a esos comandos en la matriz. Sin embargo, el autor de la llamada debe comprobar las respuestas individuales para determinar si son válidas. Es posible que las respuestas individuales no sean válidas debido a los tiempos de espera del códec o a la saturación de FIFO.
- En el caso asincrónico ( de devolución de llamada no esNULL), STATUS_SUCCESS significa solo que la rutina ha agregado correctamente los comandos a la cola interna del controlador de HD Audio Bus. El autor de la llamada no debe intentar leer las respuestas a esos comandos hasta que el controlador de bus llame a la rutina de devolución de llamada.
Si el parámetro de devolución de llamada es NULL, el autor de la llamada debe ejecutarse en irQL PASSIVE_LEVEL. Si de devolución de llamada no esNULL, el autor de la llamada puede llamar a TransferCodecVerbs en IRQL <= DISPATCH_LEVEL, en cuyo caso la llamada vuelve inmediatamente sin esperar a que los códecs procesen todos los comandos; una vez completados los comandos, el controlador de HD Audio bus llama a la rutina de devolución de llamada en IRQL DISPATCH_LEVEL.
El autor de la llamada debe asignar el codecTransfer matriz del grupo no paginado.
Requisitos
| Requisito | Valor |
|---|---|
| de la plataforma de destino de | Escritorio |
| encabezado de | hdaudio.h (incluya Hdaudio.h) |
| irQL | Consulte la sección Comentarios. |