mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 05:51:44 +00:00
[WDF] Add Windows Driver Framework files
Takern from Microsoft GitHub repo:
d9c6040fe9
Licensed under MIT
This commit is contained in:
parent
545df81502
commit
8a978a179f
475 changed files with 285099 additions and 0 deletions
295
sdk/lib/drivers/wdf/shared/inc/private/common/fxwmiprovider.hpp
Normal file
295
sdk/lib/drivers/wdf/shared/inc/private/common/fxwmiprovider.hpp
Normal file
|
@ -0,0 +1,295 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
FxWmiDataBlock.hpp
|
||||
|
||||
Abstract:
|
||||
|
||||
This module implements the WMI data block object
|
||||
|
||||
Author:
|
||||
|
||||
|
||||
|
||||
|
||||
Environment:
|
||||
|
||||
Both kernel and user mode
|
||||
|
||||
Revision History:
|
||||
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _FXWMIPROVIDER_H_
|
||||
#define _FXWMIPROVIDER_H_
|
||||
|
||||
|
||||
struct FxWmiProviderFunctionControlCallback : public FxCallback {
|
||||
|
||||
PFN_WDF_WMI_PROVIDER_FUNCTION_CONTROL m_Method;
|
||||
|
||||
FxWmiProviderFunctionControlCallback(
|
||||
PFX_DRIVER_GLOBALS FxDriverGlobals
|
||||
) :
|
||||
FxCallback(FxDriverGlobals),
|
||||
m_Method(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
~FxWmiProviderFunctionControlCallback()
|
||||
{
|
||||
}
|
||||
|
||||
_Must_inspect_result_
|
||||
NTSTATUS
|
||||
Invoke(
|
||||
__in WDFDEVICE Device,
|
||||
__in WDFWMIPROVIDER WmiProvider,
|
||||
__in WDF_WMI_PROVIDER_CONTROL Control,
|
||||
__in BOOLEAN Enable
|
||||
)
|
||||
{
|
||||
NTSTATUS status;
|
||||
|
||||
UNREFERENCED_PARAMETER(Device);
|
||||
|
||||
if (m_Method != NULL) {
|
||||
CallbackStart();
|
||||
status = m_Method(WmiProvider, Control, Enable);
|
||||
CallbackEnd();
|
||||
}
|
||||
else {
|
||||
status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
};
|
||||
|
||||
class FxWmiProvider : public FxNonPagedObject {
|
||||
|
||||
friend FxWmiIrpHandler;
|
||||
|
||||
public:
|
||||
FxWmiProvider(
|
||||
__in PFX_DRIVER_GLOBALS FxDriverGlobals,
|
||||
__in PWDF_WMI_PROVIDER_CONFIG Config,
|
||||
__in CfxDevice* Device
|
||||
);
|
||||
|
||||
~FxWmiProvider();
|
||||
|
||||
static
|
||||
_Must_inspect_result_
|
||||
NTSTATUS
|
||||
_Create(
|
||||
__in PFX_DRIVER_GLOBALS CallersGlobals,
|
||||
__in WDFDEVICE Device,
|
||||
__in_opt PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
|
||||
__in PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
|
||||
__out WDFWMIPROVIDER* WmiProvider,
|
||||
__out FxWmiProvider** Provider
|
||||
);
|
||||
|
||||
CfxDevice*
|
||||
GetDevice(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_Parent->GetDevice();
|
||||
}
|
||||
|
||||
GUID*
|
||||
GetGUID(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return &m_Guid;
|
||||
}
|
||||
|
||||
ULONG
|
||||
GetFlags(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_Flags;
|
||||
}
|
||||
|
||||
ULONG
|
||||
GetMinInstanceBufferSize(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_MinInstanceBufferSize;
|
||||
}
|
||||
|
||||
ULONG
|
||||
GetRegistrationFlagsLocked(
|
||||
VOID
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
IsEventOnly(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return FLAG_TO_BOOL(m_Flags, WdfWmiProviderEventOnly);
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
IsEnabled(
|
||||
__in WDF_WMI_PROVIDER_CONTROL Control
|
||||
)
|
||||
{
|
||||
switch (Control) {
|
||||
case WdfWmiEventControl: return m_EventControlEnabled;
|
||||
case WdfWmiInstanceControl: return m_DataBlockControlEnabled;
|
||||
default: ASSERT(FALSE); return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
ULONGLONG
|
||||
GetTracingHandle(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_TracingHandle;
|
||||
}
|
||||
|
||||
VOID
|
||||
SetTracingHandle(
|
||||
__in ULONGLONG TracingHandle
|
||||
)
|
||||
{
|
||||
m_TracingHandle = TracingHandle;
|
||||
}
|
||||
|
||||
WDFWMIPROVIDER
|
||||
GetHandle(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return (WDFWMIPROVIDER) GetObjectHandle();
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
IsFunctionControlSupported(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_FunctionControl.m_Method != NULL;
|
||||
}
|
||||
|
||||
_Must_inspect_result_
|
||||
NTSTATUS
|
||||
FunctionControl(
|
||||
__in WDF_WMI_PROVIDER_CONTROL Control,
|
||||
__in BOOLEAN Enable
|
||||
);
|
||||
|
||||
_Must_inspect_result_
|
||||
NTSTATUS
|
||||
AddInstance(
|
||||
__in FxWmiInstance* Instance,
|
||||
__in BOOLEAN NoErrorIfPresent = FALSE
|
||||
);
|
||||
|
||||
VOID
|
||||
RemoveInstance(
|
||||
__in FxWmiInstance* Instance
|
||||
);
|
||||
|
||||
ULONG
|
||||
GetInstanceIndex(
|
||||
__in FxWmiInstance* Instance
|
||||
);
|
||||
|
||||
_Must_inspect_result_
|
||||
FxWmiInstance*
|
||||
GetInstanceReferenced(
|
||||
__in ULONG Index,
|
||||
__in PVOID Tag
|
||||
);
|
||||
|
||||
_Must_inspect_result_
|
||||
FxWmiInstance*
|
||||
GetInstanceReferencedLocked(
|
||||
__in ULONG Index,
|
||||
__in PVOID Tag
|
||||
);
|
||||
|
||||
// begin FxObject overrides
|
||||
virtual
|
||||
BOOLEAN
|
||||
Dispose(
|
||||
VOID
|
||||
);
|
||||
// end FxObject overrides
|
||||
|
||||
protected:
|
||||
enum AddInstanceAction {
|
||||
AddInstanceToTail,
|
||||
AddInstanceToHead
|
||||
};
|
||||
|
||||
_Must_inspect_result_
|
||||
NTSTATUS
|
||||
AddInstanceLocked(
|
||||
__in FxWmiInstance* Instance,
|
||||
__in BOOLEAN NoErrorIfPresent,
|
||||
__out PBOOLEAN Update,
|
||||
__in AddInstanceAction Action = AddInstanceToTail
|
||||
);
|
||||
|
||||
protected:
|
||||
//
|
||||
// List entry used by FxWmiIrpHandler to hold the list of WMI providers
|
||||
//
|
||||
LIST_ENTRY m_ListEntry;
|
||||
|
||||
LIST_ENTRY m_InstanceListHead;
|
||||
|
||||
ULONG m_NumInstances;
|
||||
|
||||
FxWmiIrpHandler* m_Parent;
|
||||
|
||||
GUID m_Guid;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ULONGLONG m_TracingHandle;
|
||||
|
||||
ULONG m_MinInstanceBufferSize;
|
||||
|
||||
union {
|
||||
//
|
||||
// Set with values from WDF_WMI_PROVIDER_FLAGS
|
||||
//
|
||||
ULONG m_Flags;
|
||||
|
||||
//
|
||||
// Not used by the code, but by the debug extension
|
||||
//
|
||||
struct {
|
||||
ULONG EventOnly : 1;
|
||||
ULONG Expensive : 1;
|
||||
ULONG Tracing : 1;
|
||||
} m_FlagsByName;
|
||||
};
|
||||
|
||||
FxWmiProviderFunctionControlCallback m_FunctionControl;
|
||||
|
||||
BOOLEAN m_EventControlEnabled;
|
||||
|
||||
BOOLEAN m_DataBlockControlEnabled;
|
||||
|
||||
BOOLEAN m_RemoveGuid;
|
||||
};
|
||||
|
||||
#endif // _FXWMIPROVIDER_H_
|
Loading…
Add table
Add a link
Reference in a new issue