ControlCallback callback function
Providers implement this function to receive enable or disable notification requests from controllers.
The WMIDPREQUEST type defines a pointer to this callback function. ControlCallback is a placeholder for the application-defined function name.
ULONG WINAPI ControlCallback( _In_ WMIDPREQUESTCODE RequestCode, _In_ PVOID Context, _In_ ULONG *Reserved, _In_ PVOID Buffer );
- RequestCode [in]
Request code. Specify one of the following values.
Enables the provider.
Disables the provider.
- Context [in]
Provider-defined context. The provider uses the RequestContext parameter of RegisterTraceGuids to specify the context.
- Reserved [in]
Reserved for internal use.
- Buffer [in]
Pointer to a WNODE_HEADER structure that contains information about the event tracing session for which the provider is being enabled or disabled.
You should return ERROR_SUCCESS if the callback succeeds. Note that ETW ignores the return value for this function except when a controller calls EnableTrace to enable a provider and the provider has not yet called RegisterTraceGuids. When this occurs, RegisterTraceGuids will return the return value of this callback if the registration was successful.
This function is specified using the RegisterTraceGuids function. When the controller calls the EnableTrace function to enable, disable, or change the enable flags or level, ETW calls this callback. The provider enables or disables itself based the RequestCode value. Typically, the provider uses this value to set a global flag to indicate its enabled state.
The provider defines its interpretation of being enabled or disabled. Generally, if a provider is enabled, it generates events, but while it is disabled, it does not.
ETW does not pass the enable flags and enable level that the controller passes to the EnableTrace function to this callback. To retrieve this information, call the GetTraceEnableFlags and GetTraceEnableLevel functions, respectively.
You also need to retrieve the session handle in this callback for future calls. To retrieve the session handle, call the GetTraceLoggerHandle function.
Your callback function must not call anything that may incur LoadLibrary (more specifically, anything that requires a loader lock).
For an example implementation of a ControlCallback function, see Writing Classic Events.
Minimum supported client
Windows 2000 Professional [desktop apps | Windows Store apps]
Minimum supported server
Windows 2000 Server [desktop apps | Windows Store apps]