ReactOS 0.4.15-dev-7953-g1f49173
CServiceGroup Class Reference
Inheritance diagram for CServiceGroup:
Collaboration diagram for CServiceGroup:

Public Member Functions

STDMETHODIMP QueryInterface (REFIID InterfaceId, PVOID *Interface)
 
 CServiceGroup (IUnknown *OuterUnknown)
 
virtual ~CServiceGroup ()
 
- Public Member Functions inherited from CUnknownImpl< IServiceGroup >
 STDMETHODIMP_ (ULONG) AddRef()
 
 STDMETHODIMP_ (ULONG) Release()
 

Public Attributes

 IMP_IServiceGroup
 

Protected Attributes

LIST_ENTRY m_ServiceSinkHead
 
BOOL m_TimerInitialized
 
KTIMER m_Timer
 
KDPC m_Dpc
 
KSPIN_LOCK m_Lock
 

Friends

VOID NTAPI IServiceGroupDpc (IN struct _KDPC *Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
 

Additional Inherited Members

- Protected Member Functions inherited from CUnknownImpl< IServiceGroup >
 CUnknownImpl ()
 
virtual ~CUnknownImpl ()
 

Detailed Description

Definition at line 29 of file service_group.cpp.

Constructor & Destructor Documentation

◆ CServiceGroup()

CServiceGroup::CServiceGroup ( IUnknown OuterUnknown)

Definition at line 83 of file service_group.cpp.

84{
85 // initialize dpc
87
88 // set highest importance
90
91 // initialize service group list lock
93
94 // initialize service group list
96}
friend VOID NTAPI IServiceGroupDpc(IN struct _KDPC *Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
KSPIN_LOCK m_Lock
LIST_ENTRY m_ServiceSinkHead
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
Definition: dpc.c:712
VOID NTAPI KeSetImportanceDpc(IN PKDPC Dpc, IN KDPC_IMPORTANCE Importance)
Definition: dpc.c:958
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
#define KeInitializeSpinLock(sl)
Definition: env_spec_w32.h:604
@ HighImportance
Definition: ketypes.h:695

◆ ~CServiceGroup()

virtual CServiceGroup::~CServiceGroup ( )
inlinevirtual

Definition at line 36 of file service_group.cpp.

36{}

Member Function Documentation

◆ QueryInterface()

NTSTATUS NTAPI CServiceGroup::QueryInterface ( REFIID  InterfaceId,
PVOID Interface 
)

Definition at line 56 of file service_group.cpp.

59{
61
62 if (IsEqualGUIDAligned(refiid, IID_IServiceGroup) ||
63 IsEqualGUIDAligned(refiid, IID_IServiceSink) ||
65 {
66 *Output = PVOID(PSERVICEGROUP(this));
67 PUNKNOWN(*Output)->AddRef();
68 return STATUS_SUCCESS;
69 }
70
72 {
73 DPRINT1("CServiceGroup::QueryInterface no interface!!! iface %S\n", GuidString.Buffer);
75 }
76
78}
#define DPRINT1
Definition: precomp.h:8
const GUID IID_IUnknown
IUnknown * PUNKNOWN
Definition: com_apitest.h:45
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
ULONG AddRef()
static PWSTR GuidString
Definition: apphelp.c:93
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
IServiceGroup * PSERVICEGROUP
Definition: portcls.h:614
@ Output
Definition: arc.h:85
#define STATUS_SUCCESS
Definition: shellext.h:65
void * PVOID
Definition: typedefs.h:50
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
#define IsEqualGUIDAligned(guid1, guid2)
Definition: wdm.template.h:235

Friends And Related Function Documentation

◆ IServiceGroupDpc

VOID NTAPI IServiceGroupDpc ( IN struct _KDPC Dpc,
IN PVOID  DeferredContext,
IN PVOID  SystemArgument1,
IN PVOID  SystemArgument2 
)
friend

Definition at line 226 of file service_group.cpp.

232{
233 PLIST_ENTRY CurEntry;
236
237 // acquire service group list lock
239
240 // grab first entry
241 CurEntry = This->m_ServiceSinkHead.Flink;
242
243 // loop the list and call the attached service sink/group
244 while (CurEntry != &This->m_ServiceSinkHead)
245 {
246 //grab current entry
248
249 // call service sink/group
250 Entry->pServiceSink->RequestService();
251
252 // move to next entry
253 CurEntry = CurEntry->Flink;
254 }
255
256 // release service group list lock
258}
#define KeAcquireSpinLockAtDpcLevel(SpinLock)
Definition: ke.h:125
#define KeReleaseSpinLockFromDpcLevel(SpinLock)
Definition: ke.h:135
struct GROUP_ENTRY * PGROUP_ENTRY
base of all file and directory entries
Definition: entries.h:83
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
_In_opt_ PVOID DeferredContext
Definition: ketypes.h:687

Referenced by CServiceGroup().

Member Data Documentation

◆ IMP_IServiceGroup

CServiceGroup::IMP_IServiceGroup

Definition at line 34 of file service_group.cpp.

◆ m_Dpc

KDPC CServiceGroup::m_Dpc
protected

Definition at line 44 of file service_group.cpp.

Referenced by CServiceGroup().

◆ m_Lock

KSPIN_LOCK CServiceGroup::m_Lock
protected

Definition at line 45 of file service_group.cpp.

Referenced by CServiceGroup().

◆ m_ServiceSinkHead

LIST_ENTRY CServiceGroup::m_ServiceSinkHead
protected

Definition at line 40 of file service_group.cpp.

Referenced by CServiceGroup().

◆ m_Timer

KTIMER CServiceGroup::m_Timer
protected

Definition at line 43 of file service_group.cpp.

◆ m_TimerInitialized

BOOL CServiceGroup::m_TimerInitialized
protected

Definition at line 42 of file service_group.cpp.


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