Hardware Dev Center

EvtWmiInstanceSetItem function

[Applies to KMDF only]

A driver's EvtWmiInstanceSetItem callback function sets a single item of a WMI data provider's instance data to a value that a WMI client supplies.



NTSTATUS EvtWmiInstanceSetItem(
  _In_ WDFWMIINSTANCE WmiInstance,
  _In_ ULONG          DataItemId,
  _In_ ULONG          InBufferSize,
  _In_ PVOID          InBuffer
{ ... }


WmiInstance [in]

A handle to a WMI instance object.

DataItemId [in]

A value that identifies an item of data for a provider instance. This value corresponds to the WmiDataId value that is specified in the provider's MOF file.

InBufferSize [in]

The size, in bytes, of the input buffer that InBuffer points to.

InBuffer [in]

A pointer to the input buffer.

Return value

The EvtWmiInstanceSetItem callback function must return STATUS_SUCCESS if the operation succeeds. Otherwise, this function must return a status value for which NT_SUCCESS(status) equals FALSE. If the input buffer that the InBuffer parameter points to is too small to contain all of the data that the driver expects, the callback function must return STATUS_WMI_SET_FAILURE.


To register an EvtWmiInstanceSetItem callback function, your driver must place the function's address in a WDF_WMI_INSTANCE_CONFIG structure before calling WdfWmiInstanceCreate.

The framework does not synchronize calls to a driver's WMI event callback functions with each other or with any of the driver's other event callback functions. If an EvtWmiInstanceSetItem callback function's data is dynamic and shared with other callback functions, your driver can use the framework's wait locks or spin locks to synchronize access to the data.

For more information about the EvtWmiInstanceSetItem callback function, see Supporting WMI in Framework-Based Drivers.


To define an EvtWmiInstanceSetItem callback function, you must first provide a function declaration that identifies the type of callback function you’re defining. Windows provides a set of callback function types for drivers. Declaring a function using the callback function types helps Code Analysis for Drivers, Static Driver Verifier (SDV), and other verification tools find errors, and it’s a requirement for writing drivers for the Windows operating system.

For example, to define an EvtWmiInstanceSetItem callback function that is named MyWmiInstanceSetItem, use the EVT_WDF_WMI_INSTANCE_SET_ITEM type as shown in this code example:

To define an EvtWmiInstanceSetItem callback function that is named MyWmiInstanceSetItem, you must first provide a function declaration that SDV and other verification tools require, as follows:


Then, implement your callback function as follows:

 MyWmiInstanceSetItem (
    WDFWMIINSTANCE  WmiInstance,
    ULONG  DataItemId,
    ULONG  InBufferSize,
    PVOID  InBuffer

The EVT_WDF_WMI_INSTANCE_SET_ITEM function type is defined in the WdfWMI.h header file. To more accurately identify errors when you run the code analysis tools, be sure to add the _Use_decl_annotations_ annotation to your function definition. The _Use_decl_annotations_ annotation ensures that the annotations that are applied to the EVT_WDF_WMI_INSTANCE_SET_ITEM function type in the header file are used. For more information about the requirements for function declarations, see Declaring Functions by Using Function Role Types for KMDF Drivers. For information about _Use_decl_annotations_, see Annotating Function Behavior.


Target platform


Minimum KMDF version



WdfWMI.h (include Wdf.h)



See also




Send comments about this topic to Microsoft

© 2015 Microsoft