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.

Consulte también

AVC_FUNCTION_GET_REQUEST

AvcResponseCode

AVC_FUNCTION