| ... | ... | @@ -63,3 +63,28 @@ test "removeDotDirs" { |
| 63 | 63 | try testRemoveDotDirs("a\\b\\..\\", "a\\"); |
| 64 | 64 | try testRemoveDotDirs("a\\b\\..\\c", "a\\c"); |
| 65 | 65 | } |
| 66 | |
| 67 | test "loadWinsockExtensionFunction" { |
| 68 | _ = try windows.WSAStartup(2, 2); |
| 69 | defer windows.WSACleanup() catch unreachable; |
| 70 | |
| 71 | const LPFN_CONNECTEX = *const fn ( |
| 72 | Socket: windows.ws2_32.SOCKET, |
| 73 | SockAddr: *const windows.ws2_32.sockaddr, |
| 74 | SockLen: std.os.socklen_t, |
| 75 | SendBuf: ?*const anyopaque, |
| 76 | SendBufLen: windows.DWORD, |
| 77 | BytesSent: *windows.DWORD, |
| 78 | Overlapped: *windows.OVERLAPPED, |
| 79 | ) callconv(windows.WINAPI) windows.BOOL; |
| 80 | |
| 81 | _ = windows.loadWinsockExtensionFunction( |
| 82 | LPFN_CONNECTEX, |
| 83 | try std.os.socket(std.os.AF.INET, std.os.SOCK.DGRAM, 0), |
| 84 | windows.ws2_32.WSAID_CONNECTEX, |
| 85 | ) catch |err| switch (err) { |
| 86 | error.OperationNotSupported => unreachable, |
| 87 | error.ShortRead => unreachable, |
| 88 | else => |e| return e, |
| 89 | }; |
| 90 | } |