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 {...@@ -54,8 +54,12 @@ pub const Loop = struct {
54 .windows => windows.OVERLAPPED{54 .windows => windows.OVERLAPPED{
55 .Internal = 0,55 .Internal = 0,
56 .InternalHigh = 0,56 .InternalHigh = 0,
57 .Offset = 0,57 .DUMMYUNIONNAME = .{
58 .OffsetHigh = 0,58 .DUMMYSTRUCTNAME = .{
59 .Offset = 0,
60 .OffsetHigh = 0,
61 },
62 },
59 .hEvent = null,63 .hEvent = null,
60 },64 },
61 else => {},65 else => {},
lib/std/fs/watch.zig+6-2
...@@ -437,8 +437,12 @@ pub fn Watch(comptime V: type) type {...@@ -437,8 +437,12 @@ pub fn Watch(comptime V: type) type {
437 .overlapped = windows.OVERLAPPED{437 .overlapped = windows.OVERLAPPED{
438 .Internal = 0,438 .Internal = 0,
439 .InternalHigh = 0,439 .InternalHigh = 0,
440 .Offset = 0,440 .DUMMYUNIONNAME = .{
441 .OffsetHigh = 0,441 .DUMMYSTRUCTNAME = .{
442 .Offset = 0,
443 .OffsetHigh = 0,
444 },
445 },
442 .hEvent = null,446 .hEvent = null,
443 },447 },
444 },448 },
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...@@ -454,8 +454,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
454 .overlapped = OVERLAPPED{454 .overlapped = OVERLAPPED{
455 .Internal = 0,455 .Internal = 0,
456 .InternalHigh = 0,456 .InternalHigh = 0,
457 .Offset = @truncate(u32, off),457 .DUMMYUNIONNAME = .{
458 .OffsetHigh = @truncate(u32, off >> 32),458 .DUMMYSTRUCTNAME = .{
459 .Offset = @truncate(u32, off),
460 .OffsetHigh = @truncate(u32, off >> 32),
461 },
462 },
459 .hEvent = null,463 .hEvent = null,
460 },464 },
461 },465 },
...@@ -490,8 +494,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo...@@ -490,8 +494,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
490 overlapped_data = .{494 overlapped_data = .{
491 .Internal = 0,495 .Internal = 0,
492 .InternalHigh = 0,496 .InternalHigh = 0,
493 .Offset = @truncate(u32, off),497 .DUMMYUNIONNAME = .{
494 .OffsetHigh = @truncate(u32, off >> 32),498 .DUMMYSTRUCTNAME = .{
499 .Offset = @truncate(u32, off),
500 .OffsetHigh = @truncate(u32, off >> 32),
501 },
502 },
495 .hEvent = null,503 .hEvent = null,
496 };504 };
497 break :blk &overlapped_data;505 break :blk &overlapped_data;
...@@ -534,8 +542,12 @@ pub fn WriteFile(...@@ -534,8 +542,12 @@ pub fn WriteFile(
534 .overlapped = OVERLAPPED{542 .overlapped = OVERLAPPED{
535 .Internal = 0,543 .Internal = 0,
536 .InternalHigh = 0,544 .InternalHigh = 0,
537 .Offset = @truncate(u32, off),545 .DUMMYUNIONNAME = .{
538 .OffsetHigh = @truncate(u32, off >> 32),546 .DUMMYSTRUCTNAME = .{
547 .Offset = @truncate(u32, off),
548 .OffsetHigh = @truncate(u32, off >> 32),
549 },
550 },
539 .hEvent = null,551 .hEvent = null,
540 },552 },
541 },553 },
...@@ -570,8 +582,12 @@ pub fn WriteFile(...@@ -570,8 +582,12 @@ pub fn WriteFile(
570 overlapped_data = .{582 overlapped_data = .{
571 .Internal = 0,583 .Internal = 0,
572 .InternalHigh = 0,584 .InternalHigh = 0,
573 .Offset = @truncate(u32, off),585 .DUMMYUNIONNAME = .{
574 .OffsetHigh = @truncate(u32, off >> 32),586 .DUMMYSTRUCTNAME = .{
587 .Offset = @truncate(u32, off),
588 .OffsetHigh = @truncate(u32, off >> 32),
589 },
590 },
575 .hEvent = null,591 .hEvent = null,
576 };592 };
577 break :blk &overlapped_data;593 break :blk &overlapped_data;
lib/std/os/windows/bits.zig+15-2
...@@ -363,12 +363,25 @@ pub const FILE_INFORMATION_CLASS = enum(c_int) {...@@ -363,12 +363,25 @@ pub const FILE_INFORMATION_CLASS = enum(c_int) {
363pub const OVERLAPPED = extern struct {363pub const OVERLAPPED = extern struct {
364 Internal: ULONG_PTR,364 Internal: ULONG_PTR,
365 InternalHigh: ULONG_PTR,365 InternalHigh: ULONG_PTR,
366 Offset: DWORD,366 DUMMYUNIONNAME: extern union {
367 OffsetHigh: DWORD,367 DUMMYSTRUCTNAME: extern struct {
368 Offset: DWORD,
369 OffsetHigh: DWORD,
370 },
371 Pointer: ?PVOID,
372 },
368 hEvent: ?HANDLE,373 hEvent: ?HANDLE,
369};374};
370pub const LPOVERLAPPED = *OVERLAPPED;375pub 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
372pub const MAX_PATH = 260;385pub const MAX_PATH = 260;
373386
374// TODO issue #305387// TODO issue #305