ReactOS  0.4.15-dev-4569-g032c50f
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 12 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 232 of file service_group.cpp.

238 {
239  PLIST_ENTRY CurEntry;
242 
243  // acquire service group list lock
245 
246  // grab first entry
247  CurEntry = This->m_ServiceSinkHead.Flink;
248 
249  // loop the list and call the attached service sink/group
250  while (CurEntry != &This->m_ServiceSinkHead)
251  {
252  //grab current entry
254 
255  // call service sink/group
256  Entry->pServiceSink->RequestService();
257 
258  // move to next entry
259  CurEntry = CurEntry->Flink;
260  }
261 
262  // release service group list lock
264 }
struct _Entry Entry
Definition: kefuncs.h:629
VOID NTAPI KeAcquireSpinLockAtDpcLevel(IN PKSPIN_LOCK SpinLock)
Definition: spinlock.c:198
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
VOID NTAPI KeReleaseSpinLockFromDpcLevel(IN PKSPIN_LOCK SpinLock)
Definition: spinlock.c:221
Definition: typedefs.h:119
struct GROUP_ENTRY * PGROUP_ENTRY
base of all file and directory entries
Definition: entries.h:82
_In_opt_ PVOID DeferredContext
Definition: ketypes.h:675

◆ PcNewServiceGroup()

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

Definition at line 309 of file service_group.cpp.

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

Referenced by CMiniportStream::Init().