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.