mirror of
https://github.com/ziglang/zig.git
synced 2026-02-18 07:18:38 +00:00
std: add WSAStartup and WSACleanup for windows
This commit is contained in:
parent
4cf535a01b
commit
6469900e79
@ -608,6 +608,24 @@ pub fn GetFileAttributesW(lpFileName: [*]const u16) GetFileAttributesError!DWORD
|
||||
return rc;
|
||||
}
|
||||
|
||||
pub fn WSAStartup(majorVersion: u8, minorVersion: u8) !ws2_32.WSADATA {
|
||||
var wsadata: ws2_32.WSADATA = undefined;
|
||||
return switch (ws2_32.WSAStartup((@as(WORD, minorVersion) << 8) | majorVersion, &wsadata)) {
|
||||
0 => wsadata,
|
||||
else => |err| unexpectedWSAError(err),
|
||||
};
|
||||
}
|
||||
|
||||
pub fn WSACleanup() !void {
|
||||
return switch (ws2_32.WSACleanup()) {
|
||||
0 => {},
|
||||
ws2_32.SOCKET_ERROR => switch (ws2_32.WSAGetLastError()) {
|
||||
else => |err| return unexpectedWSAError(err),
|
||||
},
|
||||
else => unreachable,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn WSASocketW(
|
||||
af: i32,
|
||||
socket_type: i32,
|
||||
|
||||
@ -2,6 +2,31 @@ usingnamespace @import("bits.zig");
|
||||
|
||||
pub const SOCKET = *@OpaqueType();
|
||||
pub const INVALID_SOCKET = @intToPtr(SOCKET, ~@as(usize, 0));
|
||||
pub const SOCKET_ERROR = -1;
|
||||
|
||||
pub const WSADESCRIPTION_LEN = 256;
|
||||
pub const WSASYS_STATUS_LEN = 128;
|
||||
|
||||
pub const WSADATA = if (usize.bit_count == u64.bit_count)
|
||||
extern struct {
|
||||
wVersion: WORD,
|
||||
wHighVersion: WORD,
|
||||
iMaxSockets: u16,
|
||||
iMaxUdpDg: u16,
|
||||
lpVendorInfo: *u8,
|
||||
szDescription: [WSADESCRIPTION_LEN + 1]u8,
|
||||
szSystemStatus: [WSASYS_STATUS_LEN + 1]u8,
|
||||
}
|
||||
else
|
||||
extern struct {
|
||||
wVersion: WORD,
|
||||
wHighVersion: WORD,
|
||||
szDescription: [WSADESCRIPTION_LEN + 1]u8,
|
||||
szSystemStatus: [WSASYS_STATUS_LEN + 1]u8,
|
||||
iMaxSockets: u16,
|
||||
iMaxUdpDg: u16,
|
||||
lpVendorInfo: *u8,
|
||||
};
|
||||
|
||||
pub const MAX_PROTOCOL_CHAIN = 7;
|
||||
|
||||
@ -167,6 +192,11 @@ pub const WSA_QOS_ESDMODEOBJ = 11029;
|
||||
pub const WSA_QOS_ESHAPERATEOBJ = 11030;
|
||||
pub const WSA_QOS_RESERVED_PETYPE = 11031;
|
||||
|
||||
pub extern "ws2_32" stdcallcc fn WSAStartup(
|
||||
wVersionRequired: WORD,
|
||||
lpWSAData: *WSADATA,
|
||||
) c_int;
|
||||
pub extern "ws2_32" stdcallcc fn WSACleanup() c_int;
|
||||
pub extern "ws2_32" stdcallcc fn WSAGetLastError() c_int;
|
||||
pub extern "ws2_32" stdcallcc fn WSASocketA(
|
||||
af: c_int,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user