windows-nt/Source/XPSP1/NT/net/layer2svc/wlpolicy/wirelessspd.c
2020-09-26 16:20:57 +08:00

167 lines
3 KiB
C

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
ipsecspd.c
Abstract:
This module contains all of the code to drive
the WirelessPOl Service.
Author:
abhisheV 30-September-1999
Environment
User Level: Win32
Revision History:
--*/
#include "precomp.h"
DWORD WINAPI InitWirelessPolicy ( )
{
DWORD dwError = 0;
InitMiscGlobals();
dwError = InitSPDThruRegistry();
BAIL_ON_WIN32_ERROR(dwError);
dwError = InitSPDGlobals();
BAIL_ON_WIN32_ERROR(dwError);
_WirelessDbg(TRC_TRACK, "Starting the Service Wait Loop ");
InitializePolicyStateBlock(
gpWirelessPolicyState
);
// Intialize the policy Engine with Cached Wireless Policy
dwError = PlumbCachePolicy(
gpWirelessPolicyState
);
if (dwError) {
gpWirelessPolicyState->dwCurrentState = POLL_STATE_INITIAL;
_WirelessDbg(TRC_STATE, "Policy State :: Initial State ");
gCurrentPollingInterval = gpWirelessPolicyState->DefaultPollingInterval;
dwError = 0; // dont return this error
}
return(dwError);
error:
WirelessSPDShutdown(dwError);
return(dwError);
}
VOID
WirelessSPDShutdown(
IN DWORD dwErrorCode
)
{
/*
gbIKENotify = FALSE;
*/
DeletePolicyInformation(NULL);
ClearPolicyStateBlock(
gpWirelessPolicyState
);
ClearSPDGlobals();
return;
}
VOID
ClearSPDGlobals(
)
{
if (ghNewDSPolicyEvent) {
CloseHandle(ghNewDSPolicyEvent);
ghNewDSPolicyEvent = NULL;
}
if (ghForcedPolicyReloadEvent) {
CloseHandle(ghForcedPolicyReloadEvent);
ghForcedPolicyReloadEvent = NULL;
}
if (ghPolicyChangeNotifyEvent) {
CloseHandle(ghPolicyChangeNotifyEvent);
ghPolicyChangeNotifyEvent = NULL;
}
if (ghPolicyEngineStopEvent) {
CloseHandle(ghPolicyEngineStopEvent);
}
if (ghReApplyPolicy8021x) {
CloseHandle(ghReApplyPolicy8021x);
}
/*
if (gbSPDAuditSection) {
DeleteCriticalSection(&gcSPDAuditSection);
}
if (gpSPDSD) {
LocalFree(gpSPDSD);
gpSPDSD = NULL;
}
*/
}
VOID
InitMiscGlobals(
)
{
//
// Init globals that aren't cleared on service stop to make sure
// everything's in a known state on start. This allows us to
// stop/restart without having our DLL unloaded/reloaded first.
//
gpWirelessPolicyState = &gWirelessPolicyState;
gCurrentPollingInterval = 0;
gDefaultPollingInterval = 166*60; // (seconds).
gpszWirelessDSPolicyKey = L"SOFTWARE\\Policies\\Microsoft\\Windows\\Wireless\\GPTWirelessPolicy";
gpszWirelessCachePolicyKey = L"SOFTWARE\\Policies\\Microsoft\\Windows\\Wireless\\Policy\\Cache";
gpszLocPolicyAgent = L"SYSTEM\\CurrentControlSet\\Services\\WZCSVC";
gdwDSConnectivityCheck = 0;
ghNewDSPolicyEvent = NULL;
ghForcedPolicyReloadEvent = NULL;
ghPolicyChangeNotifyEvent = NULL;
return;
}