# winlean

- Manual
- Standard library
- Index

Search:
Group by:

This module implements a small wrapper for some needed Win API procedures, so that the Nim compiler does not depend on the huge Windows module.

# Imports

dynlib

# Types

    WinChar = Utf16Char

  Source Edit

    Handle = int

  Source Edit

    LONG = int32

  Source Edit

    ULONG = int32

  Source Edit

    PULONG = ptr int

  Source Edit

    WINBOOL = int32

  Source Edit

    DWORD = int32

  Source Edit

    PDWORD = ptr DWORD

  Source Edit

    LPINT = ptr int32

  Source Edit

    ULONG_PTR = uint

  Source Edit

    PULONG_PTR = ptr uint

  Source Edit

    HDC = Handle

  Source Edit

    HGLRC = Handle

  Source Edit

    SECURITY_ATTRIBUTES {...}{.final, pure.} = object
      nLength*: int32
      lpSecurityDescriptor*: pointer
      bInheritHandle*: WINBOOL

  Source Edit

    STARTUPINFO {...}{.final, pure.} = object
      cb*: int32
      lpReserved*: cstring
      lpDesktop*: cstring
      lpTitle*: cstring
      dwX*: int32
      dwY*: int32
      dwXSize*: int32
      dwYSize*: int32
      dwXCountChars*: int32
      dwYCountChars*: int32
      dwFillAttribute*: int32
      dwFlags*: int32
      wShowWindow*: int16
      cbReserved2*: int16
      lpReserved2*: pointer
      hStdInput*: Handle
      hStdOutput*: Handle
      hStdError*: Handle

  Source Edit

    PROCESS_INFORMATION {...}{.final, pure.} = object
      hProcess*: Handle
      hThread*: Handle
      dwProcessId*: int32
      dwThreadId*: int32

  Source Edit

    FILETIME {...}{.final, pure.} = object
      dwLowDateTime*: DWORD
      dwHighDateTime*: DWORD

  CANNOT BE int64 BECAUSE OF ALIGNMENT Source Edit

    BY_HANDLE_FILE_INFORMATION {...}{.final, pure.} = object
      dwFileAttributes*: DWORD
      ftCreationTime*: FILETIME
      ftLastAccessTime*: FILETIME
      ftLastWriteTime*: FILETIME
      dwVolumeSerialNumber*: DWORD
      nFileSizeHigh*: DWORD
      nFileSizeLow*: DWORD
      nNumberOfLinks*: DWORD
      nFileIndexHigh*: DWORD
      nFileIndexLow*: DWORD

  Source Edit

    OSVERSIONINFO {...}{.final, pure.} = object
      dwOSVersionInfoSize*: DWORD
      dwMajorVersion*: DWORD
      dwMinorVersion*: DWORD
      dwBuildNumber*: DWORD
      dwPlatformId*: DWORD
      szCSDVersion*: array[0 .. 127, WinChar]

  Source Edit

    WIN32_FIND_DATA {...}{.pure.} = object
      dwFileAttributes*: int32
      ftCreationTime*: FILETIME
      ftLastAccessTime*: FILETIME
      ftLastWriteTime*: FILETIME
      nFileSizeHigh*: int32
      nFileSizeLow*: int32
      dwReserved0: int32
      dwReserved1: int32
      cFileName*: array[0 .. 260 - 1, WinChar]
      cAlternateFileName*: array[0 .. 13, WinChar]

  Source Edit

    SocketHandle = distinct int

  Source Edit

    WSAData {...}{.importc: "WSADATA", header: "winsock2.h".} = object
      wVersion, wHighVersion: int16
      szDescription: array[0 .. WSADESCRIPTION_LEN, char]
      szSystemStatus: array[0 .. WSASYS_STATUS_LEN, char]
      iMaxSockets, iMaxUdpDg: int16
      lpVendorInfo: cstring

  Source Edit

    SockAddr {...}{.importc: "SOCKADDR", header: "winsock2.h".} = object
      sa_family*: uint16
      sa_data*: array[0 .. 13, char]

  Source Edit

    InAddr {...}{.importc: "IN_ADDR", header: "winsock2.h".} = object
      s_addr*: uint32

  Source Edit

    Sockaddr_in {...}{.importc: "SOCKADDR_IN", header: "winsock2.h".} = object
      sin_family*: uint16
      sin_port*: uint16
      sin_addr*: InAddr
      sin_zero*: array[0 .. 7, char]

  Source Edit

    In6_addr {...}{.importc: "IN6_ADDR", header: "winsock2.h".} = object
      bytes* {...}{.importc: "u.Byte".}: array[0 .. 15, char]

  Source Edit

    Sockaddr_in6 {...}{.importc: "SOCKADDR_IN6", header: "ws2tcpip.h".} = object
      sin6_family*: uint16
      sin6_port*: uint16
      sin6_flowinfo*: int32
      sin6_addr*: In6_addr
      sin6_scope_id*: int32

  Source Edit

    Sockaddr_storage {...}{.importc: "SOCKADDR_STORAGE", header: "winsock2.h".} = object
      ss_family*: uint16
      ss_pad1: array[6, byte]
      ss_align: int64
      ss_pad2: array[112, byte]

  Source Edit

    Servent = object
      s_name*: cstring
      s_aliases*: cstringArray
      when defined(cpu64):
          s_proto*: cstring
          s_port*: int16

      else:
          s_port*: int16
          s_proto*: cstring

  Source Edit

    Hostent = object
      h_name*: cstring
      h_aliases*: cstringArray
      h_addrtype*: int16
      h_length*: int16
      h_addr_list*: cstringArray

  Source Edit

    TFdSet = object
      fd_count*: cint
      fd_array*: array[0 .. 64 - 1, SocketHandle]

  Source Edit

    AddrInfo = object
      ai_flags*: cint              ## Input flags.
      ai_family*: cint             ## Address family of socket.
      ai_socktype*: cint           ## Socket type.
      ai_protocol*: cint           ## Protocol of socket.
      ai_addrlen*: csize           ## Length of socket address.
      ai_canonname*: cstring       ## Canonical name of service location.
      ai_addr*: ptr SockAddr        ## Socket address of socket.
      ai_next*: ptr AddrInfo        ## Pointer to next in list.

  Source Edit

    SockLen = cuint

  Source Edit

    Timeval = object
      tv_sec*, tv_usec*: int32

  Source Edit

    WOHandleArray = array[0 .. 0x00000000 - 1, Handle]

  Source Edit

    PWOHandleArray = ptr WOHandleArray

  Source Edit

    WinSizeT = uint32

  Source Edit

    OVERLAPPED {...}{.pure, inheritable.} = object
      internal*: PULONG
      internalHigh*: PULONG
      offset*: DWORD
      offsetHigh*: DWORD
      hEvent*: Handle

  Source Edit

    POVERLAPPED = ptr OVERLAPPED

  Source Edit

    POVERLAPPED_COMPLETION_ROUTINE = proc (para1: DWORD; para2: DWORD; para3: POVERLAPPED) {...}{.
        stdcall.}

  Source Edit

    GUID {...}{.final, pure.} = object
      D1*: int32
      D2*: int16
      D3*: int16
      D4*: array[0 .. 7, int8]

  Source Edit

    TWSABuf {...}{.importc: "WSABUF", header: "winsock2.h".} = object
      len*: ULONG
      buf*: cstring

  Source Edit

    WSAPROC_ACCEPTEX = proc (sListenSocket: SocketHandle; sAcceptSocket: SocketHandle;
                          lpOutputBuffer: pointer; dwReceiveDataLength: DWORD;
                          dwLocalAddressLength: DWORD; dwRemoteAddressLength: DWORD;
                          lpdwBytesReceived: ptr DWORD; lpOverlapped: POVERLAPPED): bool {...}{.
        stdcall, gcsafe.}

  Source Edit

    WSAPROC_CONNECTEX = proc (s: SocketHandle; name: ptr SockAddr; namelen: cint;
                           lpSendBuffer: pointer; dwSendDataLength: DWORD;
                           lpdwBytesSent: ptr DWORD; lpOverlapped: POVERLAPPED): bool {...}{.
        stdcall, gcsafe.}

  Source Edit

    WSAPROC_GETACCEPTEXSOCKADDRS = proc (lpOutputBuffer: pointer;
                                      dwReceiveDataLength: DWORD;
                                      dwLocalAddressLength: DWORD;
                                      dwRemoteAddressLength: DWORD;
                                      LocalSockaddr: ptr PSockAddr;
                                      LocalSockaddrLength: ptr cint;
                                      RemoteSockaddr: ptr PSockAddr;
                                      RemoteSockaddrLength: ptr cint) {...}{.stdcall, gcsafe.}

  Source Edit

    WAITORTIMERCALLBACK = proc (para1: pointer; para2: int32): void {...}{.stdcall.}

  Source Edit

    KEY_EVENT_RECORD {...}{.final, pure.} = object
      eventType*: int16
      bKeyDown*: WINBOOL
      wRepeatCount*: int16
      wVirtualKeyCode*: int16
      wVirtualScanCode*: int16
      uChar*: int16
      dwControlKeyState*: DWORD

  Source Edit

    LPFIBER_START_ROUTINE = proc (param: pointer): void {...}{.stdcall.}

  Source Edit

    LPFILETIME = ptr FILETIME

  Source Edit

# Vars

    SOMAXCONN: cint

  Source Edit

    INVALID_SOCKET: SocketHandle

  Source Edit

    SOL_SOCKET: cint

  Source Edit

    SO_DEBUG: cint

  turn on debugging info recording Source Edit

    SO_ACCEPTCONN: cint

  Source Edit

    SO_REUSEADDR: cint

  Source Edit

    SO_REUSEPORT: cint

  Source Edit

    SO_KEEPALIVE: cint

  Source Edit

    SO_DONTROUTE: cint

  Source Edit

    SO_BROADCAST: cint

  Source Edit

    SO_USELOOPBACK: cint

  Source Edit

    SO_LINGER: cint

  Source Edit

    SO_OOBINLINE: cint

  Source Edit

    SO_DONTLINGER: cint

  Source Edit

    SO_EXCLUSIVEADDRUSE: cint

  Source Edit

    SO_ERROR: cint

  Source Edit

    TCP_NODELAY: cint

  Source Edit

    WSAID_CONNECTEX: GUID = GUID(D1: 0x00000000, D2: 0xDDF3'i16, D3: 0x00000000, D4: [0x8E'i8,
        0xE9'i8, 0x76'i8, 0xE5'i8, 0x8C'i8, 0x74'i8, 0x06'i8, 0x3E'i8])

  Source Edit

    WSAID_ACCEPTEX: GUID = GUID(D1: 0x00000000'i32, D2: 0xCBAC'i16, D3: 0x00000000, D4: [
        0x95'i8, 0xCA'i8, 0x00'i8, 0x80'i8, 0x5F'i8, 0x48'i8, 0xA1'i8, 0x92'i8])

  Source Edit

    WSAID_GETACCEPTEXSOCKADDRS: GUID = GUID(D1: 0x00000000'i32, D2: 0xCBAC'i16,
                                         D3: 0x00000000, D4: [0x95'i8, 0xCA'i8, 0x00'i8,
        0x80'i8, 0x5F'i8, 0x48'i8, 0xA1'i8, 0x92'i8])

  Source Edit

# Consts

    useWinUnicode = true

  Source Edit

    STARTF_USESHOWWINDOW = 1'i32

  Source Edit

    STARTF_USESTDHANDLES = 256'i32

  Source Edit

    HIGH_PRIORITY_CLASS = 128'i32

  Source Edit

    IDLE_PRIORITY_CLASS = 64'i32

  Source Edit

    NORMAL_PRIORITY_CLASS = 32'i32

  Source Edit

    REALTIME_PRIORITY_CLASS = 256'i32

  Source Edit

    WAIT_OBJECT_0 = 0'i32

  Source Edit

    WAIT_TIMEOUT = 0x00000000'i32

  Source Edit

    WAIT_FAILED = 0x00000000'i32

  Source Edit

    INFINITE = -1'i32

  Source Edit

    STILL_ACTIVE = 0x00000000'i32

  Source Edit

    STD_INPUT_HANDLE = -10'i32

  Source Edit

    STD_OUTPUT_HANDLE = -11'i32

  Source Edit

    STD_ERROR_HANDLE = -12'i32

  Source Edit

    DETACHED_PROCESS = 8'i32

  Source Edit

    SW_SHOWNORMAL = 1'i32

  Source Edit

    INVALID_HANDLE_VALUE = -1

  Source Edit

    CREATE_UNICODE_ENVIRONMENT = 1024'i32

  Source Edit

    PIPE_ACCESS_DUPLEX = 0x00000000'i32

  Source Edit

    PIPE_ACCESS_INBOUND = 1'i32

  Source Edit

    PIPE_ACCESS_OUTBOUND = 2'i32

  Source Edit

    PIPE_NOWAIT = 0x00000000'i32

  Source Edit

    SYNCHRONIZE = 0x00000000'i32

  Source Edit

    CREATE_NO_WINDOW = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_READONLY = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_HIDDEN = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_SYSTEM = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_DIRECTORY = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_ARCHIVE = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_DEVICE = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_NORMAL = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_TEMPORARY = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_SPARSE_FILE = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_REPARSE_POINT = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_COMPRESSED = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_OFFLINE = 0x00000000'i32

  Source Edit

    FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00000000'i32

  Source Edit

    FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00000000'i32

  Source Edit

    FILE_FLAG_OPEN_NO_RECALL = 0x00000000'i32

  Source Edit

    FILE_FLAG_OPEN_REPARSE_POINT = 0x00000000'i32

  Source Edit

    FILE_FLAG_POSIX_SEMANTICS = 0x00000000'i32

  Source Edit

    FILE_FLAG_BACKUP_SEMANTICS = 0x00000000'i32

  Source Edit

    FILE_FLAG_DELETE_ON_CLOSE = 0x00000000'i32

  Source Edit

    FILE_FLAG_SEQUENTIAL_SCAN = 0x00000000'i32

  Source Edit

    FILE_FLAG_RANDOM_ACCESS = 0x00000000'i32

  Source Edit

    FILE_FLAG_NO_BUFFERING = 0x00000000'i32

  Source Edit

    FILE_FLAG_OVERLAPPED = 0x00000000'i32

  Source Edit

    FILE_FLAG_WRITE_THROUGH = 0x00000000'i32

  Source Edit

    MAX_PATH = 260

  Source Edit

    MOVEFILE_COPY_ALLOWED = 0x00000000'i32

  Source Edit

    MOVEFILE_CREATE_HARDLINK = 0x00000000'i32

  Source Edit

    MOVEFILE_DELAY_UNTIL_REBOOT = 0x00000000'i32

  Source Edit

    MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x00000000'i32

  Source Edit

    MOVEFILE_REPLACE_EXISTING = 0x00000000'i32

  Source Edit

    MOVEFILE_WRITE_THROUGH = 0x00000000'i32

  Source Edit

    WSADESCRIPTION_LEN = 256

  Source Edit

    WSASYS_STATUS_LEN = 128

  Source Edit

    FD_SETSIZE = 64

  Source Edit

    MSG_PEEK = 2

  Source Edit

    INADDR_ANY = 0'u32

  Source Edit

    INADDR_LOOPBACK = 0x00000000

  Source Edit

    INADDR_BROADCAST = -1

  Source Edit

    INADDR_NONE = -1

  Source Edit

    MAXIMUM_WAIT_OBJECTS = 0x00000000

  Source Edit

    GENERIC_READ = 0x00000000'i32

  Source Edit

    GENERIC_WRITE = 0x00000000'i32

  Source Edit

    GENERIC_ALL = 0x00000000'i32

  Source Edit

    FILE_SHARE_READ = 1'i32

  Source Edit

    FILE_SHARE_DELETE = 4'i32

  Source Edit

    FILE_SHARE_WRITE = 2'i32

  Source Edit

    CREATE_ALWAYS = 2'i32

  Source Edit

    CREATE_NEW = 1'i32

  Source Edit

    OPEN_EXISTING = 3'i32

  Source Edit

    OPEN_ALWAYS = 4'i32

  Source Edit

    FILE_BEGIN = 0'i32

  Source Edit

    INVALID_SET_FILE_POINTER = -1'i32

  Source Edit

    NO_ERROR = 0'i32

  Source Edit

    PAGE_NOACCESS = 0x00000000'i32

  Source Edit

    PAGE_EXECUTE = 0x00000000'i32

  Source Edit

    PAGE_EXECUTE_READ = 0x00000000'i32

  Source Edit

    PAGE_EXECUTE_READWRITE = 0x00000000'i32

  Source Edit

    PAGE_READONLY = 2'i32

  Source Edit

    PAGE_READWRITE = 4'i32

  Source Edit

    FILE_MAP_READ = 4'i32

  Source Edit

    FILE_MAP_WRITE = 2'i32

  Source Edit

    INVALID_FILE_SIZE = -1'i32

  Source Edit

    DUPLICATE_SAME_ACCESS = 2

  Source Edit

    FILE_READ_DATA = 0x00000000

  Source Edit

    FILE_WRITE_DATA = 0x00000000

  Source Edit

    ERROR_FILE_NOT_FOUND = 2

  Source Edit

    ERROR_PATH_NOT_FOUND = 3

  Source Edit

    ERROR_ACCESS_DENIED = 5

  Source Edit

    ERROR_NO_MORE_FILES = 18

  Source Edit

    ERROR_LOCK_VIOLATION = 33

  Source Edit

    ERROR_HANDLE_EOF = 38

  Source Edit

    ERROR_BAD_ARGUMENTS = 165

  Source Edit

    ERROR_IO_PENDING = 997

  Source Edit

    WSAECONNABORTED = 10053

  Source Edit

    WSAEADDRINUSE = 10048

  Source Edit

    WSAECONNRESET = 10054

  Source Edit

    WSAEDISCON = 10101

  Source Edit

    WSAENETRESET = 10052

  Source Edit

    WSAETIMEDOUT = 10060

  Source Edit

    WSANOTINITIALISED = 10093

  Source Edit

    WSAENOTSOCK = 10038

  Source Edit

    WSAEINPROGRESS = 10036

  Source Edit

    WSAEINTR = 10004

  Source Edit

    WSAEWOULDBLOCK = 10035

  Source Edit

    ERROR_NETNAME_DELETED = 64

  Source Edit

    STATUS_PENDING = 0x00000000

  Source Edit

    IOC_OUT = 0x00000000'i32

  Source Edit

    IOC_IN = 0x00000000'i32

  Source Edit

    IOC_WS2 = 0x00000000'i32

  Source Edit

    IOC_INOUT = -1073741824'i32

  Source Edit

    SIO_GET_EXTENSION_FUNCTION_POINTER = -939524090'i32

  Source Edit

    SO_UPDATE_ACCEPT_CONTEXT = 0x00000000

  Source Edit

    AI_V4MAPPED = 0x00000000

  Source Edit

    AF_UNSPEC = 0

  Source Edit

    AF_INET = 2

  Source Edit

    AF_INET6 = 23

  Source Edit

    WT_EXECUTEDEFAULT = 0x00000000'i32

  Source Edit

    WT_EXECUTEINIOTHREAD = 0x00000000'i32

  Source Edit

    WT_EXECUTEINUITHREAD = 0x00000000'i32

  Source Edit

    WT_EXECUTEINWAITTHREAD = 0x00000000'i32

  Source Edit

    WT_EXECUTEONLYONCE = 0x00000000'i32

  Source Edit

    WT_EXECUTELONGFUNCTION = 0x00000000'i32

  Source Edit

    WT_EXECUTEINTIMERTHREAD = 0x00000000'i32

  Source Edit

    WT_EXECUTEINPERSISTENTIOTHREAD = 0x00000000'i32

  Source Edit

    WT_EXECUTEINPERSISTENTTHREAD = 0x00000000'i32

  Source Edit

    WT_TRANSFER_IMPERSONATION = 0x00000000'i32

  Source Edit

    PROCESS_TERMINATE = 0x00000000'i32

  Source Edit

    PROCESS_CREATE_THREAD = 0x00000000'i32

  Source Edit

    PROCESS_SET_SESSIONID = 0x00000000'i32

  Source Edit

    PROCESS_VM_OPERATION = 0x00000000'i32

  Source Edit

    PROCESS_VM_READ = 0x00000000'i32

  Source Edit

    PROCESS_VM_WRITE = 0x00000000'i32

  Source Edit

    PROCESS_DUP_HANDLE = 0x00000000'i32

  Source Edit

    PROCESS_CREATE_PROCESS = 0x00000000'i32

  Source Edit

    PROCESS_SET_QUOTA = 0x00000000'i32

  Source Edit

    PROCESS_SET_INFORMATION = 0x00000000'i32

  Source Edit

    PROCESS_QUERY_INFORMATION = 0x00000000'i32

  Source Edit

    PROCESS_SUSPEND_RESUME = 0x00000000'i32

  Source Edit

    PROCESS_QUERY_LIMITED_INFORMATION = 0x00000000'i32

  Source Edit

    PROCESS_SET_LIMITED_INFORMATION = 0x00000000'i32

  Source Edit

    FD_READ = 0x00000000'i32

  Source Edit

    FD_WRITE = 0x00000000'i32

  Source Edit

    FD_OOB = 0x00000000'i32

  Source Edit

    FD_ACCEPT = 0x00000000'i32

  Source Edit

    FD_CONNECT = 0x00000000'i32

  Source Edit

    FD_CLOSE = 0x00000000'i32

  Source Edit

    FD_QQS = 0x00000000'i32

  Source Edit

    FD_GROUP_QQS = 0x00000000'i32

  Source Edit

    FD_ROUTING_INTERFACE_CHANGE = 0x00000000'i32

  Source Edit

    FD_ADDRESS_LIST_CHANGE = 0x00000000'i32

  Source Edit

    FD_ALL_EVENTS = 0x00000000'i32

  Source Edit

    FIBER_FLAG_FLOAT_SWITCH = 0x00000000

  Source Edit

# Procs

    proc getVersionExW(lpVersionInfo: ptr OSVERSIONINFO): WINBOOL {...}{.stdcall,
        dynlib: "kernel32", importc: "GetVersionExW".}

  Source Edit

    proc getVersion(): DWORD {...}{.stdcall, dynlib: "kernel32", importc: "GetVersion".}

  Source Edit

    proc closeHandle(hObject: Handle): WINBOOL {...}{.stdcall, dynlib: "kernel32",
        importc: "CloseHandle".}

  Source Edit

    proc readFile(hFile: Handle; buffer: pointer; nNumberOfBytesToRead: int32;
                 lpNumberOfBytesRead: ptr int32; lpOverlapped: pointer): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "ReadFile".}

  Source Edit

    proc writeFile(hFile: Handle; buffer: pointer; nNumberOfBytesToWrite: int32;
                  lpNumberOfBytesWritten: ptr int32; lpOverlapped: pointer): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "WriteFile".}

  Source Edit

    proc createPipe(hReadPipe, hWritePipe: var Handle;
                   lpPipeAttributes: var SECURITY_ATTRIBUTES; nSize: int32): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "CreatePipe".}

  Source Edit

    proc createNamedPipe(lpName: WideCString; dwOpenMode, dwPipeMode, nMaxInstances,
                                           nOutBufferSize, nInBufferSize,
                                           nDefaultTimeOut: int32;
                        lpSecurityAttributes: ptr SECURITY_ATTRIBUTES): Handle {...}{.
        stdcall, dynlib: "kernel32", importc: "CreateNamedPipeW".}

  Source Edit

    proc peekNamedPipe(hNamedPipe: Handle; lpBuffer: pointer = nil; nBufferSize: int32 = 0;
                      lpBytesRead: ptr int32 = nil; lpTotalBytesAvail: ptr int32 = nil;
                      lpBytesLeftThisMessage: ptr int32 = nil): bool {...}{.stdcall,
        dynlib: "kernel32", importc: "PeekNamedPipe".}

  Source Edit

    proc createProcessW(lpApplicationName, lpCommandLine: WideCString;
                       lpProcessAttributes: ptr SECURITY_ATTRIBUTES;
                       lpThreadAttributes: ptr SECURITY_ATTRIBUTES;
                       bInheritHandles: WINBOOL; dwCreationFlags: int32;
                       lpEnvironment, lpCurrentDirectory: WideCString;
                       lpStartupInfo: var STARTUPINFO;
                       lpProcessInformation: var PROCESS_INFORMATION): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "CreateProcessW".}

  Source Edit

    proc suspendThread(hThread: Handle): int32 {...}{.stdcall, dynlib: "kernel32",
        importc: "SuspendThread".}

  Source Edit

    proc resumeThread(hThread: Handle): int32 {...}{.stdcall, dynlib: "kernel32",
                                            importc: "ResumeThread".}

  Source Edit

    proc waitForSingleObject(hHandle: Handle; dwMilliseconds: int32): int32 {...}{.stdcall,
        dynlib: "kernel32", importc: "WaitForSingleObject".}

  Source Edit

    proc terminateProcess(hProcess: Handle; uExitCode: int): WINBOOL {...}{.stdcall,
        dynlib: "kernel32", importc: "TerminateProcess".}

  Source Edit

    proc getExitCodeProcess(hProcess: Handle; lpExitCode: var int32): WINBOOL {...}{.stdcall,
        dynlib: "kernel32", importc: "GetExitCodeProcess".}

  Source Edit

    proc getStdHandle(nStdHandle: int32): Handle {...}{.stdcall, dynlib: "kernel32",
        importc: "GetStdHandle".}

  Source Edit

    proc setStdHandle(nStdHandle: int32; hHandle: Handle): WINBOOL {...}{.stdcall,
        dynlib: "kernel32", importc: "SetStdHandle".}

  Source Edit

    proc flushFileBuffers(hFile: Handle): WINBOOL {...}{.stdcall, dynlib: "kernel32",
        importc: "FlushFileBuffers".}

  Source Edit

    proc getLastError(): int32 {...}{.importc: "GetLastError", stdcall, dynlib: "kernel32".}

  Source Edit

    proc setLastError(error: int32) {...}{.importc: "SetLastError", stdcall, dynlib: "kernel32".}

  Source Edit

    proc formatMessageW(dwFlags: int32; lpSource: pointer;
                       dwMessageId, dwLanguageId: int32; lpBuffer: pointer; nSize: int32;
                       arguments: pointer): int32 {...}{.importc: "FormatMessageW", stdcall,
        dynlib: "kernel32".}

  Source Edit

    proc localFree(p: pointer) {...}{.importc: "LocalFree", stdcall, dynlib: "kernel32".}

  Source Edit

    proc getCurrentDirectoryW(nBufferLength: int32; lpBuffer: WideCString): int32 {...}{.
        importc: "GetCurrentDirectoryW", dynlib: "kernel32", stdcall.}

  Source Edit

    proc setCurrentDirectoryW(lpPathName: WideCString): int32 {...}{.
        importc: "SetCurrentDirectoryW", dynlib: "kernel32", stdcall.}

  Source Edit

    proc createDirectoryW(pathName: WideCString; security: pointer = nil): int32 {...}{.
        importc: "CreateDirectoryW", dynlib: "kernel32", stdcall.}

  Source Edit

    proc removeDirectoryW(lpPathName: WideCString): int32 {...}{.importc: "RemoveDirectoryW",
        dynlib: "kernel32", stdcall.}

  Source Edit

    proc setEnvironmentVariableW(lpName, lpValue: WideCString): int32 {...}{.stdcall,
        dynlib: "kernel32", importc: "SetEnvironmentVariableW".}

  Source Edit

    proc getModuleFileNameW(handle: Handle; buf: WideCString; size: int32): int32 {...}{.
        importc: "GetModuleFileNameW", dynlib: "kernel32", stdcall.}

  Source Edit

    proc createSymbolicLinkW(lpSymlinkFileName, lpTargetFileName: WideCString;
                            flags: DWORD): int32 {...}{.importc: "CreateSymbolicLinkW",
        dynlib: "kernel32", stdcall.}

  Source Edit

    proc createHardLinkW(lpFileName, lpExistingFileName: WideCString;
                        security: pointer = nil): int32 {...}{.importc: "CreateHardLinkW",
        dynlib: "kernel32", stdcall.}

  Source Edit

    proc findFirstFileW(lpFileName: WideCString; lpFindFileData: var WIN32_FIND_DATA): Handle {...}{.
        stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}

  Source Edit

    proc findNextFileW(hFindFile: Handle; lpFindFileData: var WIN32_FIND_DATA): int32 {...}{.
        stdcall, dynlib: "kernel32", importc: "FindNextFileW".}

  Source Edit

    proc findClose(hFindFile: Handle) {...}{.stdcall, dynlib: "kernel32", importc: "FindClose".}

  Source Edit

    proc getFullPathNameW(lpFileName: WideCString; nBufferLength: int32;
                         lpBuffer: WideCString; lpFilePart: var WideCString): int32 {...}{.
        stdcall, dynlib: "kernel32", importc: "GetFullPathNameW".}

  Source Edit

    proc getFileAttributesW(lpFileName: WideCString): int32 {...}{.stdcall,
        dynlib: "kernel32", importc: "GetFileAttributesW".}

  Source Edit

    proc setFileAttributesW(lpFileName: WideCString; dwFileAttributes: int32): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "SetFileAttributesW".}

  Source Edit

    proc copyFileW(lpExistingFileName, lpNewFileName: WideCString;
                  bFailIfExists: WINBOOL): WINBOOL {...}{.importc: "CopyFileW", stdcall,
        dynlib: "kernel32".}

  Source Edit

    proc moveFileW(lpExistingFileName, lpNewFileName: WideCString): WINBOOL {...}{.
        importc: "MoveFileW", stdcall, dynlib: "kernel32".}

  Source Edit

    proc moveFileExW(lpExistingFileName, lpNewFileName: WideCString; flags: DWORD): WINBOOL {...}{.
        importc: "MoveFileExW", stdcall, dynlib: "kernel32".}

  Source Edit

    proc getEnvironmentStringsW(): WideCString {...}{.stdcall, dynlib: "kernel32",
        importc: "GetEnvironmentStringsW".}

  Source Edit

    proc freeEnvironmentStringsW(para1: WideCString): int32 {...}{.stdcall,
        dynlib: "kernel32", importc: "FreeEnvironmentStringsW".}

  Source Edit

    proc getCommandLineW(): WideCString {...}{.importc: "GetCommandLineW", stdcall,
                                       dynlib: "kernel32".}

  Source Edit

    proc rdFileTime(f: FILETIME): int64 {...}{.raises: [], tags: [].}

  Source Edit

    proc rdFileSize(f: WIN32_FIND_DATA): int64 {...}{.raises: [], tags: [].}

  Source Edit

    proc getSystemTimeAsFileTime(lpSystemTimeAsFileTime: var FILETIME) {...}{.
        importc: "GetSystemTimeAsFileTime", dynlib: "kernel32", stdcall.}

  Source Edit

    proc sleep(dwMilliseconds: int32) {...}{.stdcall, dynlib: "kernel32", importc: "Sleep".}

  Source Edit

    proc shellExecuteW(hwnd: Handle;
                      lpOperation, lpFile, lpParameters, lpDirectory: WideCString;
                      nShowCmd: int32): Handle {...}{.stdcall, dynlib: "shell32.dll",
        importc: "ShellExecuteW".}

  Source Edit

    proc getFileInformationByHandle(hFile: Handle; lpFileInformation: ptr BY_HANDLE_FILE_INFORMATION): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "GetFileInformationByHandle".}

  Source Edit

    proc wsaGetLastError(): cint {...}{.importc: "WSAGetLastError", dynlib: ws2dll.}

  Source Edit

    proc `==`(x, y: SocketHandle): bool {...}{.borrow.}

  Source Edit

    proc getservbyname(name, proto: cstring): ptr Servent {...}{.stdcall,
        importc: "getservbyname", dynlib: ws2dll.}

  Source Edit

    proc getservbyport(port: cint; proto: cstring): ptr Servent {...}{.stdcall,
        importc: "getservbyport", dynlib: ws2dll.}

  Source Edit

    proc gethostbyaddr(ip: ptr InAddr; len: cuint; theType: cint): ptr Hostent {...}{.stdcall,
        importc: "gethostbyaddr", dynlib: ws2dll.}

  Source Edit

    proc gethostbyname(name: cstring): ptr Hostent {...}{.stdcall, importc: "gethostbyname",
        dynlib: ws2dll.}

  Source Edit

    proc gethostname(hostname: cstring; len: cint): cint {...}{.stdcall, importc: "gethostname",
        dynlib: ws2dll.}

  Source Edit

    proc socket(af, typ, protocol: cint): SocketHandle {...}{.stdcall, importc: "socket",
        dynlib: ws2dll.}

  Source Edit

    proc closesocket(s: SocketHandle): cint {...}{.stdcall, importc: "closesocket",
                                          dynlib: ws2dll.}

  Source Edit

    proc accept(s: SocketHandle; a: ptr SockAddr; addrlen: ptr SockLen): SocketHandle {...}{.
        stdcall, importc: "accept", dynlib: ws2dll.}

  Source Edit

    proc bindSocket(s: SocketHandle; name: ptr SockAddr; namelen: SockLen): cint {...}{.stdcall,
        importc: "bind", dynlib: ws2dll.}

  Source Edit

    proc connect(s: SocketHandle; name: ptr SockAddr; namelen: SockLen): cint {...}{.stdcall,
        importc: "connect", dynlib: ws2dll.}

  Source Edit

    proc getsockname(s: SocketHandle; name: ptr SockAddr; namelen: ptr SockLen): cint {...}{.
        stdcall, importc: "getsockname", dynlib: ws2dll.}

  Source Edit

    proc getpeername(s: SocketHandle; name: ptr SockAddr; namelen: ptr SockLen): cint {...}{.
        stdcall, importc, dynlib: ws2dll.}

  Source Edit

    proc getsockopt(s: SocketHandle; level, optname: cint; optval: pointer;
                   optlen: ptr SockLen): cint {...}{.stdcall, importc: "getsockopt",
                                            dynlib: ws2dll.}

  Source Edit

    proc setsockopt(s: SocketHandle; level, optname: cint; optval: pointer; optlen: SockLen): cint {...}{.
        stdcall, importc: "setsockopt", dynlib: ws2dll.}

  Source Edit

    proc listen(s: SocketHandle; backlog: cint): cint {...}{.stdcall, importc: "listen",
        dynlib: ws2dll.}

  Source Edit

    proc recv(s: SocketHandle; buf: pointer; len, flags: cint): cint {...}{.stdcall,
        importc: "recv", dynlib: ws2dll.}

  Source Edit

    proc recvfrom(s: SocketHandle; buf: cstring; len, flags: cint; fromm: ptr SockAddr;
                 fromlen: ptr SockLen): cint {...}{.stdcall, importc: "recvfrom", dynlib: ws2dll.}

  Source Edit

    proc select(nfds: cint; readfds, writefds, exceptfds: ptr TFdSet; timeout: ptr Timeval): cint {...}{.
        stdcall, importc: "select", dynlib: ws2dll.}

  Source Edit

    proc send(s: SocketHandle; buf: pointer; len, flags: cint): cint {...}{.stdcall,
        importc: "send", dynlib: ws2dll.}

  Source Edit

    proc sendto(s: SocketHandle; buf: pointer; len, flags: cint; to: ptr SockAddr;
               tolen: SockLen): cint {...}{.stdcall, importc: "sendto", dynlib: ws2dll.}

  Source Edit

    proc shutdown(s: SocketHandle; how: cint): cint {...}{.stdcall, importc: "shutdown",
        dynlib: ws2dll.}

  Source Edit

    proc getnameinfo(a1: ptr SockAddr; a2: SockLen; a3: cstring; a4: SockLen; a5: cstring;
                    a6: SockLen; a7: cint): cint {...}{.stdcall, importc: "getnameinfo",
        dynlib: ws2dll.}

  Source Edit

    proc inet_addr(cp: cstring): uint32 {...}{.stdcall, importc: "inet_addr", dynlib: ws2dll.}

  Source Edit

    proc FD_ISSET(socket: SocketHandle; set: var TFdSet): cint {...}{.raises: [], tags: [].}

  Source Edit

    proc FD_SET(socket: SocketHandle; s: var TFdSet) {...}{.raises: [], tags: [].}

  Source Edit

    proc FD_ZERO(s: var TFdSet) {...}{.raises: [], tags: [].}

  Source Edit

    proc wsaStartup(wVersionRequired: int16; WSData: ptr WSAData): cint {...}{.stdcall,
        importc: "WSAStartup", dynlib: ws2dll.}

  Source Edit

    proc getaddrinfo(nodename, servname: cstring; hints: ptr AddrInfo;
                    res: var ptr AddrInfo): cint {...}{.stdcall, importc: "getaddrinfo",
        dynlib: ws2dll.}

  Source Edit

    proc freeaddrinfo(ai: ptr AddrInfo) {...}{.stdcall, importc: "freeaddrinfo", dynlib: ws2dll.}

  Source Edit

    proc inet_ntoa(i: InAddr): cstring {...}{.stdcall, importc, dynlib: ws2dll.}

  Source Edit

    proc waitForMultipleObjects(nCount: DWORD; lpHandles: PWOHandleArray;
                               bWaitAll: WINBOOL; dwMilliseconds: DWORD): DWORD {...}{.
        stdcall, dynlib: "kernel32", importc: "WaitForMultipleObjects".}

  Source Edit

    proc duplicateHandle(hSourceProcessHandle: Handle; hSourceHandle: Handle;
                        hTargetProcessHandle: Handle; lpTargetHandle: ptr Handle;
                        dwDesiredAccess: DWORD; bInheritHandle: WINBOOL;
                        dwOptions: DWORD): WINBOOL {...}{.stdcall, dynlib: "kernel32",
        importc: "DuplicateHandle".}

  Source Edit

    proc setHandleInformation(hObject: Handle; dwMask: DWORD; dwFlags: DWORD): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "SetHandleInformation".}

  Source Edit

    proc getCurrentProcess(): Handle {...}{.stdcall, dynlib: "kernel32",
                                    importc: "GetCurrentProcess".}

  Source Edit

    proc createFileW(lpFileName: WideCString; dwDesiredAccess, dwShareMode: DWORD;
                    lpSecurityAttributes: pointer;
                    dwCreationDisposition, dwFlagsAndAttributes: DWORD;
                    hTemplateFile: Handle): Handle {...}{.stdcall, dynlib: "kernel32",
        importc: "CreateFileW".}

  Source Edit

    proc deleteFileW(pathName: WideCString): int32 {...}{.importc: "DeleteFileW",
        dynlib: "kernel32", stdcall.}

  Source Edit

    proc setEndOfFile(hFile: Handle): WINBOOL {...}{.stdcall, dynlib: "kernel32",
                                            importc: "SetEndOfFile".}

  Source Edit

    proc setFilePointer(hFile: Handle; lDistanceToMove: LONG;
                       lpDistanceToMoveHigh: ptr LONG; dwMoveMethod: DWORD): DWORD {...}{.
        stdcall, dynlib: "kernel32", importc: "SetFilePointer".}

  Source Edit

    proc getFileSize(hFile: Handle; lpFileSizeHigh: ptr DWORD): DWORD {...}{.stdcall,
        dynlib: "kernel32", importc: "GetFileSize".}

  Source Edit

    proc mapViewOfFileEx(hFileMappingObject: Handle; dwDesiredAccess: DWORD;
                        dwFileOffsetHigh, dwFileOffsetLow: DWORD;
                        dwNumberOfBytesToMap: WinSizeT; lpBaseAddress: pointer): pointer {...}{.
        stdcall, dynlib: "kernel32", importc: "MapViewOfFileEx".}

  Source Edit

    proc createFileMappingW(hFile: Handle; lpFileMappingAttributes: pointer;
                           flProtect, dwMaximumSizeHigh: DWORD;
                           dwMaximumSizeLow: DWORD; lpName: pointer): Handle {...}{.stdcall,
        dynlib: "kernel32", importc: "CreateFileMappingW".}

  Source Edit

    proc unmapViewOfFile(lpBaseAddress: pointer): WINBOOL {...}{.stdcall, dynlib: "kernel32",
        importc: "UnmapViewOfFile".}

  Source Edit

    proc flushViewOfFile(lpBaseAddress: pointer; dwNumberOfBytesToFlush: DWORD): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "FlushViewOfFile".}

  Source Edit

    proc createIoCompletionPort(FileHandle: Handle; ExistingCompletionPort: Handle;
                               CompletionKey: ULONG_PTR;
                               NumberOfConcurrentThreads: DWORD): Handle {...}{.stdcall,
        dynlib: "kernel32", importc: "CreateIoCompletionPort".}

  Source Edit

    proc getQueuedCompletionStatus(CompletionPort: Handle;
                                  lpNumberOfBytesTransferred: PDWORD;
                                  lpCompletionKey: PULONG_PTR;
                                  lpOverlapped: ptr POVERLAPPED; dwMilliseconds: DWORD): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "GetQueuedCompletionStatus".}

  Source Edit

    proc getOverlappedResult(hFile: Handle; lpOverlapped: POVERLAPPED;
                            lpNumberOfBytesTransferred: var DWORD; bWait: WINBOOL): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "GetOverlappedResult".}

  Source Edit

    proc WSAIoctl(s: SocketHandle; dwIoControlCode: DWORD; lpvInBuffer: pointer;
                 cbInBuffer: DWORD; lpvOutBuffer: pointer; cbOutBuffer: DWORD;
                 lpcbBytesReturned: PDWORD; lpOverlapped: POVERLAPPED;
                 lpCompletionRoutine: POVERLAPPED_COMPLETION_ROUTINE): cint {...}{.stdcall,
        importc: "WSAIoctl", dynlib: "Ws2_32.dll".}

  Source Edit

    proc WSARecv(s: SocketHandle; buf: ptr TWSABuf; bufCount: DWORD;
                bytesReceived, flags: PDWORD; lpOverlapped: POVERLAPPED;
                completionProc: POVERLAPPED_COMPLETION_ROUTINE): cint {...}{.stdcall,
        importc: "WSARecv", dynlib: "Ws2_32.dll".}

  Source Edit

    proc WSARecvFrom(s: SocketHandle; buf: ptr TWSABuf; bufCount: DWORD;
                    bytesReceived: PDWORD; flags: PDWORD; name: ptr SockAddr;
                    namelen: ptr cint; lpOverlapped: POVERLAPPED;
                    completionProc: POVERLAPPED_COMPLETION_ROUTINE): cint {...}{.stdcall,
        importc: "WSARecvFrom", dynlib: "Ws2_32.dll".}

  Source Edit

    proc WSASend(s: SocketHandle; buf: ptr TWSABuf; bufCount: DWORD; bytesSent: PDWORD;
                flags: DWORD; lpOverlapped: POVERLAPPED;
                completionProc: POVERLAPPED_COMPLETION_ROUTINE): cint {...}{.stdcall,
        importc: "WSASend", dynlib: "Ws2_32.dll".}

  Source Edit

    proc WSASendTo(s: SocketHandle; buf: ptr TWSABuf; bufCount: DWORD; bytesSent: PDWORD;
                  flags: DWORD; name: ptr SockAddr; namelen: cint;
                  lpOverlapped: POVERLAPPED;
                  completionProc: POVERLAPPED_COMPLETION_ROUTINE): cint {...}{.stdcall,
        importc: "WSASendTo", dynlib: "Ws2_32.dll".}

  Source Edit

    proc get_osfhandle(fd: FileHandle): Handle {...}{.importc: "_get_osfhandle",
        header: "<io.h>".}

  Source Edit

    proc getSystemTimes(lpIdleTime, lpKernelTime, lpUserTime: var FILETIME): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "GetSystemTimes".}

  Source Edit

    proc getProcessTimes(hProcess: Handle; lpCreationTime, lpExitTime, lpKernelTime,
                                        lpUserTime: var FILETIME): WINBOOL {...}{.stdcall,
        dynlib: "kernel32", importc: "GetProcessTimes".}

  Source Edit

    proc inet_ntop(family: cint; paddr: pointer; pStringBuffer: cstring;
                  stringBufSize: int32): cstring {...}{.stdcall, raises: [Exception], tags: [].}

  Source Edit

    proc postQueuedCompletionStatus(CompletionPort: Handle;
                                   dwNumberOfBytesTransferred: DWORD;
                                   dwCompletionKey: ULONG_PTR; lpOverlapped: pointer): bool {...}{.
        stdcall, dynlib: "kernel32", importc: "PostQueuedCompletionStatus".}

  Source Edit

    proc registerWaitForSingleObject(phNewWaitObject: ptr Handle; hObject: Handle;
                                    Callback: WAITORTIMERCALLBACK; Context: pointer;
                                    dwMilliseconds: ULONG; dwFlags: ULONG): bool {...}{.
        stdcall, dynlib: "kernel32", importc: "RegisterWaitForSingleObject".}

  Source Edit

    proc unregisterWait(WaitHandle: Handle): DWORD {...}{.stdcall, dynlib: "kernel32",
        importc: "UnregisterWait".}

  Source Edit

    proc openProcess(dwDesiredAccess: DWORD; bInheritHandle: WINBOOL; dwProcessId: DWORD): Handle {...}{.
        stdcall, dynlib: "kernel32", importc: "OpenProcess".}

  Source Edit

    proc createEvent(lpEventAttributes: ptr SECURITY_ATTRIBUTES; bManualReset: DWORD;
                    bInitialState: DWORD; lpName: ptr Utf16Char): Handle {...}{.stdcall,
        dynlib: "kernel32", importc: "CreateEventW".}

  Source Edit

    proc setEvent(hEvent: Handle): cint {...}{.stdcall, dynlib: "kernel32", importc: "SetEvent".}

  Source Edit

    proc wsaEventSelect(s: SocketHandle; hEventObject: Handle; lNetworkEvents: clong): cint {...}{.
        stdcall, importc: "WSAEventSelect", dynlib: "ws2_32.dll".}

  Source Edit

    proc wsaCreateEvent(): Handle {...}{.stdcall, importc: "WSACreateEvent",
                                 dynlib: "ws2_32.dll".}

  Source Edit

    proc wsaCloseEvent(hEvent: Handle): bool {...}{.stdcall, importc: "WSACloseEvent",
                                           dynlib: "ws2_32.dll".}

  Source Edit

    proc wsaResetEvent(hEvent: Handle): bool {...}{.stdcall, importc: "WSAResetEvent",
                                           dynlib: "ws2_32.dll".}

  Source Edit

    proc readConsoleInput(hConsoleInput: Handle; lpBuffer: pointer; nLength: cint;
                         lpNumberOfEventsRead: ptr cint): cint {...}{.stdcall,
        dynlib: "kernel32", importc: "ReadConsoleInputW".}

  Source Edit

    proc CreateFiber(stackSize: int; fn: LPFIBER_START_ROUTINE; param: pointer): pointer {...}{.
        stdcall, discardable, dynlib: "kernel32", importc.}

  Source Edit

    proc CreateFiberEx(stkCommit: int; stkReserve: int; flags: int32;
                      fn: LPFIBER_START_ROUTINE; param: pointer): pointer {...}{.stdcall,
        discardable, dynlib: "kernel32", importc.}

  Source Edit

    proc ConvertThreadToFiber(param: pointer): pointer {...}{.stdcall, discardable,
        dynlib: "kernel32", importc.}

  Source Edit

    proc ConvertThreadToFiberEx(param: pointer; flags: int32): pointer {...}{.stdcall,
        discardable, dynlib: "kernel32", importc.}

  Source Edit

    proc DeleteFiber(fiber: pointer): void {...}{.stdcall, discardable, dynlib: "kernel32",
                                         importc.}

  Source Edit

    proc SwitchToFiber(fiber: pointer): void {...}{.stdcall, discardable, dynlib: "kernel32",
                                           importc.}

  Source Edit

    proc GetCurrentFiber(): pointer {...}{.stdcall, importc, header: "windows.h".}

  Source Edit

    proc toFILETIME(t: int64): FILETIME {...}{.raises: [], tags: [].}

  Convert the Windows file time timestamp `t` to `FILETIME`. Source Edit

    proc setFileTime(hFile: Handle; lpCreationTime: LPFILETIME;
                    lpLastAccessTime: LPFILETIME; lpLastWriteTime: LPFILETIME): WINBOOL {...}{.
        stdcall, dynlib: "kernel32", importc: "SetFileTime".}

  Source Edit

# Templates

    template hasOverlappedIoCompleted(lpOverlapped): bool

  Source Edit

    template WSAIORW(x, y): untyped

  Source Edit