AVC_FUNCTION_SEND_RESPONSE
Le code de la fonction AVC_FUNCTION_SEND_RESPONSE est utilisé pour répondre aux demandes d’unités et de sous-unités AV/C.
Bloc d’état E/S
En cas de réussite, le pilote de protocole AV/C peut définir Irp-IoStatus.Status> sur :
STATUS_SUCCESS si la réponse est ignorée en raison d’une ou plusieurs réinitialisations de bus depuis la demande d’origine, ou
STATUS_PENDING si la réponse est correctement remise à 61883.sys (implique une remise réussie à l’initiateur de la demande)
Les autres valeurs de retour possibles sont les suivantes :
Valeur retournée | Description |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Une allocation de mémoire tampon interne a échoué. |
Commentaires
Cette fonction utilise la structure AVC_COMMAND_IRB comme indiqué ci-dessous.
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;
Spécifications
En-tête: Avc.h (inclure Avc.h)
entrée AVC_COMMAND_IRB
Commun
Le sous-membre Function de ce membre doit être défini sur AVC_FUNCTION_SEND_RESPONSE à partir de l’énumération AVC_FUNCTION.
Sous-unitéAddrFlag
Définissez sur la valeur obtenue à partir de l’achèvement AVC_FUNCTION_GET_REQUEST .
AlternateOpcodesFlag
Ignoré.
TimeoutFlag
Ignoré.
RetryFlag
Ignoré.
CommandType
Ignoré pour les réponses.
ResponseCode
Ce membre doit être défini sur l’une des valeurs de l’énumération AvcResponseCode .
Sous-unitéAddr
Définissez sur la valeur obtenue à partir de l’achèvement AVC_FUNCTION_GET_REQUEST .
AlternateOpcodes
Ignoré.
Délai d'expiration
Ignoré.
Nouvelle tentatives
Ignoré.
Opcode
Celui-ci doit contenir l’opcode d’unité AV/C approprié pour la réponse (peut être différent de l’opcode fourni dans la demande d’origine).
OperandLength
Définissez sur le nombre d’octets dans la liste d’opérandes de la réponse.
Opérandes
Liste des opérandes de la réponse.
NodeAddress
Adresse de nœud de la source de la requête d’origine.
Generation
ID de génération obtenu à partir de la requête d’origine.
Dans le contexte de l’interface d’appareil GUID_AVC_CLASS, le code de fonction AVC_FUNCTION_SEND_RESPONSE est utilisé pour répondre uniquement aux demandes d’unités AV/C.
Dans le cas d’instances virtuelles de avc.sys (c’est-à-dire des instances qui inscrivent l’interface d’appareil GUID_VIRTUAL_AVC_CLASS), le code de fonction AVC_FUNCTION_SEND_RESPONSE est utilisé pour répondre aux demandes d’unité et de sous-unité AV/C.
Si la première réponse utilise le code de réponse AVC_RESPONSE_INTERIM (à partir de l’énumération AvcResponseType ), le traitement du suivi est attendu. Les membres NodeAddress et Generation , obtenus par l’achèvement de la fonction d’origine AVC_FUNCTION_GET_REQUEST , doivent être utilisés dans les réponses suivantes. Dans tous les cas, la fonction AVC_FUNCTION_GET_REQUEST suivante doit être envoyée avant de retourner à partir de la routine d’achèvement AVC_FUNCTION_SEND_RESPONSE initiale, afin que la demande d’unité suivante puisse être reçue.
L’utilisation recommandée de cette structure consiste à utiliser le contenu de la requête d’origine et à mettre à jour les membres Opcode, OperandLength et Operands en fonction de la réponse.
Ce code de fonction peut être appelé dans IRQL >= DISPATCH_LEVEL.