Condividi tramite


Funzione WmiSystemControl (wmilib.h)

La routine WmiSystemControl è una routine dispatch per i driver che usano libreria WMI supportano routine per gestire i runtime di integrazione WMI.

Sintassi

NTSTATUS WmiSystemControl(
  [in]      PWMILIB_CONTEXT         WmiLibInfo,
  [in]      PDEVICE_OBJECT          DeviceObject,
  [in, out] PIRP                    Irp,
  [out]     PSYSCTL_IRP_DISPOSITION IrpDisposition
);

Parametri

[in] WmiLibInfo

Puntatore a una struttura di WMILIB_CONTEXT che contiene informazioni di registrazione per i blocchi di dati e i blocchi eventi di un driver e definisce i punti di ingresso per le routine di callback della libreria WMI del driver.

[in] DeviceObject

Puntatore al DEVICE_OBJECTdel driver.

[in, out] Irp

Puntatore al IRP.

[out] IrpDisposition

Puntatore a un valore di enumerazione di tipo SYSCTL_IRP_DISPOSITION che indica come è stato gestito l'IRP. WmiSystemControl imposta sempre questo valore, anche quando restituisce un codice NTSTATUS non riuscito.

SYSCTL_IRP_DISPOSITION è un'enumerazione in Wmilib.h e contiene i valori seguenti:

IrpProcessed

L'IRP è stato elaborato ed eventualmente completato. Se la routine DpWmi Xxx del driverchiamata da WmiSystemControl non ha completato l'IRP, il driver deve chiamare WmiCompleteRequest per completare l'IRP dopo WmiSystemControl.

IrpNotCompleted

L'IRP è stato elaborato ma non completato, perché WMI ha rilevato un errore e configurato l'IRP con un codice di errore appropriato oppure ha elaborato una richiesta di IRP_MN_REGINFO o IRP_MN_REGINFO_EX. Il driver deve completare l'IRP chiamando IoCompleteRequest.

IrpNotWmi

L'IRP non è una richiesta WMI, ovvero WMI non riconosce il codice secondario di IRP. Se il driver gestisce le richieste di IRP_MJ_SYSTEM_CONTROL con questo IRP_MN_XXX, deve gestire l'IRP; in caso contrario, il driver deve inoltrare l'IRP al driver inferiore successivo. Se il driver è il driver di livello più basso, deve completare l'IRP.

IrpForward

L'IRP è destinato a un altro oggetto dispositivo, ovvero il puntatore all'oggetto dispositivo in Parameters.WMI.ProviderId in IRP non corrisponde al puntatore passato dal driver nella chiamata a IoWMIRegistrationControl). Il driver deve inoltrare l'IRP al driver inferiore successivo. Se il driver è il driver di livello più basso, deve completare l'IRP.

Valore restituito

wmiSystemControl restituisce STATUS_SUCCESS o uno dei codici di errore seguenti:

Osservazioni

Quando un driver riceve una richiesta di IRP_MJ_SYSTEM_CONTROL con un codice secondario WMI IRP, chiama WmiSystemControl con un puntatore alla struttura WMILIB_CONTEXT del driver, un puntatore all'oggetto dispositivo e un puntatore all'IRP. La struttura WMILIB_CONTEXT contiene informazioni di registrazione per i blocchi di dati e i blocchi eventi del driver e definisce i punti di ingresso per le routine di callback della libreria WMI.

WmiSystemControl conferma che IRP è una richiesta WMI e determina se il blocco specificato dalla richiesta è valido per il driver. In tal caso, elabora l'IRP chiamando il DpWmi appropriatoxxx punto di ingresso nella struttura di WMILIB_CONTEXT del driver. WMI viene eseguito in IRQL PASSIVE_LEVEL quando chiama la routine DpWmi Xxx del driver.

Un driver deve essere in esecuzione in IRQL PASSIVE_LEVEL quando inoltra una richiesta di IRP_MJ_SYSTEM_CONTROL al driver inferiore successivo.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows 2000 e versioni successive di Windows.
piattaforma di destinazione Universale
intestazione wmilib.h (include Wmilib.h)
libreria Wmilib.lib
IRQL PASSIVE_LEVEL (vedere la sezione Osservazioni)
regole di conformità DDI wmiComplete(wdm)

Vedere anche

DpWmiExecuteMethod

DpWmiFunctionControl

DpWmiQueryDataBlock

DpWmiQueryReginfo

DpWmiSetDataBlock

DpWmiSetDataItem

IRP_MJ_SYSTEM_CONTROL

IRP_MN_REGINFO_EX

IoCompleteRequest

WMILIB_CONTEXT