authorgravatar for hi@viri.moeviri <hi@viri.moe> 2021-06-12 18:36:22-06:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-06-13 10:26:02+03:00
logb2879825d7e59fc40f3defe272039d723b692f43
treed1e3442602e74cdcfdf17233a5748282e8e5daec
parenta6d72fea06364da26b4efacb188303c5bddf5da3

std.windows: fix `OVERLAPPED`, add `OVERLAPPED_ENTRY`


4 files changed, 51 insertions(+), 14 deletions(-)

lib/std/event/loop.zig+6-2
......@@ -54,8 +54,12 @@ pub const Loop = struct {
5454 .windows => windows.OVERLAPPED{
5555 .Internal = 0,
5656 .InternalHigh = 0,
57 .Offset = 0,
58 .OffsetHigh = 0,
57 .DUMMYUNIONNAME = .{
58 .DUMMYSTRUCTNAME = .{
59 .Offset = 0,
60 .OffsetHigh = 0,
61 },
62 },
5963 .hEvent = null,
6064 },
6165 else => {},
lib/std/fs/watch.zig+6-2
......@@ -437,8 +437,12 @@ pub fn Watch(comptime V: type) type {
437437 .overlapped = windows.OVERLAPPED{
438438 .Internal = 0,
439439 .InternalHigh = 0,
440 .Offset = 0,
441 .OffsetHigh = 0,
440 .DUMMYUNIONNAME = .{
441 .DUMMYSTRUCTNAME = .{
442 .Offset = 0,
443 .OffsetHigh = 0,
444 },
445 },
442446 .hEvent = null,
443447 },
444448 },
lib/std/os/windows.zig+24-8
......@@ -455,8 +455,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
455455 .overlapped = OVERLAPPED{
456456 .Internal = 0,
457457 .InternalHigh = 0,
458 .Offset = @truncate(u32, off),
459 .OffsetHigh = @truncate(u32, off >> 32),
458 .DUMMYUNIONNAME = .{
459 .DUMMYSTRUCTNAME = .{
460 .Offset = @truncate(u32, off),
461 .OffsetHigh = @truncate(u32, off >> 32),
462 },
463 },
460464 .hEvent = null,
461465 },
462466 },
......@@ -491,8 +495,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
491495 overlapped_data = .{
492496 .Internal = 0,
493497 .InternalHigh = 0,
494 .Offset = @truncate(u32, off),
495 .OffsetHigh = @truncate(u32, off >> 32),
498 .DUMMYUNIONNAME = .{
499 .DUMMYSTRUCTNAME = .{
500 .Offset = @truncate(u32, off),
501 .OffsetHigh = @truncate(u32, off >> 32),
502 },
503 },
496504 .hEvent = null,
497505 };
498506 break :blk &overlapped_data;
......@@ -535,8 +543,12 @@ pub fn WriteFile(
535543 .overlapped = OVERLAPPED{
536544 .Internal = 0,
537545 .InternalHigh = 0,
538 .Offset = @truncate(u32, off),
539 .OffsetHigh = @truncate(u32, off >> 32),
546 .DUMMYUNIONNAME = .{
547 .DUMMYSTRUCTNAME = .{
548 .Offset = @truncate(u32, off),
549 .OffsetHigh = @truncate(u32, off >> 32),
550 },
551 },
540552 .hEvent = null,
541553 },
542554 },
......@@ -571,8 +583,12 @@ pub fn WriteFile(
571583 overlapped_data = .{
572584 .Internal = 0,
573585 .InternalHigh = 0,
574 .Offset = @truncate(u32, off),
575 .OffsetHigh = @truncate(u32, off >> 32),
586 .DUMMYUNIONNAME = .{
587 .DUMMYSTRUCTNAME = .{
588 .Offset = @truncate(u32, off),
589 .OffsetHigh = @truncate(u32, off >> 32),
590 },
591 },
576592 .hEvent = null,
577593 };
578594 break :blk &overlapped_data;
lib/std/os/windows/bits.zig+15-2
......@@ -359,12 +359,25 @@ pub const FILE_INFORMATION_CLASS = enum(c_int) {
359359pub const OVERLAPPED = extern struct {
360360 Internal: ULONG_PTR,
361361 InternalHigh: ULONG_PTR,
362 Offset: DWORD,
363 OffsetHigh: DWORD,
362 DUMMYUNIONNAME: extern union {
363 DUMMYSTRUCTNAME: extern struct {
364 Offset: DWORD,
365 OffsetHigh: DWORD,
366 },
367 Pointer: ?PVOID,
368 },
364369 hEvent: ?HANDLE,
365370};
366371pub const LPOVERLAPPED = *OVERLAPPED;
367372
373pub const OVERLAPPED_ENTRY = extern struct {
374 lpCompletionKey: ULONG_PTR,
375 lpOverlapped: LPOVERLAPPED,
376 Internal: ULONG_PTR,
377 dwNumberOfBytesTransferred: DWORD,
378};
379pub const LPOVERLAPPED_ENTRY = *OVERLAPPED_ENTRY;
380
368381pub const MAX_PATH = 260;
369382
370383// TODO issue #305