Bruno Jesus : wlanapi: Implement WlanCloseHandle.
Module: wine Branch: master Commit: 062067d887b03bea65943b83f3c3762defd887ee URL: http://source.winehq.org/git/wine.git/?a=commit;h=062067d887b03bea65943b83f3... Author: Bruno Jesus <00cpxxx(a)gmail.com> Date: Mon Jan 30 04:59:44 2017 -0200 wlanapi: Implement WlanCloseHandle. Signed-off-by: Bruno Jesus <00cpxxx(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wlanapi/main.c | 25 +++++++++++++++++++++++-- dlls/wlanapi/tests/wlanapi.c | 12 +++++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/dlls/wlanapi/main.c b/dlls/wlanapi/main.c index 9b71330..303d173 100644 --- a/dlls/wlanapi/main.c +++ b/dlls/wlanapi/main.c @@ -35,6 +35,16 @@ static struct wine_wlan DWORD magic, cli_version; } handle_table[16]; +static struct wine_wlan* handle_index(HANDLE handle) +{ + ULONG_PTR i = (ULONG_PTR)handle - 1; + + if (i < sizeof(handle_table) / sizeof(handle_table[0]) && handle_table[i].magic == WLAN_MAGIC) + return &handle_table[i]; + + return NULL; +} + static HANDLE handle_new(struct wine_wlan **entry) { ULONG_PTR i; @@ -59,8 +69,19 @@ DWORD WINAPI WlanEnumInterfaces(HANDLE handle, void *reserved, WLAN_INTERFACE_IN DWORD WINAPI WlanCloseHandle(HANDLE handle, void *reserved) { - FIXME("(%p, %p) stub\n", handle, reserved); - return ERROR_CALL_NOT_IMPLEMENTED; + struct wine_wlan *wlan; + + TRACE("(%p, %p)\n", handle, reserved); + + if (!handle || reserved) + return ERROR_INVALID_PARAMETER; + + wlan = handle_index(handle); + if (!wlan) + return ERROR_INVALID_HANDLE; + + wlan->magic = 0; + return ERROR_SUCCESS; } DWORD WINAPI WlanOpenHandle(DWORD client_version, void *reserved, DWORD *negotiated_version, HANDLE *handle) diff --git a/dlls/wlanapi/tests/wlanapi.c b/dlls/wlanapi/tests/wlanapi.c index 7f8b83c..e0c55f6 100644 --- a/dlls/wlanapi/tests/wlanapi.c +++ b/dlls/wlanapi/tests/wlanapi.c @@ -71,7 +71,6 @@ static void test_WlanOpenHandle(void) ok(neg_version == 1, "Expected 1, got %d\n", neg_version); ok(handle != bad_handle && handle, "handle changed\n"); ret = WlanCloseHandle(handle, NULL); -todo_wine ok(ret == 0, "Expected 0, got %d\n", ret); ret = WlanOpenHandle(2, NULL, &neg_version, &handle); @@ -82,7 +81,6 @@ todo_wine ok(neg_version == 1, "Expected 1, got %d\n", neg_version); ok(handle != bad_handle && handle, "bad handle\n"); ret = WlanCloseHandle(handle, NULL); -todo_wine ok(ret == 0, "Expected 0, got %d\n", ret); /* open twice */ @@ -91,15 +89,19 @@ todo_wine ret = WlanOpenHandle(1, NULL, &neg_version, &handle2); ok(ret == ERROR_SUCCESS, "Expected 0, got %d\n", ret); -todo_wine { + ret = WlanCloseHandle(handle, &reserved); + ok(ret == ERROR_INVALID_PARAMETER, "Expected 87, got %d\n", ret); + ret = WlanCloseHandle(handle, NULL); ok(ret == ERROR_SUCCESS, "Expected 0, got %d\n", ret); ret = WlanCloseHandle(handle2, NULL); ok(ret == ERROR_SUCCESS, "Expected 0, got %d\n", ret); + ret = WlanCloseHandle(bad_handle, NULL); + ok(ret == ERROR_INVALID_HANDLE, "Expected 6, got %d\n", ret); + ret = WlanCloseHandle(NULL, NULL); - ok(ret == ERROR_INVALID_PARAMETER, "Expected 0, got %d\n", ret); -} + ok(ret == ERROR_INVALID_PARAMETER, "Expected 87, got %d\n", ret); } static void test_WlanAllocateFreeMemory(void)
participants (1)
-
Alexandre Julliard