From aaa5075d3da0f75560ee719a05c6a2a5ae3ef08e Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Mon, 16 Mar 2009 09:22:25 +0000 Subject: [PATCH] -implement WlanScan and WlanEnumInterfaces -add some more NDIS definitions svn path=/trunk/; revision=40055 --- reactos/base/services/wlansvc/rpcserver.c | 16 ++++++- reactos/dll/win32/wlanapi/main.c | 51 ++++++++++++++++++++++- reactos/dll/win32/wlanapi/wlanapi.spec | 6 +-- reactos/include/psdk/ntddndis.h | 8 ++++ reactos/include/psdk/wlanapi.h | 2 + 5 files changed, 78 insertions(+), 5 deletions(-) diff --git a/reactos/base/services/wlansvc/rpcserver.c b/reactos/base/services/wlansvc/rpcserver.c index e08362011c4..4afec1c7904 100644 --- a/reactos/base/services/wlansvc/rpcserver.c +++ b/reactos/base/services/wlansvc/rpcserver.c @@ -112,6 +112,21 @@ DWORD _RpcScan( PDOT11_SSID pDot11Ssid, PWLAN_RAW_DATA pIeData) { + /* + DWORD dwBytesReturned; + HANDLE hDevice; + ULONG OidCode = OID_802_11_BSSID_LIST_SCAN; + PNDIS_802_11_BSSID_LIST pBssIDList; + + DeviceIoControl(hDevice, + IOCTL_NDIS_QUERY_GLOBAL_STATS, + &OidCode, + sizeof(ULONG), + NULL, + 0, + &dwBytesReturned, + NULL); +*/ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED; } @@ -173,7 +188,6 @@ DWORD _RpcAsyncGetNotification( return ERROR_CALL_NOT_IMPLEMENTED; } - DWORD _RpcSetProfileEapUserData( WLANSVC_RPC_HANDLE hClientHandle, GUID *pInterfaceGuid, diff --git a/reactos/dll/win32/wlanapi/main.c b/reactos/dll/win32/wlanapi/main.c index f65702b9e27..19f9c2e8f02 100644 --- a/reactos/dll/win32/wlanapi/main.c +++ b/reactos/dll/win32/wlanapi/main.c @@ -60,13 +60,62 @@ WlanCloseHandle(IN HANDLE hClientHandle, return dwError; } +DWORD +WINAPI +WlanEnumInterfaces(IN HANDLE hClientHandle, + PVOID pReserved, + OUT PWLAN_INTERFACE_INFO_LIST *ppInterfaceList) +{ + DWORD dwError = ERROR_SUCCESS; + + if ((pReserved != NULL) || (ppInterfaceList == NULL) || (hClientHandle == NULL)) + return ERROR_INVALID_PARAMETER; + + RpcTryExcept + { + _RpcEnumInterfaces(hClientHandle, ppInterfaceList); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + dwError = RpcExceptionCode(); + } + RpcEndExcept; + + return dwError; +} + +DWORD +WINAPI +WlanScan(IN HANDLE hClientHandle, + IN GUID *pInterfaceGuid, + IN PDOT11_SSID pDot11Ssid, + IN PWLAN_RAW_DATA pIeData, + PVOID pReserved) +{ + DWORD dwError = ERROR_SUCCESS; + + if ((pReserved != NULL) || (pInterfaceGuid == NULL) || (hClientHandle == NULL)) + return ERROR_INVALID_PARAMETER; + + RpcTryExcept + { + _RpcScan(hClientHandle, pInterfaceGuid, pDot11Ssid, pIeData); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + dwError = RpcExceptionCode(); + } + RpcEndExcept; + + return dwError; +} + void __RPC_FAR * __RPC_USER midl_user_allocate(size_t len) { return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len); } - void __RPC_USER midl_user_free(void __RPC_FAR * ptr) { diff --git a/reactos/dll/win32/wlanapi/wlanapi.spec b/reactos/dll/win32/wlanapi/wlanapi.spec index e94dd532867..d91be46a21a 100644 --- a/reactos/dll/win32/wlanapi/wlanapi.spec +++ b/reactos/dll/win32/wlanapi/wlanapi.spec @@ -1,9 +1,9 @@ @ stdcall WlanAllocateMemory (long) -@ stub WlanCloseHandle +@ stdcall WlanCloseHandle (ptr ptr) @ stub WlanConnect @ stub WlanDeleteProfile @ stub WlanDisconnect -@ stub WlanEnumInterfaces +@ stdcall WlanEnumInterfaces (ptr ptr ptr) @ stub WlanExtractPsdIEDataList @ stdcall WlanFreeMemory (ptr) @ stub WlanGetAvailableNetworkList @@ -22,7 +22,7 @@ @ stub WlanRegisterNotification @ stub WlanRenameProfile @ stub WlanSaveTemporaryProfile -@ stub WlanScan +@ stdcall WlanScan (ptr ptr ptr ptr ptr) @ stub WlanSetAutoConfigParameter @ stub WlanSetFilterList @ stub WlanSetInterface diff --git a/reactos/include/psdk/ntddndis.h b/reactos/include/psdk/ntddndis.h index 912396c5e1c..eac1d5e3639 100644 --- a/reactos/include/psdk/ntddndis.h +++ b/reactos/include/psdk/ntddndis.h @@ -2,6 +2,9 @@ #define _NTDDNDIS_ #endif +#define OID_802_11_BSSID_LIST 0x0D010217 +#define OID_802_11_BSSID_LIST_SCAN 0x0D01011A + typedef struct _NDIS_OBJECT_HEADER { UCHAR Type; @@ -9,4 +12,9 @@ typedef struct _NDIS_OBJECT_HEADER USHORT Size; } NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER; +typedef struct _NDIS_802_11_BSSID_LIST +{ + ULONG NumberOfItems; + NDIS_WLAN_BSSID Bssid[1]; +} NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST; diff --git a/reactos/include/psdk/wlanapi.h b/reactos/include/psdk/wlanapi.h index 583bdcf98a2..125b08a00a1 100644 --- a/reactos/include/psdk/wlanapi.h +++ b/reactos/include/psdk/wlanapi.h @@ -190,6 +190,8 @@ PVOID WINAPI WlanAllocateMemory(DWORD dwSize); VOID WINAPI WlanFreeMemory(PVOID pMemory); DWORD WINAPI WlanOpenHandle(IN DWORD dwClientVersion, PVOID pReserved, OUT DWORD *pdwNegotiatedVersion, OUT HANDLE *phClientHandle); DWORD WINAPI WlanCloseHandle(IN HANDLE hClientHandle, PVOID pReserved); +DWORD WINAPI WlanEnumInterfaces(IN HANDLE hClientHandle, PVOID pReserved, OUT PWLAN_INTERFACE_INFO_LIST *ppInterfaceList); +DWORD WINAPI WlanScan(IN HANDLE hClientHandle, IN GUID *pInterfaceGuid, IN PDOT11_SSID pDot11Ssid, IN PWLAN_RAW_DATA pIeData, PVOID pReserved); #endif #ifdef __cplusplus