diff options
| author | viri <hi@viri.moe> | 2021-06-12 18:36:22 -0600 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2021-06-13 10:26:02 +0300 |
| commit | b2879825d7e59fc40f3defe272039d723b692f43 (patch) | |
| tree | d1e3442602e74cdcfdf17233a5748282e8e5daec /lib/std/os | |
| parent | a6d72fea06364da26b4efacb188303c5bddf5da3 (diff) | |
| download | zig-b2879825d7e59fc40f3defe272039d723b692f43.tar.gz zig-b2879825d7e59fc40f3defe272039d723b692f43.zip | |
std.windows: fix `OVERLAPPED`, add `OVERLAPPED_ENTRY`
Diffstat (limited to 'lib/std/os')
| -rw-r--r-- | lib/std/os/windows.zig | 32 | ||||
| -rw-r--r-- | lib/std/os/windows/bits.zig | 17 |
2 files changed, 39 insertions, 10 deletions
diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index 6cbc7d539c..23252011c2 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -455,8 +455,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo .overlapped = OVERLAPPED{ .Internal = 0, .InternalHigh = 0, - .Offset = @truncate(u32, off), - .OffsetHigh = @truncate(u32, off >> 32), + .DUMMYUNIONNAME = .{ + .DUMMYSTRUCTNAME = .{ + .Offset = @truncate(u32, off), + .OffsetHigh = @truncate(u32, off >> 32), + }, + }, .hEvent = null, }, }, @@ -491,8 +495,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo overlapped_data = .{ .Internal = 0, .InternalHigh = 0, - .Offset = @truncate(u32, off), - .OffsetHigh = @truncate(u32, off >> 32), + .DUMMYUNIONNAME = .{ + .DUMMYSTRUCTNAME = .{ + .Offset = @truncate(u32, off), + .OffsetHigh = @truncate(u32, off >> 32), + }, + }, .hEvent = null, }; break :blk &overlapped_data; @@ -535,8 +543,12 @@ pub fn WriteFile( .overlapped = OVERLAPPED{ .Internal = 0, .InternalHigh = 0, - .Offset = @truncate(u32, off), - .OffsetHigh = @truncate(u32, off >> 32), + .DUMMYUNIONNAME = .{ + .DUMMYSTRUCTNAME = .{ + .Offset = @truncate(u32, off), + .OffsetHigh = @truncate(u32, off >> 32), + }, + }, .hEvent = null, }, }, @@ -571,8 +583,12 @@ pub fn WriteFile( overlapped_data = .{ .Internal = 0, .InternalHigh = 0, - .Offset = @truncate(u32, off), - .OffsetHigh = @truncate(u32, off >> 32), + .DUMMYUNIONNAME = .{ + .DUMMYSTRUCTNAME = .{ + .Offset = @truncate(u32, off), + .OffsetHigh = @truncate(u32, off >> 32), + }, + }, .hEvent = null, }; break :blk &overlapped_data; diff --git a/lib/std/os/windows/bits.zig b/lib/std/os/windows/bits.zig index f4819544f5..977c63cc5b 100644 --- a/lib/std/os/windows/bits.zig +++ b/lib/std/os/windows/bits.zig @@ -359,12 +359,25 @@ pub const FILE_INFORMATION_CLASS = enum(c_int) { pub const OVERLAPPED = extern struct { Internal: ULONG_PTR, InternalHigh: ULONG_PTR, - Offset: DWORD, - OffsetHigh: DWORD, + DUMMYUNIONNAME: extern union { + DUMMYSTRUCTNAME: extern struct { + Offset: DWORD, + OffsetHigh: DWORD, + }, + Pointer: ?PVOID, + }, hEvent: ?HANDLE, }; pub const LPOVERLAPPED = *OVERLAPPED; +pub const OVERLAPPED_ENTRY = extern struct { + lpCompletionKey: ULONG_PTR, + lpOverlapped: LPOVERLAPPED, + Internal: ULONG_PTR, + dwNumberOfBytesTransferred: DWORD, +}; +pub const LPOVERLAPPED_ENTRY = *OVERLAPPED_ENTRY; + pub const MAX_PATH = 260; // TODO issue #305 |
