DEVICE_CAPABILITIES struttura (wdm.h)
Una struttura DEVICE_CAPABILITIES descrive le funzionalità di alimentazione e PnP di un dispositivo. Questa struttura viene restituita in risposta a un IRP_MN_QUERY_CAPABILITIES IRP.
Sintassi
typedef struct _DEVICE_CAPABILITIES {
USHORT Size;
USHORT Version;
ULONG DeviceD1 : 1;
ULONG DeviceD2 : 1;
ULONG LockSupported : 1;
ULONG EjectSupported : 1;
ULONG Removable : 1;
ULONG DockDevice : 1;
ULONG UniqueID : 1;
ULONG SilentInstall : 1;
ULONG RawDeviceOK : 1;
ULONG SurpriseRemovalOK : 1;
ULONG WakeFromD0 : 1;
ULONG WakeFromD1 : 1;
ULONG WakeFromD2 : 1;
ULONG WakeFromD3 : 1;
ULONG HardwareDisabled : 1;
ULONG NonDynamic : 1;
ULONG WarmEjectSupported : 1;
ULONG NoDisplayInUI : 1;
ULONG Reserved1 : 1;
ULONG WakeFromInterrupt : 1;
ULONG SecureDevice : 1;
ULONG ChildOfVgaEnabledBridge : 1;
ULONG DecodeIoOnBoot : 1;
ULONG Reserved : 9;
ULONG Address;
ULONG UINumber;
DEVICE_POWER_STATE DeviceState[POWER_SYSTEM_MAXIMUM];
SYSTEM_POWER_STATE SystemWake;
DEVICE_POWER_STATE DeviceWake;
ULONG D1Latency;
ULONG D2Latency;
ULONG D3Latency;
} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
Members
Size
Specifica le dimensioni della struttura, in byte. Questo campo viene impostato dal componente che invia la richiesta di IRP_MN_QUERY_CAPABILITIES .
Version
Specifica la versione della struttura, attualmente versione 1. Questo campo viene impostato dal componente che invia la richiesta di IRP_MN_QUERY_CAPABILITIES .
DeviceD1
Specifica se l'hardware del dispositivo supporta lo stato di alimentazione D1. I driver non devono modificare questo valore.
DeviceD2
Specifica se l'hardware del dispositivo supporta lo stato di alimentazione D2. I driver non devono modificare questo valore.
LockSupported
Specifica se il dispositivo supporta il blocco del dispositivo fisico che impedisce l'espulsione del dispositivo. Questo membro riguarda l'esezione del dispositivo dallo slot, anziché l'inserimento di un elemento di supporti rimovibili dal dispositivo.
EjectSupported
Specifica se il dispositivo supporta l'espulsione del dispositivo controllato dal software mentre il sistema si trova nello stato di PowerSystemWorking . Questo membro riguarda l'esezione del dispositivo dallo slot, anziché l'inserimento di un elemento di supporti rimovibili dal dispositivo.
Removable
Specifica se il dispositivo può essere rimosso dinamicamente dall'elemento padre immediato. Se La proprietà Rimovibile è impostata su TRUE, il dispositivo non appartiene allo stesso oggetto fisico del relativo padre.
Ad esempio, se Il dispositivo rimovibile è impostato su TRUE per un dispositivo composito USB all'interno di una stampante multifunzione, il dispositivo composito non appartiene all'oggetto fisico del relativo padre immediato, ad esempio un hub USB all'interno di un PC notebook.
Nella maggior parte dei casi il driver del bus, non il driver di funzione, deve determinare il valore del parametro rimovibile del dispositivo. Per i dispositivi USB, il driver dell'hub USB imposta il parametro Rimovibile . Non deve essere modificato dal driver di funzione.
Se Removable è impostato su TRUE, il dispositivo viene visualizzato nel programma Unplug o Eject Hardware , a meno che SurpriseRemovalOK non sia impostato anche su TRUE.
DockDevice
Specifica se il dispositivo è una periferica di ancoraggio.
UniqueID
Specifica se l'ID dell'istanza del dispositivo è univoco a livello di sistema. Questo bit è chiaro se l'ID istanza è univoco solo nell'ambito del bus. Per altre informazioni, vedere Stringhe di identificazione del dispositivo.
SilentInstall
Specifica se Gestione dispositivi deve eliminare tutte le finestre di dialogo di installazione, ad eccezione delle finestre di dialogo necessarie, ad esempio "nessun driver compatibile trovato".
RawDeviceOK
Specifica se il driver per il bus sottostante può guidare il dispositivo se non è presente alcun driver di funzione, ad esempio dispositivi SCSI in modalità pass-through. Questa modalità di operazione è denominata modalità non elaborata.
SurpriseRemovalOK
Specifica se il driver di funzione per il dispositivo può gestire il caso in cui il dispositivo viene rimosso prima che Windows possa inviare IRP_MN_QUERY_REMOVE_DEVICE a esso. Se SurpriseRemovalOK è impostato su TRUE, il dispositivo può essere rimosso in modo sicuro dal relativo padre immediato indipendentemente dallo stato in cui si trova il driver.
Ad esempio, un mouse USB standard non mantiene uno stato nel relativo hardware e quindi può essere rimosso in modo sicuro in qualsiasi momento. Tuttavia, un disco rigido esterno il cui driver memorizza nella cache le scritture in memoria non può essere rimosso in modo sicuro senza prima consentire al driver di scaricare la cache nell'hardware.
I driver per i dispositivi USB che supportano la rimozione delle sorprese devono impostare questa opzione su TRUE solo quando viene passato il backup dello stack di driver.
WakeFromD0
Specifica se il dispositivo può rispondere a un segnale di riattivazione esterno durante lo stato D0. I driver non devono modificare questo valore.
WakeFromD1
Specifica se il dispositivo può rispondere a un segnale di riattivazione esterno durante lo stato D1. I driver non devono modificare questo valore.
WakeFromD2
Specifica se il dispositivo può rispondere a un segnale di riattivazione esterno durante lo stato D2. I driver non devono modificare questo valore.
WakeFromD3
Specifica se il dispositivo può rispondere a un segnale di riattivazione esterno durante lo stato D3. I driver non devono modificare questo valore.
HardwareDisabled
Se impostato, questo flag specifica che l'hardware del dispositivo è disabilitato.
Un driver del bus padre del dispositivo o un driver di filtro del bus imposta questo flag quando un driver determina che l'hardware del dispositivo è disabilitato.
Il gestore PnP invia una IRP_MN_QUERY_CAPABILITIES IRP subito dopo l'enumerazione di un dispositivo e invia un'altra dopo l'avvio del dispositivo. Il gestore PnP controlla solo questo bit subito dopo l'enumerazione del dispositivo. Dopo l'avvio del dispositivo, questo bit viene ignorato.
NonDynamic
Riservato per usi futuri.
WarmEjectSupported
Riservato per usi futuri.
NoDisplayInUI
Non visualizzare il dispositivo nell'interfaccia utente. Se questo bit è impostato, il dispositivo non viene mai visualizzato nell'interfaccia utente, anche se il dispositivo è presente ma non viene avviato. Solo i driver del bus e i driver di filtro associati devono impostare questo bit. Vedere anche il flag di PNP_DEVICE_DONT_DISPLAY_IN_UI nella struttura PNP_DEVICE_STATE .
Reserved1
Riservato per l'utilizzo nel sistema.
WakeFromInterrupt
Indica se il driver o ACPI è responsabile della gestione dell'evento di riattivazione. Se impostato, il driver è responsabile della gestione dell'evento di riattivazione. ACPI armezza il dispositivo quando riceve un IRP_MN_WAIT_WAKE IRP, ma non connette l'interruzione, completare l'IRP per notificare lo stack di dispositivi di un evento di riattivazione.
SecureDevice
Indica se il dispositivo è un dispositivo sicuro.
ChildOfVgaEnabledBridge
Per un dispositivo VGA, indica se il bridge padre ha il set di bit di decodifica VGA.
DecodeIoOnBoot
Indica se il dispositivo ha decodificato I/O abilitato per l'avvio.
Reserved
Riservato per l'utilizzo nel sistema.
Address
Specifica un indirizzo che indica dove si trova il dispositivo sul bus sottostante.
L'interpretazione di questo numero è specifica del bus. Se l'indirizzo è sconosciuto o il driver del bus non supporta un indirizzo, il driver del bus lascia questo membro al valore predefinito di 0xFFFFFFFF.
Nell'elenco seguente vengono descritte le informazioni archiviate da determinati driver del bus nel campo Indirizzo per i dispositivi figlio:
Bus | Descrizione |
---|---|
1394 | Non fornisce un indirizzo perché gli indirizzi sono volatili. Impostazione predefinita per 0xFFFFFFFF. |
EISA | Numero slot (0-F). |
IDE | Per un dispositivo IDE, l'indirizzo contiene l'ID di destinazione e il LUN. Per un canale IDE, l'indirizzo è zero o uno (0 = canale primario e 1 = canale secondario). |
Isapnp | Non fornisce un indirizzo. Impostazione predefinita per 0xFFFFFFFF. |
Scheda PC (PCMCIA) | Numero di socket (in genere 0x00 o 0x40). |
PCI | Numero di dispositivo nella parola alta e numero di funzione nella parola bassa. |
SCSI | ID di destinazione. |
USB | Il numero della porta. |
UINumber
Specifica un numero associato al dispositivo che può essere visualizzato nell'interfaccia utente.
Questo numero è in genere un numero di slot percepito dall'utente, ad esempio un numero stampato accanto allo slot sulla scheda o un altro numero che rende più semplice l'individuazione del dispositivo fisico per l'utente. Per gli autobus senza tale convenzione o quando uiNumber è sconosciuto, il driver del bus lascia questo membro al valore predefinito di 0xFFFFFFFF.
DeviceState[POWER_SYSTEM_MAXIMUM]
Matrice di valori che indica lo stato di alimentazione del dispositivo più alimentato che il dispositivo può mantenere per ogni stato di alimentazione del sistema. L'elemento DeviceState[PowerSystemWorking] della matrice corrisponde allo stato del sistema S0. La voce per PowerSystemUnspecified è riservata per l'uso del sistema.
Le voci in questa matrice si basano sulle funzionalità del nodo devnode padre. Come regola generale, un driver non deve modificare questi valori. Tuttavia, se necessario, un driver può abbassare il valore, ad esempio da PowerDeviceD1 a PowerDeviceD2.
Se il driver del bus non è in grado di determinare lo stato di alimentazione del dispositivo appropriato per un dispositivo enumerato radice, imposta DeviceState[PowerSystemWorking] su PowerDeviceD0 e tutte le altre voci su PowerDeviceD3.
SystemWake
Specifica lo stato di alimentazione del sistema meno alimentato da cui il dispositivo può segnalare un evento di riattivazione. Un valore di PowerSystemUnspecified indica che il dispositivo non può riattivare il sistema.
Un driver del bus può ottenere queste informazioni dal nodo devnode padre.
In generale, un driver non deve modificare questo valore. Se necessario, tuttavia, un driver può aumentare lo stato di alimentazione, ad esempio da PowerSystemHibernate a PowerSystemS1, per indicare che il dispositivo non può riattivare il sistema da uno stato di ibernazione ma può passare da uno stato di sospensione più elevato.
DeviceWake
Specifica lo stato di alimentazione del dispositivo meno alimentato da cui il dispositivo può segnalare un evento di riattivazione. Un valore di PowerDeviceUnspecified indica che il dispositivo non può segnalare un evento di riattivazione.
D1Latency
Specifica la latenza approssimativa del caso peggiore del dispositivo, in unità di 100 microsecondi, per restituire il dispositivo allo stato PowerDeviceD0 dallo stato PowerDeviceD1 . Impostare su zero se il dispositivo non supporta lo stato D1.
D2Latency
Specifica la latenza approssimativa del caso peggiore del dispositivo, in unità di 100 microsecondi, per restituire lo stato del dispositivo allo stato PowerDeviceD0 dallo stato PowerDeviceD2 . Impostare su zero se il dispositivo non supporta lo stato D2.
D3Latency
Specifica la latenza approssimativa del caso peggiore del dispositivo, in unità di 100 microsecondi, per restituire il dispositivo allo stato PowerDeviceD0 dallo stato PowerDeviceD3 . Impostare su zero se il dispositivo non supporta lo stato D3.
Commenti
I driver del bus impostano i valori appropriati in questa struttura in risposta a un IRP_MN_QUERY_CAPABILITIES IRP. Driver di filtro bus, driver di funzione e driver di filtro possono modificare le funzionalità impostate dal driver del bus.
I driver che inviano una richiesta di IRP_MN_QUERY_CAPABILITIES devono inizializzare i membri Size, Version, Address e UINumber di questa struttura prima di inviare l'IRP.
Per altre informazioni sull'uso della struttura DEVICE_CAPABILITIES per descrivere le funzionalità di alimentazione di un dispositivo, vedere Creazione di report sulle funzionalità di risparmio energia dei dispositivi.
Requisiti
Requisito | Valore |
---|---|
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |