ReactOS  0.4.15-dev-3303-g1ade494
FxWmiInstanceExternal Class Reference

#include <fxwmiinstance.hpp>

Inheritance diagram for FxWmiInstanceExternal:
Collaboration diagram for FxWmiInstanceExternal:

Public Member Functions

 FxWmiInstanceExternal (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_WMI_INSTANCE_CONFIG Config, __in FxWmiProvider *Provider)
 
VOID SetContextForQueryLength (__in ULONG ContextSize)
 
- Public Member Functions inherited from FxWmiInstance
 FxWmiInstance (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT ObjectSize, __in FxWmiProvider *Provider)
 
 ~FxWmiInstance ()
 
CfxDeviceGetDevice (VOID)
 
FxWmiProviderGetProvider (VOID)
 
_Must_inspect_result_ NTSTATUS FireEvent (__in_bcount_opt(EventBufferSize) PVOID EventBuffer, __inout ULONG EventBufferSize)
 
BOOLEAN IsEnabled (__in WDF_WMI_PROVIDER_CONTROL Control)
 
WDFWMIINSTANCE GetHandle (VOID)
 
virtual _Must_inspect_result_ __drv_sameIRQL __out_bcount_part (OutBufferSize, *BufferUsed) PVOID OutBuffer
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG __drv_when (InBufferSize >=OutBufferSize, __inout_bcount(InBufferSize)) __drv_when(InBufferSize< OutBufferSize
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG __inout_bcount (OutBufferSize)) PVOID Buffer
 
virtual BOOLEAN Dispose (VOID)
 
- Public Member Functions inherited from FxNonPagedObject
 FxNonPagedObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals)
 
 FxNonPagedObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObjectType ObjectType)
 
virtual ~FxNonPagedObject (VOID)
 
 _Acquires_lock_ (this->m_NPLock.m_Lock) __drv_maxIRQL(DISPATCH_LEVEL) __drv_setsIRQL(DISPATCH_LEVEL) VOID Lock(__out __drv_deref(__drv_savesIRQL) PKIRQL PreviousIrql)
 
 _Releases_lock_ (this->m_NPLock.m_Lock) __drv_requiresIRQL(DISPATCH_LEVEL) __inline VOID Unlock(__in __drv_restoresIRQL KIRQL PreviousIrql)
 
 _Acquires_lock_ (this->m_NPLock.m_Lock) __drv_requiresIRQL(DISPATCH_LEVEL) VOID LockAtDispatch(VOID)
 
 _Requires_lock_held_ (this->m_NPLock.m_Lock) _Releases_lock_(this -> m_NPLock.m_Lock) __drv_requiresIRQL(DISPATCH_LEVEL) __inline VOID UnlockFromDispatch(VOID)
 
- Public Member Functions inherited from FxObject
PVOID GetCOMWrapper ()
 
void SetCOMWrapper (__drv_aliasesMem PVOID Wrapper)
 
 FxObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals)
 
virtual ~FxObject (VOID)
 
PVOID __inline operator new (__in size_t Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObjectType Type)
 
PVOID __inline operator new (__in size_t Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __in USHORT ExtraSize=0)
 
VOID operator delete (__in PVOID Memory)
 
VOID SetNoContextHeader (VOID)
 
PVOID __inline GetObjectHandle (VOID)
 
__inline FxContextHeaderGetContextHeader (VOID)
 
__inline PFX_DRIVER_GLOBALS GetDriverGlobals (VOID)
 
WDFTYPE GetType (VOID)
 
USHORT GetObjectSize (VOID)
 
LONG GetRefCnt (VOID)
 
FxTagTrackerGetTagTracker (VOID)
 
CfxDeviceGetDevice (VOID)
 
CfxDeviceBaseGetDeviceBase (VOID)
 
VOID SetDeviceBase (__in CfxDeviceBase *DeviceBase)
 
__inline VOID CallCleanup (VOID)
 
ULONG __inline AddRef (__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
 
virtual ULONG Release (__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
 
virtual ULONG AddRefOverride (__in WDFOBJECT_OFFSET Offset, __in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
 
virtual ULONG ReleaseOverride (__in WDFOBJECT_OFFSET Offset, __in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
 
virtual _Must_inspect_result_ NTSTATUS QueryInterface (__in FxQueryInterfaceParams *Params)
 
VOID MarkTraceState (VOID)
 
BOOLEAN __inline IsTraceState (VOID)
 
VOID __inline TraceDroppedEvent (__in FxObjectDroppedEvent Event)
 
VOID MarkPassiveDispose (__in FxObjectLockState State=ObjectLock)
 
VOID MarkPassiveCallbacks (__in FxObjectLockState State=ObjectLock)
 
VOID MarkForceDisposeThread (__in FxObjectLockState State=ObjectLock)
 
BOOLEAN IsPassiveCallbacks (__in BOOLEAN AcquireLock=TRUE)
 
BOOLEAN IsPassiveDispose (__in BOOLEAN AcquireLock=TRUE)
 
BOOLEAN IsForceDisposeThread (__in BOOLEAN AcquireLock=TRUE)
 
VOID MarkCommitted (VOID)
 
BOOLEAN IsCommitted (VOID)
 
VOID MarkDisposeOverride (__in FxObjectLockState State=ObjectLock)
 
VOID MarkNoDeleteDDI (__in FxObjectLockState State=ObjectLock)
 
BOOLEAN IsNoDeleteDDI (VOID)
 
_Must_inspect_result_ NTSTATUS Commit (__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
 
VOID DeleteFromFailedCreate (VOID)
 
VOID ClearEvtCallbacks (VOID)
 
BOOLEAN EarlyDispose (VOID)
 
virtual VOID DeleteObject (VOID)
 
_Must_inspect_result_ NTSTATUS AssignParentObject (__in FxObject *ParentObject)
 
_Must_inspect_result_ NTSTATUS AddContext (__in FxContextHeader *Header, __in PVOID *Context, __in PWDF_OBJECT_ATTRIBUTES Attributes)
 
_Must_inspect_result_ NTSTATUS RemoveParentAssignment (VOID)
 
_Must_inspect_result_ FxObjectGetParentObjectReferenced (__in PVOID Tag)
 
BOOLEAN IsDisposed (VOID)
 

Static Public Member Functions

static _Must_inspect_result_ NTSTATUS _Create (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxWmiProvider *Provider, __in PWDF_WMI_INSTANCE_CONFIG WmiInstanceConfig, __in_opt PWDF_OBJECT_ATTRIBUTES InstanceAttributes, __out WDFWMIINSTANCE *WmiInstance, __out FxWmiInstanceExternal **Instance)
 
- Static Public Member Functions inherited from FxObject
static FxObject_FromDisposeEntry (__in PSINGLE_LIST_ENTRY Entry)
 
static FxObject_GetObjectFromHandle (__in WDFOBJECT Handle, __inout PWDFOBJECT_OFFSET ObjectOffset)
 
static PVOID __inline _ToHandle (__in FxObject *Object)
 
static VOID __inline _ReferenceActual (__in WDFOBJECT Object, __in_opt PVOID Tag, __in LONG Line, __in PSTR File)
 
static VOID __inline _DereferenceActual (__in WDFOBJECT Object, __in_opt PVOID Tag, __in LONG Line, __in PSTR File)
 
static PVOID _GetDebugBase (__in FxObject *Object)
 
static PFX_POOL_HEADER _CleanupPointer (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObject *Object)
 
static _Must_inspect_result_ NTSTATUS _GetEffectiveLock (__in FxObject *Object, __in_opt IFxHasCallbacks *Callbacks, __in BOOLEAN AutomaticLocking, __in BOOLEAN PassiveCallbacks, __out FxCallbackLock **CallbackLock, __out_opt FxObject **CallbackLockObject)
 
static _Must_inspect_result_ NTSTATUS _ObjectQuery (_In_ FxObject *Object, _In_ CONST GUID *Guid, _In_ ULONG QueryBufferLength, _Out_writes_bytes_(QueryBufferLength) PVOID QueryBuffer)
 

Protected Member Functions

virtual BOOLEAN IsQueryInstanceSupported (VOID)
 
virtual _Must_inspect_result_ __drv_sameIRQL __drv_maxIRQL (PASSIVE_LEVEL) NTSTATUS QueryInstance(__inout ULONG OutBufferSize
 
virtual _Must_inspect_result_ __drv_sameIRQL __out_xcount (OutBuffer->size) PVOID OutBuffer
 
virtual BOOLEAN IsSetInstanceSupported (VOID)
 
virtual _Must_inspect_result_ __drv_sameIRQL __drv_maxIRQL (PASSIVE_LEVEL) NTSTATUS SetInstance(__in ULONG InBufferSize
 
virtual _Must_inspect_result_ __drv_sameIRQL __in_bcount (InBufferSize) PVOID InBuffer)
 
virtual BOOLEAN IsSetItemSupported (VOID)
 
virtual _Must_inspect_result_ __drv_sameIRQL __drv_maxIRQL (PASSIVE_LEVEL) NTSTATUS SetItem(__in ULONG DataItemId
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __in_bcount (InBufferSize) PVOID InBuffer)
 
virtual BOOLEAN IsExecuteMethodSupported (VOID)
 
virtual _Must_inspect_result_ __drv_sameIRQL __drv_maxIRQL (PASSIVE_LEVEL) NTSTATUS ExecuteMethod(__in ULONG MethodId
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG __drv_when (InBufferSize >=OutBufferSize, __inout_bcount(InBufferSize)) __drv_when(InBufferSize< OutBufferSize
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG __inout_bcount (OutBufferSize)) PVOID Buffer
 
- Protected Member Functions inherited from FxObject
 FxObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObjectType ObjectType)
 
FxObjectDebugExtensionGetDebugExtension (VOID)
 
BOOLEAN IsDebug (VOID)
 
VOID AllocateTagTracker (__in WDFTYPE Type)
 
virtual VOID SelfDestruct (VOID)
 
PVOID __inline GetObjectHandleUnchecked (VOID)
 
VOID __inline DestroyChildren (VOID)
 
VOID DeleteEarlyDisposedObject (VOID)
 

Protected Attributes

virtual _Must_inspect_result_ __drv_sameIRQL __out PULONG BufferUsed
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG InBufferSize
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG OutBufferSize
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG __out PULONG BufferUsed
 
FxWmiInstanceQueryInstanceCallback m_QueryInstanceCallback
 
FxWmiInstanceSetInstanceCallback m_SetInstanceCallback
 
FxWmiInstanceSetItemCallback m_SetItemCallback
 
FxWmiInstanceExecuteMethodCallback m_ExecuteMethodCallback
 
ULONG m_ContextLength
 
BOOLEAN m_UseContextForQuery
 
- Protected Attributes inherited from FxWmiInstance
LIST_ENTRY m_ListEntry
 
FxWmiProviderm_Provider
 
- Protected Attributes inherited from FxObject
union {
   CfxDeviceBase *   m_DeviceBase
 
   CfxDevice *   m_Device
 
}; 
 

Additional Inherited Members

- Public Attributes inherited from FxWmiInstance
virtual _Must_inspect_result_ __drv_sameIRQL __out PULONG BufferUsed =0
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG InBufferSize
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG OutBufferSize
 
virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG __out PULONG BufferUsed =0
 
- Static Protected Member Functions inherited from FxObject
static PVOID _GetBase (__in FxObject *Object)
 

Detailed Description

Definition at line 370 of file fxwmiinstance.hpp.

Constructor & Destructor Documentation

◆ FxWmiInstanceExternal()

FxWmiInstanceExternal::FxWmiInstanceExternal ( __in PFX_DRIVER_GLOBALS  FxDriverGlobals,
__in PWDF_WMI_INSTANCE_CONFIG  Config,
__in FxWmiProvider Provider 
)

Definition at line 128 of file fxwmiinstance.cpp.

132  :
133  FxWmiInstance(FxDriverGlobals, sizeof(FxWmiInstanceExternal), Provider),
134  m_QueryInstanceCallback(FxDriverGlobals),
135  m_SetInstanceCallback(FxDriverGlobals),
136  m_SetItemCallback(FxDriverGlobals),
137  m_ExecuteMethodCallback(FxDriverGlobals)
138 {
139  m_ContextLength = 0;
140  m_UseContextForQuery = Config->UseContextForQuery;
141 
142  if (m_UseContextForQuery == FALSE) {
143  m_QueryInstanceCallback.m_Method = Config->EvtWmiInstanceQueryInstance;
144  }
145  m_SetInstanceCallback.m_Method = Config->EvtWmiInstanceSetInstance;
146  m_SetItemCallback.m_Method = Config->EvtWmiInstanceSetItem;
147 
148  m_ExecuteMethodCallback.m_Method = Config->EvtWmiInstanceExecuteMethod;
149 }
PFN_WDF_WMI_INSTANCE_EXECUTE_METHOD m_Method
FxWmiInstanceSetInstanceCallback m_SetInstanceCallback
#define FALSE
Definition: types.h:117
PFN_WDF_WMI_INSTANCE_SET_INSTANCE m_Method
PFN_WDF_WMI_INSTANCE_SET_ITEM m_Method
PFN_WDF_WMI_INSTANCE_QUERY_INSTANCE m_Method
FxWmiInstanceQueryInstanceCallback m_QueryInstanceCallback
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
Definition: wdfchildlist.h:474
FxWmiInstance(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT ObjectSize, __in FxWmiProvider *Provider)
FxWmiInstanceExecuteMethodCallback m_ExecuteMethodCallback
FxWmiInstanceSetItemCallback m_SetItemCallback

Referenced by _Create().

Member Function Documentation

◆ __drv_maxIRQL() [1/4]

virtual _Must_inspect_result_ __drv_sameIRQL FxWmiInstanceExternal::__drv_maxIRQL ( PASSIVE_LEVEL  )
protectedvirtual

Reimplemented from FxWmiInstance.

◆ __drv_maxIRQL() [2/4]

virtual _Must_inspect_result_ __drv_sameIRQL FxWmiInstanceExternal::__drv_maxIRQL ( PASSIVE_LEVEL  )
protectedvirtual

Reimplemented from FxWmiInstance.

◆ __drv_maxIRQL() [3/4]

virtual _Must_inspect_result_ __drv_sameIRQL FxWmiInstanceExternal::__drv_maxIRQL ( PASSIVE_LEVEL  )
protectedvirtual

Reimplemented from FxWmiInstance.

◆ __drv_maxIRQL() [4/4]

virtual _Must_inspect_result_ __drv_sameIRQL FxWmiInstanceExternal::__drv_maxIRQL ( PASSIVE_LEVEL  )
protectedvirtual

Reimplemented from FxWmiInstance.

◆ __drv_when()

virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG FxWmiInstanceExternal::__drv_when ( InBufferSize >=  OutBufferSize,
__inout_bcount(InBufferSize  
)
protected

◆ __in_bcount() [1/2]

virtual _Must_inspect_result_ __drv_sameIRQL FxWmiInstanceExternal::__in_bcount ( InBufferSize  )
protectedvirtual

Implements FxWmiInstance.

◆ __in_bcount() [2/2]

virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG FxWmiInstanceExternal::__in_bcount ( InBufferSize  )
protectedvirtual

Implements FxWmiInstance.

◆ __inout_bcount()

virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG FxWmiInstanceExternal::__inout_bcount ( OutBufferSize  )
protected

◆ __out_xcount()

virtual _Must_inspect_result_ __drv_sameIRQL FxWmiInstanceExternal::__out_xcount ( OutBuffer->  size)
protected

◆ _Create()

_Must_inspect_result_ NTSTATUS FxWmiInstanceExternal::_Create ( __in PFX_DRIVER_GLOBALS  FxDriverGlobals,
__in FxWmiProvider Provider,
__in PWDF_WMI_INSTANCE_CONFIG  WmiInstanceConfig,
__in_opt PWDF_OBJECT_ATTRIBUTES  InstanceAttributes,
__out WDFWMIINSTANCE *  WmiInstance,
__out FxWmiInstanceExternal **  Instance 
)
static

Definition at line 153 of file fxwmiinstance.cpp.

161 {
163  WDFWMIINSTANCE hInstance;
165  size_t contextSize;
166 
167  contextSize = 0;
168  *Instance = 0;
169 
170  *WmiInstance = NULL;
171 
172  //
173  // For event only providers, you cannot specify any callbacks or context
174  // usage.
175  //
176  if (Provider->IsEventOnly() &&
177  (WmiInstanceConfig->UseContextForQuery ||
178  WmiInstanceConfig->EvtWmiInstanceQueryInstance != NULL ||
179  WmiInstanceConfig->EvtWmiInstanceSetInstance != NULL ||
180  WmiInstanceConfig->EvtWmiInstanceSetItem != NULL ||
181  WmiInstanceConfig->EvtWmiInstanceExecuteMethod != NULL)) {
182 
184 
186  FxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGDEVICE,
187  "WDFWMIPROVIDER %p is event only and UseContextForQuery (%d) is TRUE,"
188  " or a callback (query instance %p, set instance %p, set item %p, "
189  "executue method %p) is not NULL, %!STATUS!",
190  Provider->GetHandle(), WmiInstanceConfig->UseContextForQuery,
191  WmiInstanceConfig->EvtWmiInstanceQueryInstance,
192  WmiInstanceConfig->EvtWmiInstanceSetInstance,
193  WmiInstanceConfig->EvtWmiInstanceSetItem,
194  WmiInstanceConfig->EvtWmiInstanceExecuteMethod, status);
195 
196  return status;
197  }
198 
199  status = FxValidateObjectAttributes(FxDriverGlobals,
202  if (!NT_SUCCESS(status)) {
203  return status;
204  }
205 
206  if (WmiInstanceConfig->UseContextForQuery) {
207  //
208  // UseContextForQuery only supported for read only instances.
209  // ExecuteMethod has undefined side affects, so we allow it.
210  //
211  if (WmiInstanceConfig->EvtWmiInstanceSetInstance != NULL ||
212  WmiInstanceConfig->EvtWmiInstanceSetItem != NULL) {
214 
216  FxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGDEVICE,
217  "UseContextForQuery set, i.e. a read only instance, but "
218  "EvtWmiInstanceSetInstance %p or EvtWmiInstanceSetItem %p is "
219  "set, %!STATUS!",
220  WmiInstanceConfig->EvtWmiInstanceSetInstance,
221  WmiInstanceConfig->EvtWmiInstanceSetItem, status);
222 
223  return status;
224  }
225 
226  //
227  // We must have a context to use for the query
228  //
229  if (InstanceAttributes == NULL ||
230  InstanceAttributes->ContextTypeInfo == NULL) {
232 
234  FxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGDEVICE,
235  "UseContextForQuery set, but InstanceAttributes %p is null or "
236  "there is no associated type, %!STATUS!",
238 
239  return status;
240  }
241 
242  contextSize = InstanceAttributes->ContextTypeInfo->ContextSize;
243 
244  if (InstanceAttributes->ContextSizeOverride != 0) {
245  status = RtlSizeTAdd(contextSize,
246  InstanceAttributes->ContextSizeOverride,
247  &contextSize);
248  if (!NT_SUCCESS(status)) {
250  FxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGDEVICE,
251  "Overlfow adding contextSize %I64d with size override %I64d, "
252  "%!STATUS!", contextSize,
253  InstanceAttributes->ContextSizeOverride, status);
254 
255  return status;
256  }
257  }
258 
259  if (contextSize > ULONG_MAX) {
260  //
261  // Since we are casting to a ULONG below, detect loss of data here
262  // (only really applicable on 64 bit machines where sizeof(size_t) !=
263  // sizeof(ULONG)
264  //
266 
268  FxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGDEVICE,
269  "context size %I64d can be %d large, %!STATUS!",
270  contextSize, ULONG_MAX, status);
271 
272  return status;
273  }
274 
275  //
276  // Make sure the context is the minimum the buffer size.
277  //
278  if (contextSize < Provider->GetMinInstanceBufferSize()) {
280 
282  FxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGDEVICE,
283  "context size %I64d is less then the WDFWMIPROVIDER %p min size "
284  "of %d, %!STATUS!",
285  contextSize, Provider->GetHandle(),
286  Provider->GetMinInstanceBufferSize(), status);
287 
288  return status;
289  }
290  }
291 
292  pInstance = new(FxDriverGlobals, InstanceAttributes)
293  FxWmiInstanceExternal(FxDriverGlobals, WmiInstanceConfig, Provider);
294 
295  if (pInstance == NULL) {
297 
299  FxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGDEVICE,
300  "could not allocate memory for WDFWMIINSTANCE, %!STATUS!",
301  status);
302 
303  return status;
304  }
305 
306  if (contextSize > 0) {
307  pInstance->SetContextForQueryLength((ULONG) contextSize);
308  }
309 
310  if (NT_SUCCESS(status)) {
313 
314  if (NT_SUCCESS(status)) {
315  //
316  // Assign the handle back to the caller.
317  //
319  }
320  else {
321  //
322  // On failure, DeleteFromFailedCreate will delete the object and
323  // the Dispose callback will remove the instance from the provider's
324  // list.
325  //
326  DO_NOTHING();
327  }
328  }
329 
330  if (NT_SUCCESS(status)) {
331  *Instance = pInstance;
332  }
333  else {
335  }
336 
337  return status;
338 }
FxWmiInstanceExternal(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_WMI_INSTANCE_CONFIG Config, __in FxWmiProvider *Provider)
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
Definition: fxobject.cpp:904
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_WMI_INSTANCE_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES InstanceAttributes
Definition: wdfwmi.h:474
_Must_inspect_result_ _In_ WDFWMIINSTANCE WmiInstance
Definition: wdfwmi.h:514
#define STATUS_BUFFER_TOO_SMALL
Definition: shellext.h:69
HINSTANCE hInstance
Definition: charmap.c:20
#define STATUS_INTEGER_OVERFLOW
Definition: ntstatus.h:385
#define TRACINGDEVICE
Definition: dbgtrace.h:58
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
_Must_inspect_result_ NTSTATUS FxValidateObjectAttributes(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in ULONG Flags=FX_VALIDATE_OPTION_NONE_SPECIFIED)
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
FxWmiInstanceExternal * pInstance
Definition: fxwmiapi.cpp:113
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
#define NULL
Definition: types.h:112
VOID SetContextForQueryLength(__in ULONG ContextSize)
VOID DeleteFromFailedCreate(VOID)
Definition: fxobject.cpp:391
unsigned int ULONG
Definition: retypes.h:1
static SERVICE_STATUS status
Definition: service.c:31
IN PVOID Instance
Definition: pci.h:361
#define ULONG_MAX
Definition: limits.h:44
#define DO_NOTHING()
Definition: mxgeneral.h:32
Definition: ps.c:97

◆ IsExecuteMethodSupported()

BOOLEAN FxWmiInstanceExternal::IsExecuteMethodSupported ( VOID  )
protectedvirtual

Implements FxWmiInstance.

Definition at line 537 of file fxwmiinstance.cpp.

540 {
542 }
PFN_WDF_WMI_INSTANCE_EXECUTE_METHOD m_Method
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
FxWmiInstanceExecuteMethodCallback m_ExecuteMethodCallback
#define NULL
Definition: types.h:112

◆ IsQueryInstanceSupported()

BOOLEAN FxWmiInstanceExternal::IsQueryInstanceSupported ( VOID  )
protectedvirtual

Implements FxWmiInstance.

Definition at line 341 of file fxwmiinstance.cpp.

344 {
345  //
346  // If we have a function pointer to call or we are using the context
347  // as the buffer, query instance is supported.
348  //
349  // Also, if neither of the first 2 are true, we need to support query
350  // instance if the device has an execute method callback b/c WMI will
351  // send a query instance to this instance which much succeed for the
352  // execute method irp to be sent.
353  //
354  return (m_UseContextForQuery ||
357  : FALSE;
358 }
PFN_WDF_WMI_INSTANCE_EXECUTE_METHOD m_Method
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
PFN_WDF_WMI_INSTANCE_QUERY_INSTANCE m_Method
FxWmiInstanceQueryInstanceCallback m_QueryInstanceCallback
FxWmiInstanceExecuteMethodCallback m_ExecuteMethodCallback
#define NULL
Definition: types.h:112

Referenced by FxWmiIrpHandler::_QueryAllData().

◆ IsSetInstanceSupported()

BOOLEAN FxWmiInstanceExternal::IsSetInstanceSupported ( VOID  )
protectedvirtual

Implements FxWmiInstance.

Definition at line 485 of file fxwmiinstance.cpp.

488 {
490 }
#define TRUE
Definition: types.h:120
FxWmiInstanceSetInstanceCallback m_SetInstanceCallback
#define FALSE
Definition: types.h:117
PFN_WDF_WMI_INSTANCE_SET_INSTANCE m_Method
#define NULL
Definition: types.h:112

◆ IsSetItemSupported()

BOOLEAN FxWmiInstanceExternal::IsSetItemSupported ( VOID  )
protectedvirtual

Implements FxWmiInstance.

Definition at line 510 of file fxwmiinstance.cpp.

513 {
514  return m_SetItemCallback.m_Method != NULL ? TRUE : FALSE;
515 }
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
PFN_WDF_WMI_INSTANCE_SET_ITEM m_Method
#define NULL
Definition: types.h:112
FxWmiInstanceSetItemCallback m_SetItemCallback

◆ SetContextForQueryLength()

VOID FxWmiInstanceExternal::SetContextForQueryLength ( __in ULONG  ContextSize)
inline

Definition at line 379 of file fxwmiinstance.hpp.

382  {
384  }
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T ContextSize
Definition: fltkernel.h:1443

Referenced by _Create().

Member Data Documentation

◆ BufferUsed [1/2]

virtual _Must_inspect_result_ __drv_sameIRQL __out PULONG FxWmiInstanceExternal::BufferUsed
protected

Definition at line 414 of file fxwmiinstance.hpp.

◆ BufferUsed [2/2]

virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG __out PULONG FxWmiInstanceExternal::BufferUsed
protected

Definition at line 468 of file fxwmiinstance.hpp.

◆ InBufferSize

_Must_inspect_result_ __drv_sameIRQL __in ULONG FxWmiInstanceExternal::InBufferSize
protected

Definition at line 445 of file fxwmiinstance.hpp.

◆ m_ContextLength

ULONG FxWmiInstanceExternal::m_ContextLength
protected

◆ m_ExecuteMethodCallback

FxWmiInstanceExecuteMethodCallback FxWmiInstanceExternal::m_ExecuteMethodCallback
protected

◆ m_QueryInstanceCallback

FxWmiInstanceQueryInstanceCallback FxWmiInstanceExternal::m_QueryInstanceCallback
protected

◆ m_SetInstanceCallback

FxWmiInstanceSetInstanceCallback FxWmiInstanceExternal::m_SetInstanceCallback
protected

Definition at line 476 of file fxwmiinstance.hpp.

Referenced by FxWmiInstanceExternal(), and IsSetInstanceSupported().

◆ m_SetItemCallback

FxWmiInstanceSetItemCallback FxWmiInstanceExternal::m_SetItemCallback
protected

Definition at line 478 of file fxwmiinstance.hpp.

Referenced by FxWmiInstanceExternal(), and IsSetItemSupported().

◆ m_UseContextForQuery

BOOLEAN FxWmiInstanceExternal::m_UseContextForQuery
protected

◆ OutBufferSize

virtual _Must_inspect_result_ __drv_sameIRQL __in ULONG __inout ULONG FxWmiInstanceExternal::OutBufferSize
protected

Definition at line 462 of file fxwmiinstance.hpp.


The documentation for this class was generated from the following files: