ReactOS 0.4.15-dev-7924-g5949c20
service_group.cpp File Reference
#include "private.hpp"
#include <debug.h>
Include dependency graph for service_group.cpp:

Go to the source code of this file.

Classes

struct  GROUP_ENTRY
 
class  CServiceGroup
 

Macros

#define NDEBUG
 

Typedefs

typedef struct GROUP_ENTRYPGROUP_ENTRY
 

Functions

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)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 11 of file service_group.cpp.

Typedef Documentation

◆ PGROUP_ENTRY

Function Documentation

◆ IServiceGroupDpc()

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

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

◆ PcNewServiceGroup()

NTSTATUS NTAPI PcNewServiceGroup ( OUT PSERVICEGROUP OutServiceGroup,
IN PUNKNOWN OuterUnknown  OPTIONAL 
)

Definition at line 303 of file service_group.cpp.

306{
309
310 DPRINT("PcNewServiceGroup entered\n");
311
312 //FIXME support aggregation
313 PC_ASSERT(OuterUnknown == NULL);
314
315 // allocate a service group object
316 This = new(NonPagedPool, TAG_PORTCLASS)CServiceGroup(OuterUnknown);
317
318 if (!This)
319 {
320 // out of memory
322 }
323
324 // request IServiceSink interface
325 Status = This->QueryInterface(IID_IServiceSink, (PVOID*)OutServiceGroup);
326
327 if (!NT_SUCCESS(Status))
328 {
329 // failed to acquire service sink interface
330 delete This;
331 return Status;
332 }
333
334 // done
335 return Status;
336}
LONG NTSTATUS
Definition: precomp.h:26
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define NonPagedPool
Definition: env_spec_w32.h:307
Status
Definition: gdiplustypes.h:25
#define TAG_PORTCLASS
Definition: private.hpp:24
#define PC_ASSERT(exp)
Definition: private.hpp:26
#define DPRINT
Definition: sndvol32.h:71
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158

Referenced by CMiniportWaveStreamCMI::Init(), and CMiniportStream::Init().