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)

Vedi anche

IRP_MN_QUERY_CAPABILITIES

PNP_DEVICE_STATE