The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

//
// API_test.h
//
// $Id$
// The following ifdef block is the standard way of creating macros which make exporting
// from a DLL simpler. All files within this DLL are compiled with the API_TEST_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see
// API_TEST_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.
#ifdef API_TEST_EXPORTS
#define API_TEST_API __declspec(dllexport)
#else
#define API_TEST_API __declspec(dllimport)
#endif
typedef struct _simple_struct {
int a;
double b;
char * c;
DWORD_PTR d;
} simple_struct, LPsimple_struct;
typedef struct {
char a;
char b;
char c;
char d;
}
four_char_struct;
typedef struct {
int one;
int two;
int three;
int four;
int five; //should be some padding right here
double six;
}
SIX_MEMS; //MEMS=members, not memory
typedef struct {
unsigned int first;
CHAR str [32];
unsigned int last;
} ARR_IN_STRUCT;
typedef struct {
unsigned int first;
WCHAR str [32];
unsigned int last;
} WARR_IN_STRUCT;
typedef enum _WLAN_CONNECTION_MODE {
wlan_connection_mode_profile = 0,
wlan_connection_mode_temporary_profile,
wlan_connection_mode_discovery_secure,
wlan_connection_mode_discovery_unsecure,
wlan_connection_mode_auto,
wlan_connection_mode_invalid
} WLAN_CONNECTION_MODE, *PWLAN_CONNECTION_MODE;
#define DOT11_SSID_MAX_LENGTH 32 // 32 bytes
typedef struct _DOT11_SSID {
ULONG uSSIDLength;
UCHAR ucSSID[DOT11_SSID_MAX_LENGTH];
} DOT11_SSID, * PDOT11_SSID;
typedef struct _NDIS_OBJECT_HEADER
{
UCHAR Type;
UCHAR Revision;
USHORT Size;
} NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER;
// These are needed for wlanapi.h for pre-vista targets
#ifdef __midl
typedef struct _DOT11_MAC_ADDRESS {
UCHAR ucDot11MacAddress[6];
} DOT11_MAC_ADDRESS, * PDOT11_MAC_ADDRESS;
#else
typedef UCHAR DOT11_MAC_ADDRESS[6];
typedef DOT11_MAC_ADDRESS * PDOT11_MAC_ADDRESS;
#endif
// A list of DOT11_MAC_ADDRESS
typedef struct DOT11_BSSID_LIST {
#define DOT11_BSSID_LIST_REVISION_1 1
NDIS_OBJECT_HEADER Header;
ULONG uNumOfEntries;
ULONG uTotalNumOfEntries;
#ifdef __midl
[unique, size_is(uTotalNumOfEntries)] DOT11_MAC_ADDRESS BSSIDs[*];
#else
DOT11_MAC_ADDRESS BSSIDs[1];
#endif
} DOT11_BSSID_LIST, * PDOT11_BSSID_LIST;
typedef enum _DOT11_BSS_TYPE {
dot11_BSS_type_infrastructure = 1,
dot11_BSS_type_independent = 2,
dot11_BSS_type_any = 3
} DOT11_BSS_TYPE, * PDOT11_BSS_TYPE;
typedef struct _WLAN_CONNECTION_PARAMETERS {
WLAN_CONNECTION_MODE wlanConnectionMode;
#ifdef __midl
[string] LPCWSTR strProfile;
#else
LPCWSTR strProfile;
#endif
PDOT11_SSID pDot11Ssid;
PDOT11_BSSID_LIST pDesiredBssidList;
DOT11_BSS_TYPE dot11BssType;
DWORD dwFlags;
} WLAN_CONNECTION_PARAMETERS, *PWLAN_CONNECTION_PARAMETERS;
#define WLAN_CONNECTION_HIDDEN_NETWORK 0x00000001
// typedef int callback_func(int);
typedef int (__stdcall * callback_func)(int);
typedef double (__stdcall * callback_func_void_d)();
typedef float (__stdcall * callback_func_void_f)();
typedef unsigned __int64 (__stdcall * callback_func_void_q)();
typedef int (__stdcall * callback_func_5_param)
(char, unsigned __int64, four_char_struct *, float, double);
typedef int (__cdecl * callback_func_5_param_cdec)
(char, unsigned __int64, four_char_struct *, float, double);
extern API_TEST_API int nAPI_test;
API_TEST_API ULONG __stdcall highbit_unsigned();
API_TEST_API int __stdcall sum_integers(int a, int b);
API_TEST_API short __stdcall sum_shorts(short a, short b);
API_TEST_API short __stdcall sum_shorts_ref(short a, short b, short *c);
API_TEST_API double __stdcall sum_doubles(double a, double b);
API_TEST_API float __stdcall sum_floats(float a, float b);
API_TEST_API int __stdcall has_char(char *string, char ch);
API_TEST_API char * __stdcall find_char(char *string, char ch);
API_TEST_API void __stdcall dump_struct(simple_struct *x);
API_TEST_API int __stdcall mangle_simple_struct(simple_struct *x);
API_TEST_API BOOL __stdcall GetHandle(LPHANDLE pHandle);
API_TEST_API BOOL __stdcall FreeHandle(HANDLE Handle);
API_TEST_API int __cdecl c_sum_integers(int a, int b);