118 lines
1.7 KiB
C
118 lines
1.7 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1998-1999 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
control.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This is a local header file for control.c
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Paul McDaniel (paulmcd) 23-Jan-2000
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
#ifndef _CONTROL_H_
|
||
|
#define _CONTROL_H_
|
||
|
|
||
|
|
||
|
#define SR_CONTROL_OBJECT_CONTEXT ULongToPtr(SR_CONTROL_OBJECT_TAG)
|
||
|
|
||
|
#define IS_VALID_CONTROL_OBJECT(pObject) \
|
||
|
(((pObject) != NULL) && ((pObject)->RefCount > 0) && ((pObject)->Signature == SR_CONTROL_OBJECT_TAG))
|
||
|
|
||
|
//
|
||
|
// locked by global->ControlResource
|
||
|
//
|
||
|
|
||
|
typedef struct _SR_CONTROL_OBJECT
|
||
|
{
|
||
|
//
|
||
|
// NonPagedPool
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// SR_CONTROL_OBJECT_TAG
|
||
|
//
|
||
|
|
||
|
ULONG Signature;
|
||
|
|
||
|
//
|
||
|
// a zero-based reference count
|
||
|
//
|
||
|
|
||
|
LONG RefCount;
|
||
|
|
||
|
//
|
||
|
// the Options passed into SrCreateMonitor
|
||
|
//
|
||
|
|
||
|
ULONG Options;
|
||
|
|
||
|
//
|
||
|
// Irps that have not been completed yet are placed on IrpListHead
|
||
|
//
|
||
|
|
||
|
LIST_ENTRY IrpListHead;
|
||
|
|
||
|
//
|
||
|
// Notify Records that have not been completed to irps are placed on
|
||
|
// NotifyRecordListHead
|
||
|
//
|
||
|
|
||
|
LIST_ENTRY NotifyRecordListHead;
|
||
|
|
||
|
//
|
||
|
// The process that created this control object
|
||
|
//
|
||
|
|
||
|
PEPROCESS pProcess;
|
||
|
|
||
|
} SR_CONTROL_OBJECT, *PSR_CONTROL_OBJECT;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
NTSTATUS
|
||
|
SrCreateControlObject (
|
||
|
OUT PSR_CONTROL_OBJECT * ppControlObject,
|
||
|
IN ULONG Options
|
||
|
);
|
||
|
|
||
|
|
||
|
NTSTATUS
|
||
|
SrDeleteControlObject (
|
||
|
IN PSR_CONTROL_OBJECT pControlObject
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
SrCancelControlIo (
|
||
|
IN PSR_CONTROL_OBJECT pControlObject
|
||
|
);
|
||
|
|
||
|
|
||
|
VOID
|
||
|
SrReferenceControlObject (
|
||
|
IN PSR_CONTROL_OBJECT pControlObject
|
||
|
);
|
||
|
|
||
|
|
||
|
VOID
|
||
|
SrDereferenceControlObject (
|
||
|
IN PSR_CONTROL_OBJECT pControlObject
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif // _CONTROL_H_
|
||
|
|
||
|
|