[PATCH 7/7] wlanapi: Implement WlanCloseHandle
Bruno Jesus
00cpxxx at gmail.com
Mon Jan 30 00:59:44 CST 2017
Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
---
dlls/wlanapi/main.c | 26 ++++++++++++++++++++++++--
dlls/wlanapi/tests/wlanapi.c | 12 +++++++-----
2 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/dlls/wlanapi/main.c b/dlls/wlanapi/main.c
index 1298bd6..ccca465 100644
--- a/dlls/wlanapi/main.c
+++ b/dlls/wlanapi/main.c
@@ -35,6 +35,17 @@ static struct wine_wlan
DWORD magic, cli_version;
} handle_table[16];
+struct wine_wlan* handle_index(HANDLE handle)
+{
+ int i = (int)handle - 1;
+
+ if (i >= 0 && i < sizeof(handle_table) / sizeof(handle_table[0]) &&
+ handle_table[i].magic == WLAN_MAGIC)
+ return &handle_table[i];
+
+ return NULL;
+}
+
HANDLE handle_new(struct wine_wlan **entry)
{
int i;
@@ -59,8 +70,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 9954a28..82007ee 100644
--- a/dlls/wlanapi/tests/wlanapi.c
+++ b/dlls/wlanapi/tests/wlanapi.c
@@ -71,7 +71,6 @@ 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);
}
void test_WlanAllocateFreeMemory(void)
--
2.9.3
More information about the wine-patches
mailing list