AVC_FUNCTION_SEND_RESPONSE
El código de función AVC_FUNCTION_SEND_RESPONSE se usa para responder a las solicitudes de unidad av/C y subunit.
Bloque de estado de entrada/salida
Si se ejecuta correctamente, el controlador de protocolo AV/C puede establecer Irp-IoStatus.Status> en:
STATUS_SUCCESS si la respuesta se descarta debido a uno o varios restablecimientos de bus desde la solicitud original, o
STATUS_PENDING si la respuesta se entrega correctamente a 61883.sys (implica una entrega correcta al iniciador de la solicitud)
Entre los posibles otros valores devueltos se incluyen:
Valor devuelto | Descripción |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Error en la asignación de búfer interno. |
Comentarios
Esta función usa la estructura AVC_COMMAND_IRB como se muestra a continuación.
typedef struct _AVC_COMMAND_IRB {
AVC_IRB Common;
UCHAR SubunitAddrFlag : 1;
UCHAR AlternateOpcodesFlag : 1;
UCHAR TimeoutFlag : 1;
UCHAR RetryFlag : 1;
union {
UCHAR CommandType;
UCHAR ResponseCode;
};
PUCHAR SubunitAddr;
PUCHAR AlternateOpcodes;
LARGE_INTEGER Timeout;
UCHAR Retries;
UCHAR Opcode;
ULONG OperandLength;
UCHAR Operands[MAX_AVC_OPERAND_BYTES];
NODE_ADDRESS NodeAddress;
ULONG Generation;
} AVC_COMMAND_IRB, *PAVC_COMMAND_IRB;
Requisitos
Rúbrica: Avc.h (incluya Avc.h)
entrada de AVC_COMMAND_IRB
Común
El submembrado Function de este miembro debe establecerse en AVC_FUNCTION_SEND_RESPONSE de la enumeración AVC_FUNCTION.
SubunitAddrFlag
Establezca en el valor obtenido a partir de la finalización del AVC_FUNCTION_GET_REQUEST .
AlternateOpcodesFlag
ignorado.
TimeoutFlag
ignorado.
RetryFlag
ignorado.
CommandType
Se omite para las respuestas.
ResponseCode
Este miembro debe establecerse en uno de los valores de la enumeración AvcResponseCode .
SubbunitAddr
Establezca en el valor obtenido a partir de la finalización del AVC_FUNCTION_GET_REQUEST .
AlternateOpcodes
ignorado.
Tiempo de espera
ignorado.
Reintentos
ignorado.
Código de operación
Debe contener el código de operación de unidad AV/C adecuado para la respuesta (puede ser diferente del código de operación proporcionado en la solicitud original).
OperandoLength
Se establece en el número de bytes de la lista de operandos de la respuesta.
Operandos
Lista de operandos de la respuesta.
NodeAddress
Dirección del nodo del origen de la solicitud original.
Generación
Identificador de generación obtenido de la solicitud original.
En el contexto de la interfaz de dispositivo GUID_AVC_CLASS, el código de función AVC_FUNCTION_SEND_RESPONSE se usa para responder solo a las solicitudes de unidad av/C.
En el caso de instancias virtuales de avc.sys (es decir, instancias que registran la interfaz de dispositivo GUID_VIRTUAL_AVC_CLASS), el código de función AVC_FUNCTION_SEND_RESPONSE se usa para responder a las solicitudes de unidad av/C y de subunidad.
Si la primera respuesta usa el código de respuesta AVC_RESPONSE_INTERIM (de la enumeración AvcResponseType ), se espera el procesamiento de seguimiento. Los miembros NodeAddress y Generation , obtenidos por la finalización de la función original de AVC_FUNCTION_GET_REQUEST , deben usarse en respuestas posteriores. En cualquier caso, se debe enviar la siguiente función AVC_FUNCTION_GET_REQUEST antes de volver de la rutina de finalización inicial AVC_FUNCTION_SEND_RESPONSE , de modo que se pueda recibir la siguiente solicitud de unidad.
El uso recomendado de esta estructura es usar el contenido de la solicitud original y actualizar los miembros Opcode, OperandoLength y Operandos según corresponda para la respuesta.
Se puede llamar a este código de función en IRQL >= DISPATCH_LEVEL.