WMI_SET_DATAITEM_CALLBACK funzione di callback (wmilib.h)
La routine DpWmiSetDataItem modifica un singolo elemento di dati in un'istanza di un blocco di dati. Questa routine è facoltativa.
Sintassi
WMI_SET_DATAITEM_CALLBACK WmiSetDataitemCallback;
NTSTATUS WmiSetDataitemCallback(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp,
[in] ULONG GuidIndex,
[in] ULONG InstanceIndex,
[in] ULONG DataItemId,
[in] ULONG BufferSize,
[in] PUCHAR Buffer
)
{...}
Parametri
[in] DeviceObject
Puntatore alla struttura WDM del driver DEVICE_OBJECT.
[in] Irp
Puntatore all'IRP.
[in] GuidIndex
Specifica il blocco di dati specificando un indice in base zero nell'elenco di GUID forniti dal driver nella struttura WMILIB_CONTEXT passata a WmiSystemControl.
[in] InstanceIndex
Se il blocco specificato da GuidIndex include più istanze, InstanceIndex è un valore in base zero che specifica l'istanza.
[in] DataItemId
Specifica l'ID dell'elemento di dati da impostare.
[in] BufferSize
Specifica le dimensioni in byte del buffer in Buffer.
[in] Buffer
Puntatore a un buffer contenente il nuovo valore per l'elemento di dati.
Valore restituito
DpWmiSetDataItem restituisce STATUS_SUCCESS o un codice di errore appropriato, ad esempio quanto segue:
Commenti
WMI chiama la routine DpWmiSetDataItem di un driver dopo che il driver chiama WmiSystemControl in risposta a una richiesta di IRP_MN_CHANGE_SINGLE_ITEM .
Non implementare DpWmiSetDataItem a meno che non si sia certi che un componente in modalità utente fornito dal sistema richieda questa funzionalità. Se si implementa una routine DpWmiSetDataItem , il driver deve inserire l'indirizzo della routine nel membro SetWmiDataItem della struttura WMILIB_CONTEXT che passa a WmiSystemControl. Se non si implementa una routine DpWmiSetDataItem , il driver deve impostare SetWmiDataItem su NULL. In quest'ultimo caso, WMI restituisce STATUS_READ_ONLY al chiamante.
Il driver è responsabile della convalida di tutti gli argomenti di input. In particolare, il driver deve eseguire le operazioni seguenti:
- Verificare che il valore GuidIndex sia compreso tra zero e GuidCount-1, in base al membro GuidCount della struttura WMILIB_CONTEXT .
- Verificare che il driver non abbia contrassegnato il blocco di dati specificato per la rimozione. Se il driver ha specificato di recente il flag WMIREG_FLAG_REMOVE_GUID in una struttura WMIGUIDREGINFO contenuta in una struttura WMILIB_CONTEXT , è possibile che una richiesta impostata venga visualizzata prima che si verifichi la rimozione.
- Verificare che il valore InstanceIndex sia compreso nell'intervallo di indici di istanza supportati dal driver per il blocco di dati.
- Verificare che il valore DataItemId sia compreso nell'intervallo di identificatori dell'elemento di dati supportati dal driver per il blocco di dati.
- Verificare che Buffer e BufferSize descrivono un elemento dati di dimensioni valide e che il contenuto del buffer sia valido per l'elemento dati.
- Verificare che l'elemento di dati specificato sia uno per cui il driver consente modifiche avviate dal chiamante. In altre parole, il driver non deve consentire modifiche agli elementi di dati che si intende essere di sola lettura.
Questa routine può essere paginabile.
Per altre informazioni sull'implementazione di questa routine, vedere Chiamata di WmiSystemControl per gestire i provider di accesso WMI.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | wmilib.h (includere Wmilib.h) |
IRQL | Chiamato in PASSIVE_LEVEL. |