windows-nt/Source/XPSP1/NT/net/layer2svc/zeroconf/server/wzcsvc.h
2020-09-26 16:20:57 +08:00

88 lines
2.1 KiB
C

#pragma once
#include "intflist.h"
extern HINSTANCE g_hInstance;
extern UINT g_nThreads;
VOID WINAPI
WZCSvcMain(
IN DWORD dwArgc,
IN LPTSTR *lpszArgv);
DWORD
WZCSvcWMINotification(
IN BOOL bRegister);
DWORD
WZCSvcUpdateStatus();
DWORD
WZCSvcControlHandler(
IN DWORD dwControl,
IN DWORD dwEventType,
IN PVOID pEventData,
IN PVOID pContext);
VOID CALLBACK
WZCSvcWMINotificationHandler(
IN PWNODE_HEADER pWnodeHdr,
IN UINT_PTR uiNotificationContext);
// all the device notifications are forwarded from the specific
// handler to the central handler below.
VOID
WZCWrkDeviceNotifHandler(
IN LPVOID pvData);
// WZCTimeoutCallback: timer callback routine. It should not lock any cs, but just spawn
// the timer handler routine after referencing the context (to avoid premature deletion)
VOID WINAPI
WZCTimeoutCallback(
IN PVOID pvData,
IN BOOL fTimerOrWaitFired);
VOID
WZCSvcTimeoutHandler(
IN PVOID pvData);
VOID
WZCWrkWzcSendNotif(
IN LPVOID pvData);
VOID
WZCSvcShutdown(IN DWORD dwErrorCode);
// Internal WZC service settings.
typedef struct _WZC_INTERNAL_CONTEXT
{
BOOL bValid; // indicates whether the context is valid (cs is initialized)
WZC_CONTEXT wzcContext; // global WZC settings (timers, flags, etc)
PINTF_CONTEXT pIntfTemplate; // global interface context template.
CRITICAL_SECTION csContext;
} WZC_INTERNAL_CONTEXT, *PWZC_INTERNAL_CONTEXT;
// WZCContextInit, WZCContextDestroy
// Description: Initialise and Destroy a context
// Parameters:
// [in] pwzcICtxt, pointer to a valid internal context object
// Returns: Win32 error code
DWORD WZCContextInit(
IN PWZC_INTERNAL_CONTEXT pwzcICtxt);
DWORD WZCContextDestroy(
IN PWZC_INTERNAL_CONTEXT pwzcICtxt);
// WzcContextQuery, WzcContextSet
// Description: Query and set the context
// Returns: win32 error code
DWORD WzcContextQuery(
DWORD dwInFlags,
PWZC_CONTEXT pContext,
LPDWORD pdwOutFlags);
DWORD WzcContextSet(
DWORD dwInFlags,
PWZC_CONTEXT pContext,
LPDWORD pdwOutFlags);
extern WZC_INTERNAL_CONTEXT g_wzcInternalCtxt;