167 lines
3 KiB
C
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;
|
||
|
}
|
||
|
|