diff --git a/lib/std/event/loop.zig b/lib/std/event/loop.zig index 393d5688a5f90504b6bf1d399ab03d7e95269d0f..ca55a366f8cf4f68c3ad631a925e95ebb021642b 100644 --- a/lib/std/event/loop.zig +++ b/lib/std/event/loop.zig @@ -54,8 +54,12 @@ pub const Loop = struct { .windows => windows.OVERLAPPED{ .Internal = 0, .InternalHigh = 0, - .Offset = 0, - .OffsetHigh = 0, + .DUMMYUNIONNAME = .{ + .DUMMYSTRUCTNAME = .{ + .Offset = 0, + .OffsetHigh = 0, + }, + }, .hEvent = null, }, else => {}, diff --git a/lib/std/fs/watch.zig b/lib/std/fs/watch.zig index a9fd55da0c28e72eecf763a1493e598e51cf28b0..40867bb3b570886b6a661b623e0826ee8fd08eb8 100644 --- a/lib/std/fs/watch.zig +++ b/lib/std/fs/watch.zig @@ -437,8 +437,12 @@ pub fn Watch(comptime V: type) type { .overlapped = windows.OVERLAPPED{ .Internal = 0, .InternalHigh = 0, - .Offset = 0, - .OffsetHigh = 0, + .DUMMYUNIONNAME = .{ + .DUMMYSTRUCTNAME = .{ + .Offset = 0, + .OffsetHigh = 0, + }, + }, .hEvent = null, }, }, diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index 6cbc7d539cb8bcfdf9e70d8889d6be29a41bc797..23252011c2e4893f51ef423e38ee804a8fda130e 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 f4819544f5973456fc30b88aa24ab2c146ccf5e8..977c63cc5b8a6a2caacfa5a78aeffc5f5b26be5e 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