Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
queue.h
Abstract:
prototypes for queue algorithms and data structures to handle policy notifications
Author:
Vishnu Patankar (vishnup) 15-Aug-2000 created
--*/
#ifndef _queuep_
#define _queuep_
#include "splay.h"
#ifdef __cplusplus
extern "C" { #endif
#define SCE_QUEUE_INFO_SAM 1L
#define SCE_QUEUE_INFO_AUDIT 2L
#define SCE_QUEUE_INFO_RIGHTS 4L
typedef enum _NOTIFICATIONQ_OPERATION_TYPE { ScepNotificationEnqueue = 1, ScepNotificationDequeue, ScepNotificationRetry, ScepNotificationProcess } NOTIFICATIONQ_OPERATION_TYPE, *PNOTIFICATIONQ_OPERATION_TYPE;
#define SCEP_NUM_NOTIFICATION_SECONDS 300
#define SCEP_NUM_SHUTDOWN_SECONDS 60
#define SCEP_NUM_CHECK_EMPTY_SECONDS 60
#define SCEP_NUM_REST_SECONDS 20
#define SCEP_IS_SAM_OBJECT(ObjectType) ((ObjectType == SecurityDbObjectSamUser ||\
ObjectType == SecurityDbObjectSamGroup ||\ ObjectType == SecurityDbObjectSamAlias) ?\ TRUE : FALSE)
#define MAX_SID_LENGTH SID_MAX_SUB_AUTHORITIES*sizeof(DWORD)+10
#define SCE_NOTIFICATION_PATH \
SCE_ROOT_PATH TEXT("\\Notifications")
typedef struct _SCESRV_POLQUEUE_ {
DWORD dwPending; SECURITY_DB_TYPE DbType; SECURITY_DB_OBJECT_TYPE ObjectType; SECURITY_DB_DELTA_TYPE DeltaType; DWORD ExplicitLowRight; DWORD ExplicitHighRight; CHAR Sid[MAX_SID_LENGTH]; struct _SCESRV_POLQUEUE_ *Next;
} SCESRV_POLQUEUE, *PSCESRV_POLQUEUE;
NTSTATUS ScepQueueStartSystemThread( );
DWORD ScepNotificationQInitialize( );
DWORD ScepNotificationQSystemThreadFunc( );
VOID ScepNotificationQDequeue( IN BOOL bAllNodes );
DWORD ScepNotificationQEnqueue( IN SECURITY_DB_TYPE DbType, IN SECURITY_DB_DELTA_TYPE DeltaType, IN SECURITY_DB_OBJECT_TYPE ObjectType, IN PSID ObjectSid OPTIONAL, IN DWORD ExplicitLowRight, IN DWORD ExplicitHighRight, IN PSCESRV_POLQUEUE pRetryQNode OPTIONAL );
VOID ScepNotificationQFree( );
DWORD ScepNotificationQFlush( );
DWORD ScepNotificationQUnFlush( );
VOID ScepNotificationQNodeLog( IN PSCESRV_POLQUEUE pQNode, IN NOTIFICATIONQ_OPERATION_TYPE NotificationOp );
DWORD ScepGetQueueInfo( OUT DWORD *pdwInfo, IN OUT PSCEP_SPLAY_TREE pRootNode OPTIONAL );
DWORD ScepNotifyLogPolicy( IN DWORD ErrCode, IN BOOL bLogTime, IN PWSTR Msg, IN DWORD DbType, IN DWORD ObjectType, IN PWSTR ObjectName OPTIONAL );
DWORD ScepQueuePrepareShutdown( );
DWORD ScepNotificationLogOpen( );
VOID ScepNotificationLogClose( );
VOID ScepBackupNotificationLogFile( );
VOID ScepNotificationQCleanup( );
VOID ScepNotificationQControl( IN DWORD Flag );
DWORD ScepCheckAndWaitPolicyPropFinish();
//
// for debugging only
//
VOID ScepDbgNotificationQDump( );
VOID ScepDbgNotificationQDumpNode( IN PSCESRV_POLQUEUE pQNode );
#ifdef __cplusplus
} #endif
#endif
|