116 lines
2.5 KiB
C++
116 lines
2.5 KiB
C++
/*++
|
|
|
|
Copyright (c) 1991-1993 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
svcslib.h
|
|
|
|
Abstract:
|
|
|
|
Contains information for connecting services to the controller process.
|
|
|
|
Author:
|
|
|
|
Dan Lafferty (danl) 26-Oct-1993
|
|
|
|
Environment:
|
|
|
|
User Mode -Win32
|
|
|
|
Revision History:
|
|
|
|
26-Oct-1993 danl
|
|
created
|
|
04-Dec-1996 anirudhs
|
|
Added CWorkItemContext
|
|
|
|
--*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//
|
|
// Function Prototypes
|
|
//
|
|
DWORD
|
|
SvcStartLocalDispatcher(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
SetupInProgress(
|
|
HKEY SystemKey,
|
|
PBOOL pfIsOOBESetup OPTIONAL
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
|
|
//===================
|
|
// CWorkItemContext
|
|
//===================
|
|
// Higher-level wrapper for Rtl thread pool functions
|
|
//
|
|
// An instance of this class is a callback context for the Rtl thread pool functions
|
|
//
|
|
class CWorkItemContext
|
|
{
|
|
public:
|
|
|
|
NTSTATUS AddWorkItem(
|
|
IN DWORD dwFlags
|
|
)
|
|
{
|
|
return RtlQueueWorkItem(CallBack,
|
|
this, // pContext
|
|
dwFlags);
|
|
}
|
|
|
|
NTSTATUS AddDelayedWorkItem(
|
|
IN DWORD dwTimeout,
|
|
IN DWORD dwFlags
|
|
);
|
|
|
|
VOID RemoveDelayedWorkItem(
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT(m_hWorkItem != NULL);
|
|
RtlDeregisterWait(m_hWorkItem);
|
|
m_hWorkItem = NULL;
|
|
}
|
|
|
|
static BOOL Init();
|
|
static void UnInit();
|
|
|
|
protected:
|
|
|
|
virtual VOID Perform(
|
|
IN BOOLEAN fWaitStatus
|
|
) = 0;
|
|
|
|
HANDLE m_hWorkItem;
|
|
|
|
private:
|
|
static VOID CallBack(
|
|
IN PVOID pContext
|
|
);
|
|
|
|
static VOID DelayCallBack(
|
|
IN PVOID pContext,
|
|
IN BOOLEAN fWaitStatus
|
|
);
|
|
|
|
static HANDLE s_hNeverSignaled;
|
|
};
|
|
|
|
#define DECLARE_CWorkItemContext \
|
|
protected: \
|
|
VOID Perform( \
|
|
IN BOOLEAN fWaitStatus \
|
|
);
|
|
|
|
} // extern "C"
|
|
|
|
#endif // __cplusplus
|