Condividi tramite


IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO IOCTL (avc.h)

Il codice di controllo IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO I/O controlla l'enumerazione delle sottounite virtuali. È disponibile per la modalità utente e per i componenti in modalità kernel tramite l'invio IRP_MJ_DEVICE_CONTROL. Per la comunicazione da driver a driver, è un METHOD_BUFFERED IOCTL, quindi impostare i campi IRP di conseguenza (IrpStack-Parameters.DeviceIoControl.InputBufferLength> e Irp-AssociatedIrp.SystemBuffer>).

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO viene usato per aggiungere o rimuovere ID subunit di un singolo tipo. Le chiamate successive con una parte ID diversa dell'indirizzo subunit causano la modifica del numero di ID enumerati. Si noti che avc.sys aggiunge o rimuove solo gli ID più alti. Si tratta di una limitazione della specifica AV/C, non dell'implementazione del driver.

Questo IOCTL usa la struttura AVC_SUBUNIT_ADDR_SPEC.

Codice principale

IRP_MJ_DEVICE_CONTROL

Blocco dello stato

Se ha esito positivo, il driver del protocollo AV/C imposta Irp-IoStatus.Status>su STATUS_SUCCESS.

Gli altri valori restituiti possibili includono:

Valore restituito Descrizione
STATUS_INSUFFICIENT_RESOURCES Nessun buffer passato o risorse insufficienti disponibili per eseguire una query del Registro di sistema.
STATUS_INVALID_BUFFER_SIZE Il buffer passato in Irp->AssociatedIrp.SystemBuffer deve essere almeno grande come sizeof(AVC_SUBUNIT_ADDR_SPEC) che include un indirizzo subunit a byte singolo, ma limitato a un indirizzo subunit di 32 byte.
STATUS_INVALID_PARAMETER L'indirizzo subunit è stato specificato in modo errato.
STATUS_ACCESS_DENIED L'utente corrente ha privilegi di accesso al Registro di sistema insufficienti per rendere persistente l'aggiornamento.

Commenti

Deve essere chiamato in IRQL = PASSIVE_LEVEL.

Requisiti

Requisito Valore
Intestazione avc.h (include Avc.h)

Vedi anche

AVC_SUBUNIT_ADDR_SPEC

IOCTL_AVC_BUS_RESET

IOCTL_AVC_CLASS

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO