feature. See also
. The project being documented here (as the example) is the Zig library itself.
windows.AFD
pub const AFD = packed struct(ULONG)
File
Code
pub const AFD = packed struct(ULONG) {
NO_FAST_IO: bool = false,
OVERLAPPED: bool = false,
Reserved0: u30 = 0,
pub const Mutability = enum { @"const", @"var" };
pub fn WSABUF(comptime mutability: Mutability) type {
return extern struct {
len: ULONG,
buf: switch (mutability) {
.@"const" => [*]const u8,
.@"var" => [*]u8,
},
};
}
pub const GUARANTEE = enum(c_int) {
BestEffort,
ControlledLoad,
Predictive,
GuaranteedDelay,
Guaranteed,
_,
};
pub const DEVICE_NAME: []const u16 = &.{ '\\', 'D', 'e', 'v', 'i', 'c', 'e', '\\', 'A', 'f', 'd' };
pub const ENDPOINT_TYPE = packed struct(ULONG) {
CONNECTIONLESS: bool = false,
Reserved1: u3 = 0,
MESSAGEMODE: bool = false,
Reserved5: u3 = 0,
RAW: bool = false,
Reserved9: u22 = 0,
REGISTERED_IO: bool = false,
};
pub const OPEN_PACKET = extern struct {
EndpointType: ENDPOINT_TYPE,
GroupID: LONG,
AddressFamily: LONG,
SocketType: LONG,
Protocol: LONG,
TransportDeviceNameLength: ULONG,
TransportDeviceName: [1]WCHAR,
pub const NAME = "AfdOpenPacketXX";
pub const FULL_EA_INFORMATION = extern struct {
Header: FILE.FULL_EA_INFORMATION = .{
.NextEntryOffset = 0,
.Flags = 0,
.EaNameLength = NAME.len,
.EaValueLength = @sizeOf(OPEN_PACKET),
.EaName = .{},
},
Name: [NAME.len:0]u8 = NAME.*,
Value: OPEN_PACKET,
};
};
pub const BIND_INFO = extern struct {
Mode: MODE,
pub const MODE = enum(ULONG) {
Unix = 0,
Passive = 1,
Active = 2,
_,
};
};
pub const LISTEN_INFO = extern struct {
UseSAN: BOOLEAN,
MaximumConnectionQueue: ULONG,
UseDelayedAcceptance: BOOLEAN,
};
pub const LISTEN_RESPONSE_INFO = extern struct {
Sequence: ULONG,
};
pub const ACCEPT_INFO = extern struct {
UseSAN: BOOLEAN,
Sequence: ULONG,
AcceptHandle: HANDLE,
};
pub const SUPER_ACCEPT_INFO = extern struct {
UseSAN: BOOLEAN,
AcceptHandle: HANDLE,
AcceptEndpoint: PVOID,
AcceptFileObject: PVOID,
ReceiveDataLength: ULONG,
LocalAddressLength: ULONG,
RemoteAddressLength: ULONG,
ListenResponseInfo: LISTEN_RESPONSE_INFO,
};
pub const DEFER_ACCEPT_INFO = extern struct {
Sequence: ULONG,
Reject: BOOLEAN,
};
pub const PARTIAL_DISCONNECT_INFO = extern struct {
DisconnectMode: MODE,
Timeout: LARGE_INTEGER,
pub const MODE = packed struct(ULONG) {
SEND: bool = false,
RECEIVE: bool = false,
ABORTIVE: bool = false,
UNCONNECT_DATAGRAM: bool = false,
Reserved4: u28 = 0,
};
};
pub const RECEIVE_INFORMATION = extern struct {
BytesAvailable: ULONG,
ExpeditedBytesAvailable: ULONG,
};
pub const HANDLE_INFO = extern struct {
TdiAddressHandle: HANDLE,
TdiConnectionHandle: HANDLE,
};
pub const INFORMATION = extern struct {
InformationType: TYPE,
Information: extern union {
Boolean: BOOLEAN,
Ulong: ULONG,
LargeInteger: LARGE_INTEGER,
},
pub const TYPE = enum(ULONG) {
INLINE_MODE = 0x01,
NONBLOCKING_MODE = 0x02,
MAX_SEND_SIZE = 0x03,
SENDS_PENDING = 0x04,
MAX_PATH_SEND_SIZE = 0x05,
RECEIVE_WINDOW_SIZE = 0x06,
SEND_WINDOW_SIZE = 0x07,
CONNECT_TIME = 0x08,
CIRCULAR_QUEUEING = 0x09,
GROUP_ID_AND_TYPE = 0x0A,
_,
};
};
pub const TRANSMIT_FILE_INFO = extern struct {
Offset: LARGE_INTEGER,
WriteLength: LARGE_INTEGER,
SendPacketLength: ULONG,
FileHandle: HANDLE,
Head: PVOID,
HeadLength: ULONG,
Tail: PVOID,
TailLength: ULONG,
Flags: FLAGS,
pub const FLAGS = packed struct(ULONG) {
DISCONNECT: bool = false,
REUSE_SOCKET: bool = false,
WRITE_BEHIND: bool = false,
Reserved3: u25 = 0,
};
};
pub const QUEUE_APC_INFO = extern struct {
Thread: HANDLE,
ApcRoutine: PVOID,
ApcContext: PVOID,
SystemArgument1: PVOID,
SystemArgument2: PVOID,
};
pub const SEND_INFO = extern struct {
BufferArray: [*]const WSABUF(.@"const"),
BufferCount: ULONG,
AfdFlags: AFD,
TdiFlags: TDI.SEND,
};
pub const SEND_DATAGRAM_INFO = extern struct {
BufferArray: [*]const WSABUF(.@"const"),
BufferCount: ULONG,
AfdFlags: AFD,
TdiRequest: TDI.REQUEST.SEND_DATAGRAM,
TdiConnInfo: TDI.CONNECTION.INFORMATION,
};
pub const RECV_INFO = extern struct {
BufferArray: [*]const WSABUF(.@"var"),
BufferCount: ULONG,
AfdFlags: AFD,
TdiFlags: TDI.RECEIVE,
};
pub const RECV_DATAGRAM_INFO = extern struct {
BufferArray: [*]const WSABUF(.@"var"),
BufferCount: ULONG,
AfdFlags: AFD,
TdiFlags: TDI.RECEIVE,
Address: PVOID,
AddressLength: *ULONG,
};
pub const SOCKOPT_INFO = extern struct {
mode: Mode,
level: i32,
optname: u32,
ding: u32 = 1,
optval: *const anyopaque,
optlen: usize,
pub const Mode = enum(u32) { set = 1, get = 2, special = 3, _ };
pub const UNIX_PATH = extern struct { Unknown0: usize = 0, Path: [PATH_MAX_WIDE:0]u16 };
};
}