#pragma once // Filename : nlasvc.h // Description : Structures necessary to connect to and communicate with the // Network Location Awareness (NLA) system service via LPC. // Author : Jeffrey C. Venable, Sr. (jeffv@microsoft.com) // Revision : 14 June 2000 // // Type thunks for 32 bit clients on 64 bit machines. // #include #if defined(USE_LPC6432) #define NLA_HWND ULONGLONG #define NLA_PVOID ULONGLONG #define NLA_WPARAM ULONGLONG #define NLA_HANDLE ULONGLONG #define NLA_ULONG_PTR ULONGLONG #define NLA_HKEY ULONGLONG #define NLA_PIO_STATUS_BLOCK ULONGLONG #define NLA_PPS_APC_ROUTINE ULONGLONG #else #define NLA_HWND HWND #define NLA_PVOID PVOID #define NLA_WPARAM WPARAM #define NLA_HANDLE HANDLE #define NLA_ULONG_PTR ULONG_PTR #define NLA_HKEY HKEY #define NLA_PIO_STATUS_BLOCK PIO_STATUS_BLOCK #define NLA_PPS_APC_ROUTINE PPS_APC_ROUTINE #endif // defined(USE_LPC6432) typedef struct _LOCATION_802_1X { CHAR adapterName[MAX_ADAPTER_NAME_LENGTH + 4]; WCHAR information[2048]; } LOCATION_802_1X, *PLOCATION_802_1X; typedef struct _WSM_NOTIFY { ULONG serialNumber; WSACOMPLETIONTYPE Type; union { NLA_HANDLE hThread; NLA_HANDLE hEvent; NLA_HWND hWnd; }; union { NLA_ULONG_PTR Key; UINT uMsg; NLA_PVOID ApcRoutine; }; union { NLA_PPS_APC_ROUTINE ApcCompletion; NLA_HANDLE hPort; NLA_WPARAM context; }; NLA_PIO_STATUS_BLOCK pIoStatusBlock; NLA_HKEY userNetworks; FILETIME lastModification; NLA_PVOID query; } WSM_NOTIFY, *PWSM_NOTIFY; typedef enum _WSM_LPC_REQUEST_TYPE { // Requests: REQUEST_DATA_MAPPING_HANDLE = 0x00000001, REQUEST_DATA_MAPPING_HANDLE_SLOW = 0x00000002, REQUEST_DATA_MAPPING_HANDLE_SLOW_WITH_UPDATE = 0x00000003, REQUEST_CHANGE_NOTIFICATION = 0x00000004, REQUEST_CHANGE_NOTIFICATION_SLOW = 0x00000005, REQUEST_CANCEL_CHANGE_NOTIFICATION = 0x00000006, // Notifies: DHCP_NOTIFY_CHANGE = 0x00000010, // Asynchronous information: LOCATION_802_1X_REGISTER = 0x00000020, LOCATION_802_1X_DELETE = 0x00000021, } WSM_LPC_REQUEST_TYPE, *PWSM_LPC_REQUEST_TYPE, FAR * LPWSM_LPC_REQUEST_TYPE; typedef struct _WSM_LPC_CONNECT { struct { USHORT major; USHORT minor; } version; #if defined(_WIN64) || defined (USE_LPC6432) BOOLEAN client32; #endif } WSM_LPC_CONNECT, *PWSM_LPC_CONNECT; typedef struct _WSM_LPC_REQUEST { WSM_LPC_REQUEST_TYPE type; union { WSM_NOTIFY notification; }; } WSM_LPC_REQUEST, *PWSM_LPC_REQUEST; typedef struct _WSM_LPC_REPLY { union { NLA_HANDLE hNetworkHeader; // returned on connection reply NLA_HANDLE hNetworkData; // returned on REQUEST_DATA_MAPPING_HANDLE }; NTSTATUS status; // always returned to indicate success/failure } WSM_LPC_REPLY, *PWSM_LPC_REPLY; typedef struct _WSM_LPC_DATA { ULONG signature; union { WSM_LPC_CONNECT connect; WSM_LPC_REQUEST request; WSM_LPC_REPLY reply; }; } WSM_LPC_DATA, * PWSM_LPC_DATA; typedef struct _WSM_LPC_MESSAGE { PORT_MESSAGE portMsg; WSM_LPC_DATA data; } WSM_LPC_MESSAGE, *PWSM_LPC_MESSAGE; #define WSM_SIGNATURE 'bMsW' #define WSM_VERSION_MAJOR 1 #define WSM_VERSION_MINOR 0 #define WSM_PORT_NAME L"\\NLAPublicPort" #define WSM_PRIVATE_PORT_NAME L"\\NLAPrivatePort"