📄 wzcsapi.h
字号:
//---------------------------------------
// WZCQueryIterface: provides detailed information for a
// given interface.
//
// Parameters:
// pSrvAddr:
// [in] WZC Server to contact
// dwInFlags:
// [in] Fields to be queried (bitmask of INTF_*)
// pIntf:
// [in] Key of the interface to query
// [out] Requested data from the interface.
// pdwOutFlags
// [out] Fields successfully retrieved (bitmask of INTF_*)
//
// Returned value:
// Win32 error code
DWORD
WZCQueryInterface(
LPWSTR pSrvAddr,
DWORD dwInFlags,
PINTF_ENTRY pIntf,
LPDWORD pdwOutFlags);
//---------------------------------------
// WZCSetIterface: sets specific information on the interface
//
// Parameters:
// pSrvAddr:
// [in] WZC Server to contact
// dwInFlags:
// [in] Fields to be set (bitmask of INTF_*)
// pIntf:
// [in] Key of the interface to query and data to be set
// pdwOutFlags:
// [out] Fields successfully set (bitmask of INTF_*)
//
// Returned value:
// Win32 error code
DWORD
WZCSetInterface(
LPWSTR pSrvAddr,
DWORD dwInFlags,
PINTF_ENTRY pIntf,
LPDWORD pdwOutFlags);
//---------------------------------------
// WZCRefreshInterface: refreshes specific information for the interface
//
// Parameters:
// pSrvAddr:
// [in] WZC Server to contact
// dwInFlags:
// [in] Fields to be refreshed and specific refresh actions to be
// taken (bitmask of INTF_*)
// pIntf:
// [in] Key of the interface to be refreshed
// pdwOutFlags:
// [out] Fields successfully refreshed (bitmask of INTF_*)
//
// Returned value:
// Win32 error code
DWORD
WZCRefreshInterface(
LPWSTR pSrvAddr,
DWORD dwInFlags,
PINTF_ENTRY pIntf,
LPDWORD pdwOutFlags);
//---------------------------------------
// WZCQueryContext: retrieves the WZC service parameters
//
// Parameters:
// pSrvAddr:
// [in] WZC Server to contact
// dwInFlags:
// [in] Fields to be retrieved (bitmask of WZC_CONTEXT_CTL*)
// pContext:
// [in] Placeholder for the service parameters
// pdwOutFlags:
// [out] Fields successfully retrieved (bitmask of WZC_CONTEXT_CTL*)
//
// Returned value:
// Win32 error code
#ifdef UNDER_CE
//
// In CE, only pContext parameter is necessary.
//
#endif
DWORD
WZCQueryContext(
LPWSTR pSrvAddr,
DWORD dwInFlags,
PWZC_CONTEXT pContext,
LPDWORD pdwOutFlags);
//---------------------------------------
// WZCSetContext: sets specific WZC service parameters
//
// Parameters:
// pSrvAddr:
// [in] WZC Server to contact
// dwInFlags:
// [in] Fields to be set (bitmask of WZC_CONTEXT_CTL*)
// pContext:
// [in] Context buffer containing the specific parameters to be set
// pdwOutFlags:
// [out] Fields successfully set (bitmask of WZC_CONTEXT_CTL*)
//
// Returned value:
// Win32 error code
#ifdef UNDER_CE
//
// In CE, only pContext parameter is necessary.
//
#endif
DWORD
WZCSetContext(
LPWSTR pSrvAddr,
DWORD dwInFlags,
PWZC_CONTEXT pContext,
LPDWORD pdwOutFlags);
//
// EAPOL-related definitions (not used in CE).
//
//============================================================================================
//
// EAPOL-related definitions
//
#define EAPOL_DISABLED 0
#define EAPOL_ENABLED 0x80000000
#define EAPOL_MACHINE_AUTH_DISABLED 0
#define EAPOL_MACHINE_AUTH_ENABLED 0x40000000
#define EAPOL_GUEST_AUTH_DISABLED 0
#define EAPOL_GUEST_AUTH_ENABLED 0x20000000
#define EAP_TYPE_MD5 4
#define EAP_TYPE_TLS 13
#define EAP_TYPE_PEAP 25
#define EAP_TYPE_MSCHAPv2 26
#define DEFAULT_EAP_TYPE EAP_TYPE_TLS
#define DEFAULT_EAPOL_STATE EAPOL_ENABLED
#define DEFAULT_MACHINE_AUTH_STATE EAPOL_MACHINE_AUTH_ENABLED
#define DEFAULT_GUEST_AUTH_STATE EAPOL_GUEST_AUTH_DISABLED
#define DEFAULT_EAP_STATE (DEFAULT_EAPOL_STATE | DEFAULT_MACHINE_AUTH_STATE | DEFAULT_GUEST_AUTH_STATE)
#define IS_EAPOL_ENABLED(x) \
((x & EAPOL_ENABLED)?1:0)
#define IS_MACHINE_AUTH_ENABLED(x) \
((x & EAPOL_MACHINE_AUTH_ENABLED)?1:0)
#define IS_GUEST_AUTH_ENABLED(x) \
((x & EAPOL_GUEST_AUTH_ENABLED)?1:0)
// Supplicant modes of operation depending on network state and
// administrator decision
#define SUPPLICANT_MODE_0 0
#define SUPPLICANT_MODE_1 1
#define SUPPLICANT_MODE_2 2
#define SUPPLICANT_MODE_3 3
#define MAX_SUPPLICANT_MODE SUPPLICANT_MODE_3
#define EAPOL_DEFAULT_SUPPLICANT_MODE SUPPLICANT_MODE_2
// Auth modes of operation depending on administrator decision
#define EAPOL_AUTH_MODE_0 0
#define EAPOL_AUTH_MODE_1 1
#define EAPOL_AUTH_MODE_2 2
#define MAX_EAPOL_AUTH_MODE EAPOL_AUTH_MODE_2
#define EAPOL_DEFAULT_AUTH_MODE EAPOL_AUTH_MODE_1
#define GUID_STRING_LEN_WITH_TERM 39
//
// Heap-related functions
//
#define MALLOC(s) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (s))
#define FREE(p) HeapFree(GetProcessHeap(), 0, (p))
// Double-threaded linked list node control block. There is one node for each
// entry in a list.
//
// Applications should not access this structure directly.
//
typedef struct
_DTLNODE
{
struct _DTLNODE* pdtlnodePrev; // Address of previous node or NULL if none
struct _DTLNODE* pdtlnodeNext; // Address of next node or NULL if none
VOID* pData; // Address of user's data
LONG_PTR lNodeId; // User-defined node identification code
}
DTLNODE;
//
// Double-threaded linked list control block. There is one for each list.
//
// Applications should not access this structure directly.
//
typedef struct
_DTLLIST
{
struct _DTLNODE* pdtlnodeFirst; // Address of first node or NULL if none
struct _DTLNODE* pdtlnodeLast; // Address of last node or NULL if none
LONG lNodes; // Number of nodes in list
LONG_PTR lListId; // User-defined list identification code
}
DTLLIST;
// List node free function. See FreeList.
//
typedef VOID (*PDESTROYNODE)( IN DTLNODE* );
#define DtlGetFirstNode( pdtllist ) ((pdtllist)->pdtlnodeFirst)
#define DtlGetNextNode( pdtlnode ) ((pdtlnode)->pdtlnodeNext)
#define DtlGetData( pdtlnode ) ((pdtlnode)->pData)
typedef enum _EAPTLS_CONNPROP_ATTRIBUTE_TYPE_
{
ecatMinimum = 0, //Undefined
ecatFlagRegistryCert, //Value is a pointer to BOOL
ecatFlagScard, //Value is a pointer to BOOL
ecatFlagValidateServer, //Value is a pointer to BOOL
ecatFlagValidateName, //Value is a pointer to BOOL
ecatFlagDiffUser, //Value is a pointer to BOOL
ecatServerNames, //Value is a pointer to NULL
//terminated string of semi
//colon delimited server names
ecatRootHashes //Value is a pointer to
//SHA1 hashes of Root certs.
}EAPTLS_CONNPROP_ATTRIBUTE_TYPE;
typedef struct _EAPTLS_CONNPROP_ATTRIBUTE
{
EAPTLS_CONNPROP_ATTRIBUTE_TYPE ecaType;
DWORD dwLength; //includes byte length of the value
//if it is a LPWSTR, it includes
//the null termination.
PVOID Value;
}EAPTLS_CONNPROP_ATTRIBUTE, *PEAPTLS_CONNPROP_ATTRIBUTE;
// EAP configuration DLL entrypoints. These definitions must match the
// raseapif.h prototypes for RasEapInvokeConfigUI and RasEapFreeUserData.
typedef DWORD (APIENTRY * RASEAPFREE)( PBYTE );
typedef DWORD (APIENTRY * RASEAPINVOKECONFIGUI)( DWORD, HWND, DWORD, PBYTE, DWORD, PBYTE*, DWORD*);
typedef DWORD (APIENTRY * RASEAPGETIDENTITY)( DWORD, HWND, DWORD, const WCHAR*, const WCHAR*, PBYTE, DWORD, PBYTE, DWORD, PBYTE*, DWORD*, WCHAR** );
typedef DWORD (APIENTRY * RASEAPINVOKEINTERACTIVEUI)( DWORD, HWND, PBYTE, DWORD, PBYTE*, DWORD* );
typedef DWORD (APIENTRY * RASEAPCREATECONNPROP)( PEAPTLS_CONNPROP_ATTRIBUTE, PVOID*, DWORD*, PVOID*, DWORD*);
#define RAS_EAP_VALUENAME_HIDEPEAPMSCHAPv2 TEXT("HidePEAPMSCHAPv2")
// Flags
#define EAPCFG_FLAG_RequireUsername 0x1
#define EAPCFG_FLAG_RequirePassword 0x2
// EAP configuration package definition.
typedef struct
_EAPCFG
{
// The package's unique EAP algorithm code.
//
DWORD dwKey;
// The friendly name of the package suitable for display to the user.
//
TCHAR* pszFriendlyName;
// The SystemRoot-relative path to the package's configuration DLL. May
// be NULL indicating there is none.
//
TCHAR* pszConfigDll;
// The SystemRoot-relative path to the package's identity DLL. May
// be NULL indicating there is none.
//
TCHAR* pszIdentityDll;
// Flags that specify what standard credentials are required at dial
// time.
//
DWORD dwStdCredentialFlags;
// True if user is to be forced to run the configuration API for the
// package, i.e. defaults are not sufficient.
//
BOOL fForceConfig;
// True if the package provides MPPE encryption keys, false if not.
//
BOOL fProvidesMppeKeys;
// The package's default configuration blob, which can be overwritten by
// the configuration DLL. May be NULL and 0 indicating there is none.
//
BYTE* pData;
DWORD cbData;
// EAP per user data to be stored in HKCU. This data is returned from
// the EapInvokeConfigUI entrypoint in the eap dll.
//
BYTE* pUserData;
DWORD cbUserData;
// Set when the configuration DLL has been called on the package. This is
// not a registry setting. It is provided for the convenience of the UI
// only.
//
BOOL fConfigDllCalled;
// Specifies the class ID of the configuration UI for remote machines.
// Not used
GUID guidConfigCLSID;
} EAPCFG;
VOID DtlDestroyList( DTLLIST*, PDESTROYNODE );
DTLNODE *
CreateEapcfgNode(
void);
VOID
DestroyEapcfgNode(
IN OUT DTLNODE* pNode);
DTLNODE*
EapcfgNodeFromKey(
IN DTLLIST* pList,
IN DWORD dwKey);
#define EAPOL_MUTUAL_AUTH_EAP_ONLY 0x00000001
DTLLIST*
ReadEapcfgList(IN DWORD dwFlags);
#define MAX_SSID_LEN 32
//
// Structure : EAPOL_INTF_PARAMS
//
typedef struct _EAPOL_INTF_PARAMS
{
DWORD dwVersion;
DWORD dwReserved2;
DWORD dwEapFlags;
DWORD dwEapType;
DWORD dwSizeOfSSID;
BYTE bSSID[MAX_SSID_LEN];
} EAPOL_INTF_PARAMS, *PEAPOL_INTF_PARAMS;
//
// EAPOL states
//
typedef enum _EAPOL_STATE
{
EAPOLSTATE_LOGOFF = 0,
EAPOLSTATE_DISCONNECTED,
EAPOLSTATE_CONNECTING,
EAPOLSTATE_ACQUIRED,
EAPOLSTATE_AUTHENTICATING,
EAPOLSTATE_HELD,
EAPOLSTATE_AUTHENTICATED,
EAPOLSTATE_UNDEFINED
} EAPOL_STATE;
//
// EAP UI State
//
typedef enum _EAPUISTATE
{
EAPUISTATE_WAITING_FOR_IDENTITY = 1,
EAPUISTATE_WAITING_FOR_UI_RESPONSE
} EAPUISTATE;
//
// Structure : EAPOL_INTF_STATE
//
typedef struct _EAPOL_INTF_STATE
{
#if defined(MIDL_PASS)
[unique, string] LPWSTR pwszLocalMACAddr;
#else
LPWSTR pwszLocalMACAddr;
#endif
#if defined(MIDL_PASS)
[unique, string] LPWSTR pwszRemoteMACAddr;
#else
LPWSTR pwszRemoteMACAddr;
#endif
DWORD dwSizeOfSSID;
BYTE bSSID[MAX_SSID_LEN+1];
#if defined(MIDL_PASS)
[unique, string] LPSTR pszEapIdentity;
#else
LPSTR pszEapIdentity;
#endif
EAPOL_STATE dwState;
EAPUISTATE dwEapUIState;
DWORD dwEAPOLAuthMode;
DWORD dwEAPOLAuthenticationType;
DWORD dwEapType;
DWORD dwFailCount;
DWORD dwPhysicalMediumType;
} EAPOL_INTF_STATE, *PEAPOL_INTF_STATE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -