IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO IOCTL (avc.h)
Le code de contrôle d’E/S IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO contrôle l’énumération des sous-unités virtuelles. Il est disponible pour le mode utilisateur ainsi que pour les composants en mode noyau via le IRP_MJ_DEVICE_CONTROL dispatch. Pour la communication de pilote à pilote, il s’agit d’une METHOD_BUFFERED IOCTL. Définissez donc les champs IRP en conséquence (IrpStack-Parameters.DeviceIoControl.InputBufferLength> et Irp-AssociatedIrp.SystemBuffer>).
IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO est utilisé pour ajouter ou supprimer des ID de sous-unités d’un type unique. Les appels successifs avec une autre partie d’ID de l’adresse de sous-unité entraînent la modification du nombre d’ID énumérés. Notez que avc.sys ajoute ou supprime uniquement les ID les plus élevés. Il s’agit d’une limitation de la spécification AV/C, et non de l’implémentation du pilote.
Ce IOCTL utilise la structure AVC_SUBUNIT_ADDR_SPEC.
Code principal
Bloc d’état
En cas de réussite, le pilote de protocole AV/C définit Irp-IoStatus.Status>sur STATUS_SUCCESS.
Les autres valeurs de retour possibles sont les suivantes :
Valeur de retour | Description |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Aucune mémoire tampon n’a été transmise ou les ressources disponibles sont insuffisantes pour effectuer une requête de Registre. |
STATUS_INVALID_BUFFER_SIZE | La mémoire tampon passée dans Irp->AssociatedIrp.SystemBuffer doit être au moins aussi grande que sizeof(AVC_SUBUNIT_ADDR_SPEC), qui inclut une adresse de sous-unité d’un octet, mais limitée à une adresse de sous-unité de 32 octets. |
STATUS_INVALID_PARAMETER | L’adresse de la sous-unité a été spécifiée incorrectement. |
STATUS_ACCESS_DENIED | L’utilisateur actuel dispose de privilèges d’accès au Registre insuffisants pour rendre la mise à jour permanente. |
Remarques
Doit être appelé à l’adresse IRQL = PASSIVE_LEVEL.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | avc.h (inclure Avc.h) |