Zig 0.17.0-dev (Split by item) This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig standard library.
std › Io › Threaded › dirAccessWindows Private Function dirAccessWindows Doc Source Private Function std.Io.Threaded.dirAccessWindows
fn dirAccessWindows (
userdata : ?*anyopaque ,
dir : Dir ,
sub_path : []const u8 ,
options : Dir .AccessOptions ,
) Dir .AccessError !void Params userdata : ?*anyopaque dir : Dir sub_path : []const u8 options : Dir .AccessOptions File Io/Threaded.zig: 4299
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332 fn dirAccessWindows (
userdata : ?*anyopaque ,
dir : Dir ,
sub_path : []const u8 ,
options : Dir .AccessOptions ,
) Dir .AccessError !void {
const t : *Threaded = @ptrCast (@alignCast (userdata ));
_ = t ;
_ = options ; // TODO
if (std .mem .eql (u8 , sub_path , "." ) or std .mem .eql (u8 , sub_path , ".." )) return ;
const sub_path_w = try sliceToPrefixedFileW (dir .handle , sub_path , .{});
const attr : windows .OBJECT .ATTRIBUTES = .{
.RootDirectory = if (Dir .path .isAbsoluteWindowsWtf16 (sub_path_w .span ())) null else dir .handle ,
.ObjectName = @constCast (&sub_path_w .string ()),
};
var basic_info : windows .FILE .BASIC_INFORMATION = undefined ;
const syscall : Syscall = try .start ();
while (true ) switch (windows .ntdll .NtQueryAttributesFile (&attr , &basic_info )) {
.SUCCESS => return syscall .finish (),
.CANCELLED => {
try syscall .checkCancel ();
continue ;
},
.OBJECT_NAME_NOT_FOUND => return syscall .fail (error .FileNotFound ),
.OBJECT_PATH_NOT_FOUND => return syscall .fail (error .FileNotFound ),
.OBJECT_NAME_INVALID => |err | return syscall .ntstatusBug (err ),
.INVALID_PARAMETER => |err | return syscall .ntstatusBug (err ),
.ACCESS_DENIED => return syscall .fail (error .AccessDenied ),
.OBJECT_PATH_SYNTAX_BAD => |err | return syscall .ntstatusBug (err ),
else => |rc | return syscall .unexpectedNtstatus (rc ),
};
}