irp secondari Plug and Play
In questa sezione vengono descritti i PnP IRP inviati ai driver. Tutti gli IRP PnP hanno il codice di funzione principale IRP_MJ_PNP e un codice di funzione secondario che indica la richiesta PnP specifica.
In questa sezione vengono fornite informazioni di riferimento per i singoli ip di integrazione. Vedere Plug and Play per una descrizione dell'ordine in cui vengono inviati gli IRP, una discussione su come gestire i criteri di integrazione in routine DispatchPnP e una discussione generale sui concetti e sulla terminologia di PnP.
Per ogni IRP e ogni tipo di driver, è necessario un driver per gestire l'IRP, può gestire facoltativamente l'IRP o non deve gestire l'IRP. Consultare la tabella seguente per identificare i provider di servizi di integrazione gestiti dal driver e quindi consultare le pagine di riferimento per informazioni sui singoli ip di integrazione. Gli indirizzi IP sono elencati nell'ordine funzionale nella tabella e nell'ordine alfabetico nelle pagine di riferimento di IRP.
Se un'IRP è contrassegnata come "No" nella tabella per un determinato driver, tale driver non deve gestire l'IRP. Il driver deve passare l'IRP al driver successivo nello stack di dispositivi, come descritto nella pagina di riferimento per l'IRP.
La gestione PnP invia questi indirizzi IP. I driver PnP possono inviare alcuni di questi IRP, ma solo quelli indicati in questa sezione.
Di seguito sono riportati i codici di funzione secondari per i provider di integrazione PnP e i tipi di driver che li gestiscono:
Codice di funzione secondaria di PnP IRP | Valore | Funzione o driver di filtro per il dispositivo nonbus | Driver di funzione per il dispositivo del bus (per l'oggetto FDO del bus) | Driver del bus o driver di filtro del bus (per pdO figlio) |
---|---|---|---|---|
IRP_MN_START_DEVICE | 0x00 | Obbligatoria | Obbligatoria | Obbligatoria |
IRP_MN_QUERY_REMOVE_DEVICE | 0x01 | Obbligatoria | Obbligatoria | Obbligatoria |
IRP_MN_REMOVE_DEVICE | 0x02 | Obbligatoria | Obbligatoria | Obbligatoria |
IRP_MN_CANCEL_REMOVE_DEVICE | 0x03 | Obbligatoria | Obbligatoria | Obbligatoria |
IRP_MN_STOP_DEVICE | 0x04 | Obbligatoria | Obbligatoria | Obbligatoria |
IRP_MN_QUERY_STOP_DEVICE | 0x05 | Obbligatoria | Obbligatoria | Obbligatoria |
IRP_MN_CANCEL_STOP_DEVICE | 0x06 | Obbligatoria | Obbligatoria | Obbligatoria |
IRP_MN_QUERY_DEVICE_RELATIONS | 0x07 | |||
- BusRelations | x | Facoltativo (1) | Necessario | No (2) |
- EjectionRelations | x | No | No | Facoltativo |
- RemovalRelations | x | Facoltativo | Facoltativo | No |
- TargetDeviceRelation | x | No | No | Necessario |
IRP_MN_QUERY_INTERFACE | 0x08 | Facoltativo | Facoltativo | Obbligatorio (1) |
IRP_MN_QUERY_CAPABILITIES | 0x09 | Facoltativo | Facoltativo o obbligatorio | |
IRP_MN_QUERY_RESOURCES | 0x0A | No | No | Obbligatorio (1) |
IRP_MN_QUERY_RESOURCE_REQUIREMENTS | 0x0B | No | No | Obbligatorio (1) |
IRP_MN_QUERY_DEVICE_TEXT | 0x0C | No | No | Obbligatorio (1) |
IRP_MN_FILTER_RESOURCE_REQUIREMENTS | 0x0d | Facoltativo (1) | Facoltativo (1) | No |
IRP_MN_READ_CONFIG | 0x0F | No | No | Obbligatorio (1) |
IRP_MN_WRITE_CONFIG | 0x10 | No | No | Obbligatorio (1) |
IRP_MN_EJECT | 0x11 | No | No | Necessario |
IRP_MN_SET_LOCK | 0x12 | No | No | Obbligatorio (1) |
IRP_MN_QUERY_ID | 0x13 | |||
- BusQueryDeviceID | x | No | No | Necessario |
- BusQueryHardwareIDs | x | No | No | Facoltativo |
- BusQueryCompatibleIDs | x | No | No o Facoltativo | |
- BusQueryInstanceID | x | No | No | Facoltativo |
- BusQueryContainerID | x | No | No | Obbligatorio (3) |
IRP_MN_QUERY_PNP_DEVICE_STATE | 0x14 | Facoltativo | Facoltativo | Facoltativo |
IRP_MN_QUERY_BUS_INFORMATION | 0x15 | No | No | Obbligatorio (1) |
IRP_MN_DEVICE_USAGE_NOTIFICATION | 0x16 | Obbligatorio (1) | Obbligatorio (1) | Obbligatorio (1) |
IRP_MN_SURPRISE_REMOVAL | 0x17 | Obbligatoria | Obbligatoria | Obbligatoria |
IRP_MN_DEVICE_ENUMERATED | 0x19 | No | No | Obbligatorio (1) |
(1) Obbligatorio o facoltativo in determinate situazioni. Per altri dettagli, vedere la pagina di riferimento per IRP.
(2) I driver di filtro del bus potrebbero gestire una query per BusRelations.
(3) Supportato in Windows 7 e versioni successive di Windows.