73 DPRINT1(
"CServiceGroup::QueryInterface no interface!!! iface %S\n",
GuidString.Buffer);
100CServiceGroup::RequestService()
142CServiceGroup::AddMember(
160 Entry->pServiceSink = pServiceSink;
162 pServiceSink->AddRef();
178CServiceGroup::RemoveMember(
201 if (
Entry->pServiceSink == pServiceSink)
207 pServiceSink->Release();
216 CurEntry = CurEntry->
Flink;
241 CurEntry =
This->m_ServiceSinkHead.Flink;
244 while (CurEntry != &
This->m_ServiceSinkHead)
250 Entry->pServiceSink->RequestService();
253 CurEntry = CurEntry->
Flink;
262CServiceGroup::SupportDelayedService()
275CServiceGroup::RequestDelayedService(
292CServiceGroup::CancelDelayedService()
310 DPRINT(
"PcNewServiceGroup entered\n");
325 Status =
This->QueryInterface(IID_IServiceSink, (
PVOID*)OutServiceGroup);
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
friend VOID NTAPI IServiceGroupDpc(IN struct _KDPC *Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
LIST_ENTRY m_ServiceSinkHead
CServiceGroup(IUnknown *OuterUnknown)
#define NT_SUCCESS(StatCode)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
VOID NTAPI KeSetImportanceDpc(IN PKDPC Dpc, IN KDPC_IMPORTANCE Importance)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define KeRaiseIrql(irql, oldIrql)
#define KeReleaseSpinLock(sl, irql)
#define KeLowerIrql(oldIrql)
#define KeAcquireSpinLock(sl, irql)
#define KeGetCurrentIrql()
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
VOID FreeItem(IN PVOID Item)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
IServiceSink * PSERVICESINK
IServiceGroup * PSERVICEGROUP
#define PC_ASSERT_IRQL_EQUAL(x)
#define PC_ASSERT_IRQL(x)
#define KeAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock)
VOID NTAPI IServiceGroupDpc(IN struct _KDPC *Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
NTSTATUS NTAPI PcNewServiceGroup(OUT PSERVICEGROUP *OutServiceGroup, IN PUNKNOWN OuterUnknown OPTIONAL)
struct GROUP_ENTRY * PGROUP_ENTRY
PULONG MinorVersion OPTIONAL
base of all file and directory entries
IN PSERVICESINK pServiceSink
struct _LIST_ENTRY * Flink
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_In_ WDFTIMER _In_ LONGLONG DueTime
#define IsEqualGUIDAligned(guid1, guid2)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2