/////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 1997, Microsoft Corp. All rights reserved. // // FILE // // iasapi.h // // SYNOPSIS // // This file describes all "C"-style API functions in the Everest core. // // MODIFICATION HISTORY // // 08/29/1997 Original version. // 11/12/1997 Added IASUpdateRegistry. // 11/26/1997 Revised timer API. // 01/08/1998 Made changes so that header could stand alone. // 01/30/1998 Added IASAdler32. // 04/17/1998 Added IASLookupAttributeIDs. // 06/16/1998 Added IASVariantChangeType. // 08/13/1998 Removed obsolete API's. // 04/19/1999 Added IASRadiusCrypt. // 01/25/2000 Added IASGetHostByName. // 04/14/2000 Added dictionary API. // /////////////////////////////////////////////////////////////////////////////// #ifndef _IASAPI_H_ #define _IASAPI_H_ #ifndef IASCOREAPI #define IASCOREAPI DECLSPEC_IMPORT #endif #include #include #ifdef __cplusplus extern "C" { #endif /////////////////////////////////////////////////////////////////////////////// // // Functions to initialize and shutdown the core services. // /////////////////////////////////////////////////////////////////////////////// IASCOREAPI BOOL WINAPI IASInitialize ( VOID ); IASCOREAPI VOID WINAPI IASUninitialize ( VOID ); /////////////////////////////////////////////////////////////////////////////// // // Function for computing the Adler-32 checksum of a buffer. // /////////////////////////////////////////////////////////////////////////////// IASCOREAPI DWORD WINAPI IASAdler32( CONST BYTE *pBuffer, DWORD nBufferLength ); // The Adler-32 checksum is also a decent hash algorithm. #define IASHashBytes IASAdler32 /////////////////////////////////////////////////////////////////////////////// // // Allocate a 32-bit integer that's guaranteed to be unique process wide. // /////////////////////////////////////////////////////////////////////////////// IASCOREAPI DWORD WINAPI IASAllocateUniqueID( VOID ); /////////////////////////////////////////////////////////////////////////////// // // Functions for updating the registry. // /////////////////////////////////////////////////////////////////////////////// #define IAS_REGISTRY_INPROC 0x00000000 #define IAS_REGISTRY_LOCAL 0x00000001 #define IAS_REGISTRY_FREE 0x00000000 #define IAS_REGISTRY_APT 0x00000002 #define IAS_REGISTRY_BOTH 0x00000004 #define IAS_REGISTRY_AUTO 0x00000008 IASCOREAPI HRESULT WINAPI IASRegisterComponent( HINSTANCE hInstance, REFCLSID clsid, LPCWSTR szProgramName, LPCWSTR szComponentName, DWORD dwRegFlags, REFGUID tlid, WORD wVerMajor, WORD wVerMinor, BOOL bRegister ); /////////////////////////////////////////////////////////////////////////////// // // IASReportEvent is used to report events within the Everest server. // /////////////////////////////////////////////////////////////////////////////// IASCOREAPI HRESULT WINAPI IASReportEvent( DWORD dwEventID, DWORD dwNumStrings, DWORD dwDataSize, LPCWSTR *lpStrings, LPVOID lpRawData ); /////////////////////////////////////////////////////////////////////////////// // // Generic callback struct. // /////////////////////////////////////////////////////////////////////////////// typedef struct IAS_CALLBACK IAS_CALLBACK, *PIAS_CALLBACK; typedef VOID (WINAPI *IAS_CALLBACK_ROUTINE)( PIAS_CALLBACK This ); struct IAS_CALLBACK { IAS_CALLBACK_ROUTINE CallbackRoutine; }; /////////////////////////////////////////////////////////////////////////////// // // This is the native "C"-style interface into the threading engine. // /////////////////////////////////////////////////////////////////////////////// IASCOREAPI BOOL WINAPI IASRequestThread( PIAS_CALLBACK pOnStart ); IASCOREAPI DWORD WINAPI IASSetMaxNumberOfThreads( DWORD dwMaxNumberOfThreads ); IASCOREAPI DWORD WINAPI IASSetMaxThreadIdle( DWORD dwMilliseconds ); /////////////////////////////////////////////////////////////////////////////// // // Replacement for VariantChangeType to prevent hidden window. // /////////////////////////////////////////////////////////////////////////////// IASCOREAPI HRESULT WINAPI IASVariantChangeType( VARIANT * pvargDest, VARIANT * pvarSrc, USHORT wFlags, VARTYPE vt ); // Map any oleaut32 calls to our implementation. #define VariantChangeType IASVariantChangeType /////////////////////////////////////////////////////////////////////////////// // // RADIUS Encryption/Decryption. // /////////////////////////////////////////////////////////////////////////////// IASCOREAPI VOID WINAPI IASRadiusCrypt( BOOL encrypt, BOOL salted, const BYTE* secret, ULONG secretLen, const BYTE* reqAuth, PBYTE buf, ULONG buflen ); /////////////////////////////////////////////////////////////////////////////// // // Unicode version of gethostbyname. // The caller must free the returned hostent struct by calling LocalFree. // // Note: Since this is a Unicode API, the returned hostent struct will always // have h_name and h_aliases set to NULL. // /////////////////////////////////////////////////////////////////////////////// typedef struct hostent *PHOSTENT; IASCOREAPI PHOSTENT WINAPI IASGetHostByName( IN PCWSTR name ); /////////////////////////////////////////////////////////////////////////////// // // Methods for accessing the attribute dictionary. // /////////////////////////////////////////////////////////////////////////////// typedef struct _IASTable { ULONG numColumns; ULONG numRows; BSTR* columnNames; VARTYPE* columnTypes; VARIANT* table; } IASTable; HRESULT WINAPI IASGetDictionary( IN PCWSTR path, OUT IASTable* dnary, OUT VARIANT* storage ); const IASTable* WINAPI IASGetLocalDictionary( VOID ); #ifdef __cplusplus } #endif #endif // _IASAPI_H_