authorgravatar for hi@viri.moeviri <hi@viri.moe> 2021-06-12 18:36:22-06:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-06-14 12:14:46-07:00
log7f6e7e3e5db5f8dc749e58b704eb0ff812a1cdbf
tree741a5e7609e4ce9b17a2c71fdf793a3d5a22e7a7
parent5c9eb94a2b22162758643c396d5e2cad4b764c09

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
......@@ -454,8 +454,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
454454 .overlapped = OVERLAPPED{
455455 .Internal = 0,
456456 .InternalHigh = 0,
457 .Offset = @truncate(u32, off),
458 .OffsetHigh = @truncate(u32, off >> 32),
457 .DUMMYUNIONNAME = .{
458 .DUMMYSTRUCTNAME = .{
459 .Offset = @truncate(u32, off),
460 .OffsetHigh = @truncate(u32, off >> 32),
461 },
462 },
459463 .hEvent = null,
460464 },
461465 },
......@@ -490,8 +494,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
490494 overlapped_data = .{
491495 .Internal = 0,
492496 .InternalHigh = 0,
493 .Offset = @truncate(u32, off),
494 .OffsetHigh = @truncate(u32, off >> 32),
497 .DUMMYUNIONNAME = .{
498 .DUMMYSTRUCTNAME = .{
499 .Offset = @truncate(u32, off),
500 .OffsetHigh = @truncate(u32, off >> 32),
501 },
502 },
495503 .hEvent = null,
496504 };
497505 break :blk &overlapped_data;
......@@ -534,8 +542,12 @@ pub fn WriteFile(
534542 .overlapped = OVERLAPPED{
535543 .Internal = 0,
536544 .InternalHigh = 0,
537 .Offset = @truncate(u32, off),
538 .OffsetHigh = @truncate(u32, off >> 32),
545 .DUMMYUNIONNAME = .{
546 .DUMMYSTRUCTNAME = .{
547 .Offset = @truncate(u32, off),
548 .OffsetHigh = @truncate(u32, off >> 32),
549 },
550 },
539551 .hEvent = null,
540552 },
541553 },
......@@ -570,8 +582,12 @@ pub fn WriteFile(
570582 overlapped_data = .{
571583 .Internal = 0,
572584 .InternalHigh = 0,
573 .Offset = @truncate(u32, off),
574 .OffsetHigh = @truncate(u32, off >> 32),
585 .DUMMYUNIONNAME = .{
586 .DUMMYSTRUCTNAME = .{
587 .Offset = @truncate(u32, off),
588 .OffsetHigh = @truncate(u32, off >> 32),
589 },
590 },
575591 .hEvent = null,
576592 };
577593 break :blk &overlapped_data;
lib/std/os/windows/bits.zig+15-2
......@@ -363,12 +363,25 @@ pub const FILE_INFORMATION_CLASS = enum(c_int) {
363363pub const OVERLAPPED = extern struct {
364364 Internal: ULONG_PTR,
365365 InternalHigh: ULONG_PTR,
366 Offset: DWORD,
367 OffsetHigh: DWORD,
366 DUMMYUNIONNAME: extern union {
367 DUMMYSTRUCTNAME: extern struct {
368 Offset: DWORD,
369 OffsetHigh: DWORD,
370 },
371 Pointer: ?PVOID,
372 },
368373 hEvent: ?HANDLE,
369374};
370375pub const LPOVERLAPPED = *OVERLAPPED;
371376
377pub const OVERLAPPED_ENTRY = extern struct {
378 lpCompletionKey: ULONG_PTR,
379 lpOverlapped: LPOVERLAPPED,
380 Internal: ULONG_PTR,
381 dwNumberOfBytesTransferred: DWORD,
382};
383pub const LPOVERLAPPED_ENTRY = *OVERLAPPED_ENTRY;
384
372385pub const MAX_PATH = 260;
373386
374387// TODO issue #305