"Fossies" - the Fresh Open Source Software Archive

Member "FreeBASIC-1.09.0-win64/inc/win/winbase.bi" (1 Jan 2022, 327513 Bytes) of package /windows/misc/FreeBASIC-1.09.0-win64.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Visual Basic source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.


    1 '' FreeBASIC binding for mingw-w64-v4.0.4
    2 ''
    3 '' based on the C header files:
    4 ''   This Software is provided under the Zope Public License (ZPL) Version 2.1.
    5 ''
    6 ''   Copyright (c) 2009, 2010 by the mingw-w64 project
    7 ''
    8 ''   See the AUTHORS file for the list of contributors to the mingw-w64 project.
    9 ''
   10 ''   This license has been certified as open source. It has also been designated
   11 ''   as GPL compatible by the Free Software Foundation (FSF).
   12 ''
   13 ''   Redistribution and use in source and binary forms, with or without
   14 ''   modification, are permitted provided that the following conditions are met:
   15 ''
   16 ''     1. Redistributions in source code must retain the accompanying copyright
   17 ''        notice, this list of conditions, and the following disclaimer.
   18 ''     2. Redistributions in binary form must reproduce the accompanying
   19 ''        copyright notice, this list of conditions, and the following disclaimer
   20 ''        in the documentation and/or other materials provided with the
   21 ''        distribution.
   22 ''     3. Names of the copyright holders must not be used to endorse or promote
   23 ''        products derived from this software without prior written permission
   24 ''        from the copyright holders.
   25 ''     4. The right to distribute this software or to use it for any purpose does
   26 ''        not give you the right to use Servicemarks (sm) or Trademarks (tm) of
   27 ''        the copyright holders.  Use of them is covered by separate agreement
   28 ''        with the copyright holders.
   29 ''     5. If any files are modified, you must cause the modified files to carry
   30 ''        prominent notices stating that you changed the files and the date of
   31 ''        any change.
   32 ''
   33 ''   Disclaimer
   34 ''
   35 ''   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
   36 ''   OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   37 ''   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
   38 ''   EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
   39 ''   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   40 ''   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
   41 ''   OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   42 ''   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   43 ''   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
   44 ''   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   45 ''
   46 '' translated to FreeBASIC by:
   47 ''   Copyright © 2015 FreeBASIC development team
   48 
   49 #pragma once
   50 
   51 #inclib "kernel32"
   52 
   53 #include once "_mingw_unicode.bi"
   54 #include once "intrin.bi"
   55 #include once "winapifamily.bi"
   56 #include once "apiset.bi"
   57 #include once "winerror.bi"
   58 
   59 '' The following symbols have been renamed:
   60 ''     procedure Sleep => Sleep_
   61 ''     procedure Beep => Beep_
   62 ''     constant GHND => GHND_
   63 ''     constant GPTR => GPTR_
   64 
   65 extern "Windows"
   66 
   67 #define _WINBASE_
   68 #define _MINWINBASE_
   69 #define MoveMemory RtlMoveMemory
   70 #define CopyMemory RtlCopyMemory
   71 #define FillMemory RtlFillMemory
   72 #define ZeroMemory RtlZeroMemory
   73 
   74 type _SECURITY_ATTRIBUTES
   75     nLength as DWORD
   76     lpSecurityDescriptor as LPVOID
   77     bInheritHandle as WINBOOL
   78 end type
   79 
   80 type SECURITY_ATTRIBUTES as _SECURITY_ATTRIBUTES
   81 type PSECURITY_ATTRIBUTES as _SECURITY_ATTRIBUTES ptr
   82 type LPSECURITY_ATTRIBUTES as _SECURITY_ATTRIBUTES ptr
   83 
   84 type _OVERLAPPED
   85     Internal as ULONG_PTR
   86     InternalHigh as ULONG_PTR
   87 
   88     union
   89         type
   90             Offset as DWORD
   91             OffsetHigh as DWORD
   92         end type
   93 
   94         Pointer as PVOID
   95     end union
   96 
   97     hEvent as HANDLE
   98 end type
   99 
  100 type OVERLAPPED as _OVERLAPPED
  101 type LPOVERLAPPED as _OVERLAPPED ptr
  102 
  103 type _OVERLAPPED_ENTRY
  104     lpCompletionKey as ULONG_PTR
  105     lpOverlapped as LPOVERLAPPED
  106     Internal as ULONG_PTR
  107     dwNumberOfBytesTransferred as DWORD
  108 end type
  109 
  110 type OVERLAPPED_ENTRY as _OVERLAPPED_ENTRY
  111 type LPOVERLAPPED_ENTRY as _OVERLAPPED_ENTRY ptr
  112 #define _SYSTEMTIME_
  113 
  114 type _SYSTEMTIME
  115     wYear as WORD
  116     wMonth as WORD
  117     wDayOfWeek as WORD
  118     wDay as WORD
  119     wHour as WORD
  120     wMinute as WORD
  121     wSecond as WORD
  122     wMilliseconds as WORD
  123 end type
  124 
  125 type SYSTEMTIME as _SYSTEMTIME
  126 type PSYSTEMTIME as _SYSTEMTIME ptr
  127 type LPSYSTEMTIME as _SYSTEMTIME ptr
  128 
  129 type _WIN32_FIND_DATAA
  130     dwFileAttributes as DWORD
  131     ftCreationTime as FILETIME
  132     ftLastAccessTime as FILETIME
  133     ftLastWriteTime as FILETIME
  134     nFileSizeHigh as DWORD
  135     nFileSizeLow as DWORD
  136     dwReserved0 as DWORD
  137     dwReserved1 as DWORD
  138     cFileName as zstring * 260
  139     cAlternateFileName as zstring * 14
  140 end type
  141 
  142 type WIN32_FIND_DATAA as _WIN32_FIND_DATAA
  143 type PWIN32_FIND_DATAA as _WIN32_FIND_DATAA ptr
  144 type LPWIN32_FIND_DATAA as _WIN32_FIND_DATAA ptr
  145 
  146 type _WIN32_FIND_DATAW
  147     dwFileAttributes as DWORD
  148     ftCreationTime as FILETIME
  149     ftLastAccessTime as FILETIME
  150     ftLastWriteTime as FILETIME
  151     nFileSizeHigh as DWORD
  152     nFileSizeLow as DWORD
  153     dwReserved0 as DWORD
  154     dwReserved1 as DWORD
  155     cFileName as wstring * 260
  156     cAlternateFileName as wstring * 14
  157 end type
  158 
  159 type WIN32_FIND_DATAW as _WIN32_FIND_DATAW
  160 type PWIN32_FIND_DATAW as _WIN32_FIND_DATAW ptr
  161 type LPWIN32_FIND_DATAW as _WIN32_FIND_DATAW ptr
  162 
  163 #ifdef UNICODE
  164     type WIN32_FIND_DATA as WIN32_FIND_DATAW
  165     type PWIN32_FIND_DATA as PWIN32_FIND_DATAW
  166     type LPWIN32_FIND_DATA as LPWIN32_FIND_DATAW
  167 #else
  168     type WIN32_FIND_DATA as WIN32_FIND_DATAA
  169     type PWIN32_FIND_DATA as PWIN32_FIND_DATAA
  170     type LPWIN32_FIND_DATA as LPWIN32_FIND_DATAA
  171 #endif
  172 
  173 type _FINDEX_INFO_LEVELS as long
  174 enum
  175     FindExInfoStandard
  176     FindExInfoBasic
  177     FindExInfoMaxInfoLevel
  178 end enum
  179 
  180 type FINDEX_INFO_LEVELS as _FINDEX_INFO_LEVELS
  181 const FIND_FIRST_EX_CASE_SENSITIVE = &h00000001
  182 const FIND_FIRST_EX_LARGE_FETCH = &h00000002
  183 
  184 type _FINDEX_SEARCH_OPS as long
  185 enum
  186     FindExSearchNameMatch
  187     FindExSearchLimitToDirectories
  188     FindExSearchLimitToDevices
  189     FindExSearchMaxSearchOp
  190 end enum
  191 
  192 type FINDEX_SEARCH_OPS as _FINDEX_SEARCH_OPS
  193 
  194 type _GET_FILEEX_INFO_LEVELS as long
  195 enum
  196     GetFileExInfoStandard
  197     GetFileExMaxInfoLevel
  198 end enum
  199 
  200 type GET_FILEEX_INFO_LEVELS as _GET_FILEEX_INFO_LEVELS
  201 
  202 #if _WIN32_WINNT >= &h0600
  203     type _FILE_INFO_BY_HANDLE_CLASS as long
  204     enum
  205         FileBasicInfo
  206         FileStandardInfo
  207         FileNameInfo
  208         FileRenameInfo
  209         FileDispositionInfo
  210         FileAllocationInfo
  211         FileEndOfFileInfo
  212         FileStreamInfo
  213         FileCompressionInfo
  214         FileAttributeTagInfo
  215         FileIdBothDirectoryInfo
  216         FileIdBothDirectoryRestartInfo
  217         FileIoPriorityHintInfo
  218         FileRemoteProtocolInfo
  219         FileFullDirectoryInfo
  220         FileFullDirectoryRestartInfo
  221 
  222         #if _WIN32_WINNT = &h0602
  223             FileStorageInfo
  224             FileAlignmentInfo
  225             FileIdInfo
  226             FileIdExtdDirectoryInfo
  227             FileIdExtdDirectoryRestartInfo
  228         #endif
  229 
  230         MaximumFileInfoByHandleClass
  231     end enum
  232 
  233     type FILE_INFO_BY_HANDLE_CLASS as _FILE_INFO_BY_HANDLE_CLASS
  234     type PFILE_INFO_BY_HANDLE_CLASS as _FILE_INFO_BY_HANDLE_CLASS ptr
  235 #endif
  236 
  237 type CRITICAL_SECTION as RTL_CRITICAL_SECTION
  238 type PCRITICAL_SECTION as PRTL_CRITICAL_SECTION
  239 type LPCRITICAL_SECTION as PRTL_CRITICAL_SECTION
  240 type CRITICAL_SECTION_DEBUG as RTL_CRITICAL_SECTION_DEBUG
  241 type PCRITICAL_SECTION_DEBUG as PRTL_CRITICAL_SECTION_DEBUG
  242 type LPCRITICAL_SECTION_DEBUG as PRTL_CRITICAL_SECTION_DEBUG
  243 type LPOVERLAPPED_COMPLETION_ROUTINE as sub(byval dwErrorCode as DWORD, byval dwNumberOfBytesTransfered as DWORD, byval lpOverlapped as LPOVERLAPPED)
  244 const LOCKFILE_FAIL_IMMEDIATELY = &h1
  245 const LOCKFILE_EXCLUSIVE_LOCK = &h2
  246 
  247 type _PROCESS_HEAP_ENTRY_Block
  248     hMem as HANDLE
  249     dwReserved(0 to 2) as DWORD
  250 end type
  251 
  252 type _PROCESS_HEAP_ENTRY_Region
  253     dwCommittedSize as DWORD
  254     dwUnCommittedSize as DWORD
  255     lpFirstBlock as LPVOID
  256     lpLastBlock as LPVOID
  257 end type
  258 
  259 type _PROCESS_HEAP_ENTRY
  260     lpData as PVOID
  261     cbData as DWORD
  262     cbOverhead as UBYTE
  263     iRegionIndex as UBYTE
  264     wFlags as WORD
  265 
  266     union
  267         Block as _PROCESS_HEAP_ENTRY_Block
  268         Region as _PROCESS_HEAP_ENTRY_Region
  269     end union
  270 end type
  271 
  272 type PROCESS_HEAP_ENTRY as _PROCESS_HEAP_ENTRY
  273 type LPPROCESS_HEAP_ENTRY as _PROCESS_HEAP_ENTRY ptr
  274 type PPROCESS_HEAP_ENTRY as _PROCESS_HEAP_ENTRY ptr
  275 
  276 const PROCESS_HEAP_REGION = &h1
  277 const PROCESS_HEAP_UNCOMMITTED_RANGE = &h2
  278 const PROCESS_HEAP_ENTRY_BUSY = &h4
  279 const PROCESS_HEAP_ENTRY_MOVEABLE = &h10
  280 const PROCESS_HEAP_ENTRY_DDESHARE = &h20
  281 
  282 type _REASON_CONTEXT_Reason_Detailed
  283     LocalizedReasonModule as HMODULE
  284     LocalizedReasonId as ULONG
  285     ReasonStringCount as ULONG
  286     ReasonStrings as LPWSTR ptr
  287 end type
  288 
  289 union _REASON_CONTEXT_Reason
  290     Detailed as _REASON_CONTEXT_Reason_Detailed
  291     SimpleReasonString as LPWSTR
  292 end union
  293 
  294 type _REASON_CONTEXT
  295     Version as ULONG
  296     Flags as DWORD
  297     Reason as _REASON_CONTEXT_Reason
  298 end type
  299 
  300 type REASON_CONTEXT as _REASON_CONTEXT
  301 type PREASON_CONTEXT as _REASON_CONTEXT ptr
  302 const EXCEPTION_DEBUG_EVENT = 1
  303 const CREATE_THREAD_DEBUG_EVENT = 2
  304 const CREATE_PROCESS_DEBUG_EVENT = 3
  305 const EXIT_THREAD_DEBUG_EVENT = 4
  306 const EXIT_PROCESS_DEBUG_EVENT = 5
  307 const LOAD_DLL_DEBUG_EVENT = 6
  308 const UNLOAD_DLL_DEBUG_EVENT = 7
  309 const OUTPUT_DEBUG_STRING_EVENT = 8
  310 const RIP_EVENT = 9
  311 type PTHREAD_START_ROUTINE as function(byval lpThreadParameter as LPVOID) as DWORD
  312 type LPTHREAD_START_ROUTINE as PTHREAD_START_ROUTINE
  313 
  314 type _EXCEPTION_DEBUG_INFO
  315     ExceptionRecord as EXCEPTION_RECORD
  316     dwFirstChance as DWORD
  317 end type
  318 
  319 type EXCEPTION_DEBUG_INFO as _EXCEPTION_DEBUG_INFO
  320 type LPEXCEPTION_DEBUG_INFO as _EXCEPTION_DEBUG_INFO ptr
  321 
  322 type _CREATE_THREAD_DEBUG_INFO
  323     hThread as HANDLE
  324     lpThreadLocalBase as LPVOID
  325     lpStartAddress as LPTHREAD_START_ROUTINE
  326 end type
  327 
  328 type CREATE_THREAD_DEBUG_INFO as _CREATE_THREAD_DEBUG_INFO
  329 type LPCREATE_THREAD_DEBUG_INFO as _CREATE_THREAD_DEBUG_INFO ptr
  330 
  331 type _CREATE_PROCESS_DEBUG_INFO
  332     hFile as HANDLE
  333     hProcess as HANDLE
  334     hThread as HANDLE
  335     lpBaseOfImage as LPVOID
  336     dwDebugInfoFileOffset as DWORD
  337     nDebugInfoSize as DWORD
  338     lpThreadLocalBase as LPVOID
  339     lpStartAddress as LPTHREAD_START_ROUTINE
  340     lpImageName as LPVOID
  341     fUnicode as WORD
  342 end type
  343 
  344 type CREATE_PROCESS_DEBUG_INFO as _CREATE_PROCESS_DEBUG_INFO
  345 type LPCREATE_PROCESS_DEBUG_INFO as _CREATE_PROCESS_DEBUG_INFO ptr
  346 
  347 type _EXIT_THREAD_DEBUG_INFO
  348     dwExitCode as DWORD
  349 end type
  350 
  351 type EXIT_THREAD_DEBUG_INFO as _EXIT_THREAD_DEBUG_INFO
  352 type LPEXIT_THREAD_DEBUG_INFO as _EXIT_THREAD_DEBUG_INFO ptr
  353 
  354 type _EXIT_PROCESS_DEBUG_INFO
  355     dwExitCode as DWORD
  356 end type
  357 
  358 type EXIT_PROCESS_DEBUG_INFO as _EXIT_PROCESS_DEBUG_INFO
  359 type LPEXIT_PROCESS_DEBUG_INFO as _EXIT_PROCESS_DEBUG_INFO ptr
  360 
  361 type _LOAD_DLL_DEBUG_INFO
  362     hFile as HANDLE
  363     lpBaseOfDll as LPVOID
  364     dwDebugInfoFileOffset as DWORD
  365     nDebugInfoSize as DWORD
  366     lpImageName as LPVOID
  367     fUnicode as WORD
  368 end type
  369 
  370 type LOAD_DLL_DEBUG_INFO as _LOAD_DLL_DEBUG_INFO
  371 type LPLOAD_DLL_DEBUG_INFO as _LOAD_DLL_DEBUG_INFO ptr
  372 
  373 type _UNLOAD_DLL_DEBUG_INFO
  374     lpBaseOfDll as LPVOID
  375 end type
  376 
  377 type UNLOAD_DLL_DEBUG_INFO as _UNLOAD_DLL_DEBUG_INFO
  378 type LPUNLOAD_DLL_DEBUG_INFO as _UNLOAD_DLL_DEBUG_INFO ptr
  379 
  380 type _OUTPUT_DEBUG_STRING_INFO
  381     lpDebugStringData as LPSTR
  382     fUnicode as WORD
  383     nDebugStringLength as WORD
  384 end type
  385 
  386 type OUTPUT_DEBUG_STRING_INFO as _OUTPUT_DEBUG_STRING_INFO
  387 type LPOUTPUT_DEBUG_STRING_INFO as _OUTPUT_DEBUG_STRING_INFO ptr
  388 
  389 type _RIP_INFO
  390     dwError as DWORD
  391     dwType as DWORD
  392 end type
  393 
  394 type RIP_INFO as _RIP_INFO
  395 type LPRIP_INFO as _RIP_INFO ptr
  396 
  397 union _DEBUG_EVENT_u
  398     Exception as EXCEPTION_DEBUG_INFO
  399     CreateThread as CREATE_THREAD_DEBUG_INFO
  400     CreateProcessInfo as CREATE_PROCESS_DEBUG_INFO
  401     ExitThread as EXIT_THREAD_DEBUG_INFO
  402     ExitProcess as EXIT_PROCESS_DEBUG_INFO
  403     LoadDll as LOAD_DLL_DEBUG_INFO
  404     UnloadDll as UNLOAD_DLL_DEBUG_INFO
  405     DebugString as OUTPUT_DEBUG_STRING_INFO
  406     RipInfo as RIP_INFO
  407 end union
  408 
  409 type _DEBUG_EVENT
  410     dwDebugEventCode as DWORD
  411     dwProcessId as DWORD
  412     dwThreadId as DWORD
  413     u as _DEBUG_EVENT_u
  414 end type
  415 
  416 type DEBUG_EVENT as _DEBUG_EVENT
  417 type LPDEBUG_EVENT as _DEBUG_EVENT ptr
  418 type LPCONTEXT as PCONTEXT
  419 
  420 const STILL_ACTIVE = STATUS_PENDING
  421 const EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION
  422 const EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT
  423 const EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT
  424 const EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP
  425 const EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED
  426 const EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND
  427 const EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO
  428 const EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT
  429 const EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION
  430 const EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW
  431 const EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK
  432 const EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW
  433 const EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO
  434 const EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW
  435 const EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION
  436 const EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR
  437 const EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION
  438 const EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION
  439 const EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW
  440 const EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION
  441 const EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION
  442 const EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE
  443 #define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK
  444 const CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT
  445 const LMEM_FIXED = &h0
  446 const LMEM_MOVEABLE = &h2
  447 const LMEM_NOCOMPACT = &h10
  448 const LMEM_NODISCARD = &h20
  449 const LMEM_ZEROINIT = &h40
  450 const LMEM_MODIFY = &h80
  451 const LMEM_DISCARDABLE = &hf00
  452 const LMEM_VALID_FLAGS = &hf72
  453 const LMEM_INVALID_HANDLE = &h8000
  454 const LHND = LMEM_MOVEABLE or LMEM_ZEROINIT
  455 const LPTR = LMEM_FIXED or LMEM_ZEROINIT
  456 const NONZEROLHND = LMEM_MOVEABLE
  457 const NONZEROLPTR = LMEM_FIXED
  458 #define LocalDiscard(h) LocalReAlloc((h), 0, LMEM_MOVEABLE)
  459 const LMEM_DISCARDED = &h4000
  460 const LMEM_LOCKCOUNT = &hff
  461 #define _BEM_H_
  462 
  463 type CONTRACT_DESCRIPTION as _CONTRACT_DESCRIPTION
  464 type BEM_REFERENCE as _BEM_REFERENCE
  465 type BEM_FREE_INTERFACE_CALLBACK as sub(byval interfaceInstance as any ptr)
  466 
  467 declare function BemCreateReference(byval iid as const GUID const ptr, byval interfaceInstance as any ptr, byval freeCallback as BEM_FREE_INTERFACE_CALLBACK, byval reference as BEM_REFERENCE ptr ptr) as HRESULT
  468 declare function BemCreateContractFrom(byval dllPath as LPCWSTR, byval extensionId as const GUID const ptr, byval contractDescription as const CONTRACT_DESCRIPTION ptr, byval hostContract as any ptr, byval contract as any ptr ptr) as HRESULT
  469 declare function BemCopyReference(byval reference as BEM_REFERENCE ptr, byval copiedReference as BEM_REFERENCE ptr ptr) as HRESULT
  470 declare sub BemFreeReference(byval reference as BEM_REFERENCE ptr)
  471 declare sub BemFreeContract(byval contract as any ptr)
  472 #define _APISETDEBUG_
  473 declare function IsDebuggerPresent() as WINBOOL
  474 declare sub OutputDebugStringA(byval lpOutputString as LPCSTR)
  475 declare sub OutputDebugStringW(byval lpOutputString as LPCWSTR)
  476 
  477 #ifdef UNICODE
  478     declare sub OutputDebugString alias "OutputDebugStringW"(byval lpOutputString as LPCWSTR)
  479 #else
  480     declare sub OutputDebugString alias "OutputDebugStringA"(byval lpOutputString as LPCSTR)
  481 #endif
  482 
  483 declare sub DebugBreak()
  484 declare function ContinueDebugEvent(byval dwProcessId as DWORD, byval dwThreadId as DWORD, byval dwContinueStatus as DWORD) as WINBOOL
  485 declare function WaitForDebugEvent(byval lpDebugEvent as LPDEBUG_EVENT, byval dwMilliseconds as DWORD) as WINBOOL
  486 declare function DebugActiveProcess(byval dwProcessId as DWORD) as WINBOOL
  487 declare function DebugActiveProcessStop(byval dwProcessId as DWORD) as WINBOOL
  488 declare function CheckRemoteDebuggerPresent(byval hProcess as HANDLE, byval pbDebuggerPresent as PBOOL) as WINBOOL
  489 #define _ERRHANDLING_H_
  490 type PTOP_LEVEL_EXCEPTION_FILTER as function(byval ExceptionInfo as _EXCEPTION_POINTERS ptr) as LONG
  491 type LPTOP_LEVEL_EXCEPTION_FILTER as PTOP_LEVEL_EXCEPTION_FILTER
  492 declare function UnhandledExceptionFilter(byval ExceptionInfo as _EXCEPTION_POINTERS ptr) as LONG
  493 declare function SetUnhandledExceptionFilter(byval lpTopLevelExceptionFilter as LPTOP_LEVEL_EXCEPTION_FILTER) as LPTOP_LEVEL_EXCEPTION_FILTER
  494 declare function SetErrorMode(byval uMode as UINT) as UINT
  495 declare function AddVectoredExceptionHandler(byval First as ULONG, byval Handler as PVECTORED_EXCEPTION_HANDLER) as PVOID
  496 declare function RemoveVectoredExceptionHandler(byval Handle as PVOID) as ULONG
  497 declare function AddVectoredContinueHandler(byval First as ULONG, byval Handler as PVECTORED_EXCEPTION_HANDLER) as PVOID
  498 declare function RemoveVectoredContinueHandler(byval Handle as PVOID) as ULONG
  499 
  500 #if _WIN32_WINNT >= &h0600
  501     declare function GetErrorMode() as UINT
  502 #endif
  503 
  504 declare sub RaiseException(byval dwExceptionCode as DWORD, byval dwExceptionFlags as DWORD, byval nNumberOfArguments as DWORD, byval lpArguments as const ULONG_PTR ptr)
  505 declare function GetLastError() as DWORD
  506 declare sub SetLastError(byval dwErrCode as DWORD)
  507 #define _FIBERS_H_
  508 
  509 #if _WIN32_WINNT >= &h0600
  510     const FLS_OUT_OF_INDEXES = cast(DWORD, &hffffffff)
  511     declare function FlsAlloc(byval lpCallback as PFLS_CALLBACK_FUNCTION) as DWORD
  512     declare function FlsGetValue(byval dwFlsIndex as DWORD) as PVOID
  513     declare function FlsSetValue(byval dwFlsIndex as DWORD, byval lpFlsData as PVOID) as WINBOOL
  514     declare function FlsFree(byval dwFlsIndex as DWORD) as WINBOOL
  515     declare function IsThreadAFiber() as WINBOOL
  516 #endif
  517 
  518 #define _APISETFILE_
  519 const CREATE_NEW = 1
  520 const CREATE_ALWAYS = 2
  521 const OPEN_EXISTING = 3
  522 const OPEN_ALWAYS = 4
  523 const TRUNCATE_EXISTING = 5
  524 const INVALID_FILE_SIZE = cast(DWORD, &hffffffff)
  525 const INVALID_SET_FILE_POINTER = cast(DWORD, -1)
  526 const INVALID_FILE_ATTRIBUTES = cast(DWORD, -1)
  527 
  528 type _BY_HANDLE_FILE_INFORMATION
  529     dwFileAttributes as DWORD
  530     ftCreationTime as FILETIME
  531     ftLastAccessTime as FILETIME
  532     ftLastWriteTime as FILETIME
  533     dwVolumeSerialNumber as DWORD
  534     nFileSizeHigh as DWORD
  535     nFileSizeLow as DWORD
  536     nNumberOfLinks as DWORD
  537     nFileIndexHigh as DWORD
  538     nFileIndexLow as DWORD
  539 end type
  540 
  541 type BY_HANDLE_FILE_INFORMATION as _BY_HANDLE_FILE_INFORMATION
  542 type PBY_HANDLE_FILE_INFORMATION as _BY_HANDLE_FILE_INFORMATION ptr
  543 type LPBY_HANDLE_FILE_INFORMATION as _BY_HANDLE_FILE_INFORMATION ptr
  544 
  545 declare function CompareFileTime(byval lpFileTime1 as const FILETIME ptr, byval lpFileTime2 as const FILETIME ptr) as LONG
  546 declare function CreateFileA(byval lpFileName as LPCSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval dwCreationDisposition as DWORD, byval dwFlagsAndAttributes as DWORD, byval hTemplateFile as HANDLE) as HANDLE
  547 declare function CreateFileW(byval lpFileName as LPCWSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval dwCreationDisposition as DWORD, byval dwFlagsAndAttributes as DWORD, byval hTemplateFile as HANDLE) as HANDLE
  548 declare function DefineDosDeviceW(byval dwFlags as DWORD, byval lpDeviceName as LPCWSTR, byval lpTargetPath as LPCWSTR) as WINBOOL
  549 declare function DeleteVolumeMountPointW(byval lpszVolumeMountPoint as LPCWSTR) as WINBOOL
  550 declare function FileTimeToLocalFileTime(byval lpFileTime as const FILETIME ptr, byval lpLocalFileTime as LPFILETIME) as WINBOOL
  551 declare function FindCloseChangeNotification(byval hChangeHandle as HANDLE) as WINBOOL
  552 declare function FindFirstChangeNotificationA(byval lpPathName as LPCSTR, byval bWatchSubtree as WINBOOL, byval dwNotifyFilter as DWORD) as HANDLE
  553 declare function FindFirstChangeNotificationW(byval lpPathName as LPCWSTR, byval bWatchSubtree as WINBOOL, byval dwNotifyFilter as DWORD) as HANDLE
  554 declare function FindFirstFileA(byval lpFileName as LPCSTR, byval lpFindFileData as LPWIN32_FIND_DATAA) as HANDLE
  555 declare function FindFirstFileW(byval lpFileName as LPCWSTR, byval lpFindFileData as LPWIN32_FIND_DATAW) as HANDLE
  556 declare function FindFirstVolumeW(byval lpszVolumeName as LPWSTR, byval cchBufferLength as DWORD) as HANDLE
  557 declare function FindNextChangeNotification(byval hChangeHandle as HANDLE) as WINBOOL
  558 declare function FindNextVolumeW(byval hFindVolume as HANDLE, byval lpszVolumeName as LPWSTR, byval cchBufferLength as DWORD) as WINBOOL
  559 declare function FindVolumeClose(byval hFindVolume as HANDLE) as WINBOOL
  560 declare function GetDiskFreeSpaceA(byval lpRootPathName as LPCSTR, byval lpSectorsPerCluster as LPDWORD, byval lpBytesPerSector as LPDWORD, byval lpNumberOfFreeClusters as LPDWORD, byval lpTotalNumberOfClusters as LPDWORD) as WINBOOL
  561 declare function GetDiskFreeSpaceW(byval lpRootPathName as LPCWSTR, byval lpSectorsPerCluster as LPDWORD, byval lpBytesPerSector as LPDWORD, byval lpNumberOfFreeClusters as LPDWORD, byval lpTotalNumberOfClusters as LPDWORD) as WINBOOL
  562 declare function GetDriveTypeA(byval lpRootPathName as LPCSTR) as UINT
  563 declare function GetDriveTypeW(byval lpRootPathName as LPCWSTR) as UINT
  564 declare function GetFileAttributesA(byval lpFileName as LPCSTR) as DWORD
  565 declare function GetFileAttributesW(byval lpFileName as LPCWSTR) as DWORD
  566 declare function GetFileInformationByHandle(byval hFile as HANDLE, byval lpFileInformation as LPBY_HANDLE_FILE_INFORMATION) as WINBOOL
  567 declare function GetFileSize(byval hFile as HANDLE, byval lpFileSizeHigh as LPDWORD) as DWORD
  568 declare function GetFileSizeEx(byval hFile as HANDLE, byval lpFileSize as PLARGE_INTEGER) as WINBOOL
  569 declare function GetFileTime(byval hFile as HANDLE, byval lpCreationTime as LPFILETIME, byval lpLastAccessTime as LPFILETIME, byval lpLastWriteTime as LPFILETIME) as WINBOOL
  570 declare function GetFileType(byval hFile as HANDLE) as DWORD
  571 declare function GetFullPathNameA(byval lpFileName as LPCSTR, byval nBufferLength as DWORD, byval lpBuffer as LPSTR, byval lpFilePart as LPSTR ptr) as DWORD
  572 declare function GetFullPathNameW(byval lpFileName as LPCWSTR, byval nBufferLength as DWORD, byval lpBuffer as LPWSTR, byval lpFilePart as LPWSTR ptr) as DWORD
  573 declare function GetLogicalDrives() as DWORD
  574 declare function GetLogicalDriveStringsW(byval nBufferLength as DWORD, byval lpBuffer as LPWSTR) as DWORD
  575 declare function GetLongPathNameA(byval lpszShortPath as LPCSTR, byval lpszLongPath as LPSTR, byval cchBuffer as DWORD) as DWORD
  576 declare function GetLongPathNameW(byval lpszShortPath as LPCWSTR, byval lpszLongPath as LPWSTR, byval cchBuffer as DWORD) as DWORD
  577 declare function GetShortPathNameW(byval lpszLongPath as LPCWSTR, byval lpszShortPath as LPWSTR, byval cchBuffer as DWORD) as DWORD
  578 declare function GetTempFileNameW(byval lpPathName as LPCWSTR, byval lpPrefixString as LPCWSTR, byval uUnique as UINT, byval lpTempFileName as LPWSTR) as UINT
  579 declare function GetVolumeInformationW(byval lpRootPathName as LPCWSTR, byval lpVolumeNameBuffer as LPWSTR, byval nVolumeNameSize as DWORD, byval lpVolumeSerialNumber as LPDWORD, byval lpMaximumComponentLength as LPDWORD, byval lpFileSystemFlags as LPDWORD, byval lpFileSystemNameBuffer as LPWSTR, byval nFileSystemNameSize as DWORD) as WINBOOL
  580 declare function GetVolumePathNameW(byval lpszFileName as LPCWSTR, byval lpszVolumePathName as LPWSTR, byval cchBufferLength as DWORD) as WINBOOL
  581 declare function LocalFileTimeToFileTime(byval lpLocalFileTime as const FILETIME ptr, byval lpFileTime as LPFILETIME) as WINBOOL
  582 declare function LockFile(byval hFile as HANDLE, byval dwFileOffsetLow as DWORD, byval dwFileOffsetHigh as DWORD, byval nNumberOfBytesToLockLow as DWORD, byval nNumberOfBytesToLockHigh as DWORD) as WINBOOL
  583 declare function QueryDosDeviceW(byval lpDeviceName as LPCWSTR, byval lpTargetPath as LPWSTR, byval ucchMax as DWORD) as DWORD
  584 declare function ReadFileEx(byval hFile as HANDLE, byval lpBuffer as LPVOID, byval nNumberOfBytesToRead as DWORD, byval lpOverlapped as LPOVERLAPPED, byval lpCompletionRoutine as LPOVERLAPPED_COMPLETION_ROUTINE) as WINBOOL
  585 declare function ReadFileScatter(byval hFile as HANDLE, byval aSegmentArray as FILE_SEGMENT_ELEMENT ptr, byval nNumberOfBytesToRead as DWORD, byval lpReserved as LPDWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  586 declare function SetFilePointer(byval hFile as HANDLE, byval lDistanceToMove as LONG, byval lpDistanceToMoveHigh as PLONG, byval dwMoveMethod as DWORD) as DWORD
  587 declare function SetFileTime(byval hFile as HANDLE, byval lpCreationTime as const FILETIME ptr, byval lpLastAccessTime as const FILETIME ptr, byval lpLastWriteTime as const FILETIME ptr) as WINBOOL
  588 declare function SetFileValidData(byval hFile as HANDLE, byval ValidDataLength as LONGLONG) as WINBOOL
  589 declare function UnlockFile(byval hFile as HANDLE, byval dwFileOffsetLow as DWORD, byval dwFileOffsetHigh as DWORD, byval nNumberOfBytesToUnlockLow as DWORD, byval nNumberOfBytesToUnlockHigh as DWORD) as WINBOOL
  590 declare function WriteFileEx(byval hFile as HANDLE, byval lpBuffer as LPCVOID, byval nNumberOfBytesToWrite as DWORD, byval lpOverlapped as LPOVERLAPPED, byval lpCompletionRoutine as LPOVERLAPPED_COMPLETION_ROUTINE) as WINBOOL
  591 declare function WriteFileGather(byval hFile as HANDLE, byval aSegmentArray as FILE_SEGMENT_ELEMENT ptr, byval nNumberOfBytesToWrite as DWORD, byval lpReserved as LPDWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  592 declare function GetTempPathW(byval nBufferLength as DWORD, byval lpBuffer as LPWSTR) as DWORD
  593 declare function GetVolumeNameForVolumeMountPointW(byval lpszVolumeMountPoint as LPCWSTR, byval lpszVolumeName as LPWSTR, byval cchBufferLength as DWORD) as WINBOOL
  594 declare function GetVolumePathNamesForVolumeNameW(byval lpszVolumeName as LPCWSTR, byval lpszVolumePathNames as LPWCH, byval cchBufferLength as DWORD, byval lpcchReturnLength as PDWORD) as WINBOOL
  595 
  596 #ifdef UNICODE
  597     declare function CreateFile alias "CreateFileW"(byval lpFileName as LPCWSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval dwCreationDisposition as DWORD, byval dwFlagsAndAttributes as DWORD, byval hTemplateFile as HANDLE) as HANDLE
  598     declare function DefineDosDevice alias "DefineDosDeviceW"(byval dwFlags as DWORD, byval lpDeviceName as LPCWSTR, byval lpTargetPath as LPCWSTR) as WINBOOL
  599     declare function DeleteVolumeMountPoint alias "DeleteVolumeMountPointW"(byval lpszVolumeMountPoint as LPCWSTR) as WINBOOL
  600     declare function FindFirstVolume alias "FindFirstVolumeW"(byval lpszVolumeName as LPWSTR, byval cchBufferLength as DWORD) as HANDLE
  601     declare function FindNextVolume alias "FindNextVolumeW"(byval hFindVolume as HANDLE, byval lpszVolumeName as LPWSTR, byval cchBufferLength as DWORD) as WINBOOL
  602     declare function GetLogicalDriveStrings alias "GetLogicalDriveStringsW"(byval nBufferLength as DWORD, byval lpBuffer as LPWSTR) as DWORD
  603     declare function GetShortPathName alias "GetShortPathNameW"(byval lpszLongPath as LPCWSTR, byval lpszShortPath as LPWSTR, byval cchBuffer as DWORD) as DWORD
  604     declare function GetTempFileName alias "GetTempFileNameW"(byval lpPathName as LPCWSTR, byval lpPrefixString as LPCWSTR, byval uUnique as UINT, byval lpTempFileName as LPWSTR) as UINT
  605     declare function GetVolumeInformation alias "GetVolumeInformationW"(byval lpRootPathName as LPCWSTR, byval lpVolumeNameBuffer as LPWSTR, byval nVolumeNameSize as DWORD, byval lpVolumeSerialNumber as LPDWORD, byval lpMaximumComponentLength as LPDWORD, byval lpFileSystemFlags as LPDWORD, byval lpFileSystemNameBuffer as LPWSTR, byval nFileSystemNameSize as DWORD) as WINBOOL
  606     declare function GetVolumePathName alias "GetVolumePathNameW"(byval lpszFileName as LPCWSTR, byval lpszVolumePathName as LPWSTR, byval cchBufferLength as DWORD) as WINBOOL
  607     declare function QueryDosDevice alias "QueryDosDeviceW"(byval lpDeviceName as LPCWSTR, byval lpTargetPath as LPWSTR, byval ucchMax as DWORD) as DWORD
  608     declare function GetTempPath alias "GetTempPathW"(byval nBufferLength as DWORD, byval lpBuffer as LPWSTR) as DWORD
  609     declare function GetVolumeNameForVolumeMountPoint alias "GetVolumeNameForVolumeMountPointW"(byval lpszVolumeMountPoint as LPCWSTR, byval lpszVolumeName as LPWSTR, byval cchBufferLength as DWORD) as WINBOOL
  610     declare function GetVolumePathNamesForVolumeName alias "GetVolumePathNamesForVolumeNameW"(byval lpszVolumeName as LPCWSTR, byval lpszVolumePathNames as LPWCH, byval cchBufferLength as DWORD, byval lpcchReturnLength as PDWORD) as WINBOOL
  611     declare function FindFirstChangeNotification alias "FindFirstChangeNotificationW"(byval lpPathName as LPCWSTR, byval bWatchSubtree as WINBOOL, byval dwNotifyFilter as DWORD) as HANDLE
  612     declare function FindFirstFile alias "FindFirstFileW"(byval lpFileName as LPCWSTR, byval lpFindFileData as LPWIN32_FIND_DATAW) as HANDLE
  613     declare function GetDiskFreeSpace alias "GetDiskFreeSpaceW"(byval lpRootPathName as LPCWSTR, byval lpSectorsPerCluster as LPDWORD, byval lpBytesPerSector as LPDWORD, byval lpNumberOfFreeClusters as LPDWORD, byval lpTotalNumberOfClusters as LPDWORD) as WINBOOL
  614     declare function GetDriveType alias "GetDriveTypeW"(byval lpRootPathName as LPCWSTR) as UINT
  615     declare function GetFileAttributes alias "GetFileAttributesW"(byval lpFileName as LPCWSTR) as DWORD
  616     declare function GetFullPathName alias "GetFullPathNameW"(byval lpFileName as LPCWSTR, byval nBufferLength as DWORD, byval lpBuffer as LPWSTR, byval lpFilePart as LPWSTR ptr) as DWORD
  617     declare function GetLongPathName alias "GetLongPathNameW"(byval lpszShortPath as LPCWSTR, byval lpszLongPath as LPWSTR, byval cchBuffer as DWORD) as DWORD
  618 #endif
  619 
  620 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
  621     declare function GetFinalPathNameByHandleA(byval hFile as HANDLE, byval lpszFilePath as LPSTR, byval cchFilePath as DWORD, byval dwFlags as DWORD) as DWORD
  622     declare function GetFinalPathNameByHandleW(byval hFile as HANDLE, byval lpszFilePath as LPWSTR, byval cchFilePath as DWORD, byval dwFlags as DWORD) as DWORD
  623     declare function GetVolumeInformationByHandleW(byval hFile as HANDLE, byval lpVolumeNameBuffer as LPWSTR, byval nVolumeNameSize as DWORD, byval lpVolumeSerialNumber as LPDWORD, byval lpMaximumComponentLength as LPDWORD, byval lpFileSystemFlags as LPDWORD, byval lpFileSystemNameBuffer as LPWSTR, byval nFileSystemNameSize as DWORD) as WINBOOL
  624     declare function GetFinalPathNameByHandle alias "GetFinalPathNameByHandleW"(byval hFile as HANDLE, byval lpszFilePath as LPWSTR, byval cchFilePath as DWORD, byval dwFlags as DWORD) as DWORD
  625 #elseif not defined(UNICODE)
  626     declare function CreateFile alias "CreateFileA"(byval lpFileName as LPCSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval dwCreationDisposition as DWORD, byval dwFlagsAndAttributes as DWORD, byval hTemplateFile as HANDLE) as HANDLE
  627     declare function FindFirstChangeNotification alias "FindFirstChangeNotificationA"(byval lpPathName as LPCSTR, byval bWatchSubtree as WINBOOL, byval dwNotifyFilter as DWORD) as HANDLE
  628     declare function FindFirstFile alias "FindFirstFileA"(byval lpFileName as LPCSTR, byval lpFindFileData as LPWIN32_FIND_DATAA) as HANDLE
  629     declare function GetDiskFreeSpace alias "GetDiskFreeSpaceA"(byval lpRootPathName as LPCSTR, byval lpSectorsPerCluster as LPDWORD, byval lpBytesPerSector as LPDWORD, byval lpNumberOfFreeClusters as LPDWORD, byval lpTotalNumberOfClusters as LPDWORD) as WINBOOL
  630     declare function GetDriveType alias "GetDriveTypeA"(byval lpRootPathName as LPCSTR) as UINT
  631     declare function GetFileAttributes alias "GetFileAttributesA"(byval lpFileName as LPCSTR) as DWORD
  632     declare function GetFullPathName alias "GetFullPathNameA"(byval lpFileName as LPCSTR, byval nBufferLength as DWORD, byval lpBuffer as LPSTR, byval lpFilePart as LPSTR ptr) as DWORD
  633     declare function GetLongPathName alias "GetLongPathNameA"(byval lpszShortPath as LPCSTR, byval lpszLongPath as LPSTR, byval cchBuffer as DWORD) as DWORD
  634 #endif
  635 
  636 #if (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
  637     declare function GetFinalPathNameByHandleA(byval hFile as HANDLE, byval lpszFilePath as LPSTR, byval cchFilePath as DWORD, byval dwFlags as DWORD) as DWORD
  638     declare function GetFinalPathNameByHandleW(byval hFile as HANDLE, byval lpszFilePath as LPWSTR, byval cchFilePath as DWORD, byval dwFlags as DWORD) as DWORD
  639     declare function GetVolumeInformationByHandleW(byval hFile as HANDLE, byval lpVolumeNameBuffer as LPWSTR, byval nVolumeNameSize as DWORD, byval lpVolumeSerialNumber as LPDWORD, byval lpMaximumComponentLength as LPDWORD, byval lpFileSystemFlags as LPDWORD, byval lpFileSystemNameBuffer as LPWSTR, byval nFileSystemNameSize as DWORD) as WINBOOL
  640     declare function GetFinalPathNameByHandle alias "GetFinalPathNameByHandleA"(byval hFile as HANDLE, byval lpszFilePath as LPSTR, byval cchFilePath as DWORD, byval dwFlags as DWORD) as DWORD
  641 #endif
  642 
  643 type _WIN32_FILE_ATTRIBUTE_DATA
  644     dwFileAttributes as DWORD
  645     ftCreationTime as FILETIME
  646     ftLastAccessTime as FILETIME
  647     ftLastWriteTime as FILETIME
  648     nFileSizeHigh as DWORD
  649     nFileSizeLow as DWORD
  650 end type
  651 
  652 type WIN32_FILE_ATTRIBUTE_DATA as _WIN32_FILE_ATTRIBUTE_DATA
  653 type LPWIN32_FILE_ATTRIBUTE_DATA as _WIN32_FILE_ATTRIBUTE_DATA ptr
  654 
  655 #if _WIN32_WINNT = &h0602
  656     type _CREATEFILE2_EXTENDED_PARAMETERS
  657         dwSize as DWORD
  658         dwFileAttributes as DWORD
  659         dwFileFlags as DWORD
  660         dwSecurityQosFlags as DWORD
  661         lpSecurityAttributes as LPSECURITY_ATTRIBUTES
  662         hTemplateFile as HANDLE
  663     end type
  664 
  665     type CREATEFILE2_EXTENDED_PARAMETERS as _CREATEFILE2_EXTENDED_PARAMETERS
  666     type PCREATEFILE2_EXTENDED_PARAMETERS as _CREATEFILE2_EXTENDED_PARAMETERS ptr
  667     type LPCREATEFILE2_EXTENDED_PARAMETERS as _CREATEFILE2_EXTENDED_PARAMETERS ptr
  668 #endif
  669 
  670 declare function CreateDirectoryA(byval lpPathName as LPCSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
  671 declare function CreateDirectoryW(byval lpPathName as LPCWSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
  672 declare function DeleteFileA(byval lpFileName as LPCSTR) as WINBOOL
  673 declare function DeleteFileW(byval lpFileName as LPCWSTR) as WINBOOL
  674 declare function FindClose(byval hFindFile as HANDLE) as WINBOOL
  675 declare function FindFirstFileExA(byval lpFileName as LPCSTR, byval fInfoLevelId as FINDEX_INFO_LEVELS, byval lpFindFileData as LPVOID, byval fSearchOp as FINDEX_SEARCH_OPS, byval lpSearchFilter as LPVOID, byval dwAdditionalFlags as DWORD) as HANDLE
  676 declare function FindFirstFileExW(byval lpFileName as LPCWSTR, byval fInfoLevelId as FINDEX_INFO_LEVELS, byval lpFindFileData as LPVOID, byval fSearchOp as FINDEX_SEARCH_OPS, byval lpSearchFilter as LPVOID, byval dwAdditionalFlags as DWORD) as HANDLE
  677 declare function FindNextFileA(byval hFindFile as HANDLE, byval lpFindFileData as LPWIN32_FIND_DATAA) as WINBOOL
  678 declare function FindNextFileW(byval hFindFile as HANDLE, byval lpFindFileData as LPWIN32_FIND_DATAW) as WINBOOL
  679 declare function FlushFileBuffers(byval hFile as HANDLE) as WINBOOL
  680 declare function GetDiskFreeSpaceExA(byval lpDirectoryName as LPCSTR, byval lpFreeBytesAvailableToCaller as PULARGE_INTEGER, byval lpTotalNumberOfBytes as PULARGE_INTEGER, byval lpTotalNumberOfFreeBytes as PULARGE_INTEGER) as WINBOOL
  681 declare function GetDiskFreeSpaceExW(byval lpDirectoryName as LPCWSTR, byval lpFreeBytesAvailableToCaller as PULARGE_INTEGER, byval lpTotalNumberOfBytes as PULARGE_INTEGER, byval lpTotalNumberOfFreeBytes as PULARGE_INTEGER) as WINBOOL
  682 declare function GetFileAttributesExA(byval lpFileName as LPCSTR, byval fInfoLevelId as GET_FILEEX_INFO_LEVELS, byval lpFileInformation as LPVOID) as WINBOOL
  683 declare function GetFileAttributesExW(byval lpFileName as LPCWSTR, byval fInfoLevelId as GET_FILEEX_INFO_LEVELS, byval lpFileInformation as LPVOID) as WINBOOL
  684 declare function LockFileEx(byval hFile as HANDLE, byval dwFlags as DWORD, byval dwReserved as DWORD, byval nNumberOfBytesToLockLow as DWORD, byval nNumberOfBytesToLockHigh as DWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  685 declare function ReadFile(byval hFile as HANDLE, byval lpBuffer as LPVOID, byval nNumberOfBytesToRead as DWORD, byval lpNumberOfBytesRead as LPDWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  686 declare function RemoveDirectoryA(byval lpPathName as LPCSTR) as WINBOOL
  687 declare function RemoveDirectoryW(byval lpPathName as LPCWSTR) as WINBOOL
  688 declare function SetEndOfFile(byval hFile as HANDLE) as WINBOOL
  689 declare function SetFileAttributesA(byval lpFileName as LPCSTR, byval dwFileAttributes as DWORD) as WINBOOL
  690 declare function SetFileAttributesW(byval lpFileName as LPCWSTR, byval dwFileAttributes as DWORD) as WINBOOL
  691 declare function SetFilePointerEx(byval hFile as HANDLE, byval liDistanceToMove as LARGE_INTEGER, byval lpNewFilePointer as PLARGE_INTEGER, byval dwMoveMethod as DWORD) as WINBOOL
  692 declare function UnlockFileEx(byval hFile as HANDLE, byval dwReserved as DWORD, byval nNumberOfBytesToUnlockLow as DWORD, byval nNumberOfBytesToUnlockHigh as DWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  693 declare function WriteFile(byval hFile as HANDLE, byval lpBuffer as LPCVOID, byval nNumberOfBytesToWrite as DWORD, byval lpNumberOfBytesWritten as LPDWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  694 
  695 #ifdef UNICODE
  696     declare function CreateDirectory alias "CreateDirectoryW"(byval lpPathName as LPCWSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
  697     declare function DeleteFile alias "DeleteFileW"(byval lpFileName as LPCWSTR) as WINBOOL
  698     declare function FindFirstFileEx alias "FindFirstFileExW"(byval lpFileName as LPCWSTR, byval fInfoLevelId as FINDEX_INFO_LEVELS, byval lpFindFileData as LPVOID, byval fSearchOp as FINDEX_SEARCH_OPS, byval lpSearchFilter as LPVOID, byval dwAdditionalFlags as DWORD) as HANDLE
  699     declare function FindNextFile alias "FindNextFileW"(byval hFindFile as HANDLE, byval lpFindFileData as LPWIN32_FIND_DATAW) as WINBOOL
  700     declare function GetDiskFreeSpaceEx alias "GetDiskFreeSpaceExW"(byval lpDirectoryName as LPCWSTR, byval lpFreeBytesAvailableToCaller as PULARGE_INTEGER, byval lpTotalNumberOfBytes as PULARGE_INTEGER, byval lpTotalNumberOfFreeBytes as PULARGE_INTEGER) as WINBOOL
  701     declare function GetFileAttributesEx alias "GetFileAttributesExW"(byval lpFileName as LPCWSTR, byval fInfoLevelId as GET_FILEEX_INFO_LEVELS, byval lpFileInformation as LPVOID) as WINBOOL
  702     declare function RemoveDirectory alias "RemoveDirectoryW"(byval lpPathName as LPCWSTR) as WINBOOL
  703     declare function SetFileAttributes alias "SetFileAttributesW"(byval lpFileName as LPCWSTR, byval dwFileAttributes as DWORD) as WINBOOL
  704 
  705     #if _WIN32_WINNT >= &h0600
  706         declare function SetFileInformationByHandle(byval hFile as HANDLE, byval FileInformationClass as FILE_INFO_BY_HANDLE_CLASS, byval lpFileInformation as LPVOID, byval dwBufferSize as DWORD) as WINBOOL
  707     #endif
  708 #endif
  709 
  710 #if defined(UNICODE) and (_WIN32_WINNT = &h0602)
  711     declare function CreateFile2(byval lpFileName as LPCWSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval dwCreationDisposition as DWORD, byval pCreateExParams as LPCREATEFILE2_EXTENDED_PARAMETERS) as HANDLE
  712 #elseif not defined(UNICODE)
  713     declare function CreateDirectory alias "CreateDirectoryA"(byval lpPathName as LPCSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
  714     declare function DeleteFile alias "DeleteFileA"(byval lpFileName as LPCSTR) as WINBOOL
  715     declare function FindFirstFileEx alias "FindFirstFileExA"(byval lpFileName as LPCSTR, byval fInfoLevelId as FINDEX_INFO_LEVELS, byval lpFindFileData as LPVOID, byval fSearchOp as FINDEX_SEARCH_OPS, byval lpSearchFilter as LPVOID, byval dwAdditionalFlags as DWORD) as HANDLE
  716     declare function FindNextFile alias "FindNextFileA"(byval hFindFile as HANDLE, byval lpFindFileData as LPWIN32_FIND_DATAA) as WINBOOL
  717     declare function GetDiskFreeSpaceEx alias "GetDiskFreeSpaceExA"(byval lpDirectoryName as LPCSTR, byval lpFreeBytesAvailableToCaller as PULARGE_INTEGER, byval lpTotalNumberOfBytes as PULARGE_INTEGER, byval lpTotalNumberOfFreeBytes as PULARGE_INTEGER) as WINBOOL
  718     declare function GetFileAttributesEx alias "GetFileAttributesExA"(byval lpFileName as LPCSTR, byval fInfoLevelId as GET_FILEEX_INFO_LEVELS, byval lpFileInformation as LPVOID) as WINBOOL
  719     declare function RemoveDirectory alias "RemoveDirectoryA"(byval lpPathName as LPCSTR) as WINBOOL
  720     declare function SetFileAttributes alias "SetFileAttributesA"(byval lpFileName as LPCSTR, byval dwFileAttributes as DWORD) as WINBOOL
  721 #endif
  722 
  723 #ifndef UNICODE
  724     #if _WIN32_WINNT >= &h0600
  725         declare function SetFileInformationByHandle(byval hFile as HANDLE, byval FileInformationClass as FILE_INFO_BY_HANDLE_CLASS, byval lpFileInformation as LPVOID, byval dwBufferSize as DWORD) as WINBOOL
  726     #endif
  727 
  728     #if _WIN32_WINNT = &h0602
  729         declare function CreateFile2(byval lpFileName as LPCWSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval dwCreationDisposition as DWORD, byval pCreateExParams as LPCREATEFILE2_EXTENDED_PARAMETERS) as HANDLE
  730     #endif
  731 #endif
  732 
  733 #define _APISETHANDLE_
  734 const INVALID_HANDLE_VALUE = cast(HANDLE, cast(LONG_PTR, -1))
  735 declare function CloseHandle(byval hObject as HANDLE) as WINBOOL
  736 declare function DuplicateHandle(byval hSourceProcessHandle as HANDLE, byval hSourceHandle as HANDLE, byval hTargetProcessHandle as HANDLE, byval lpTargetHandle as LPHANDLE, byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval dwOptions as DWORD) as WINBOOL
  737 declare function GetHandleInformation(byval hObject as HANDLE, byval lpdwFlags as LPDWORD) as WINBOOL
  738 declare function SetHandleInformation(byval hObject as HANDLE, byval dwMask as DWORD, byval dwFlags as DWORD) as WINBOOL
  739 #define _HEAPAPI_H_
  740 
  741 type _HEAP_SUMMARY
  742     cb as DWORD
  743     cbAllocated as SIZE_T_
  744     cbCommitted as SIZE_T_
  745     cbReserved as SIZE_T_
  746     cbMaxReserve as SIZE_T_
  747 end type
  748 
  749 type HEAP_SUMMARY as _HEAP_SUMMARY
  750 type PHEAP_SUMMARY as _HEAP_SUMMARY ptr
  751 type LPHEAP_SUMMARY as PHEAP_SUMMARY
  752 
  753 declare function HeapCreate(byval flOptions as DWORD, byval dwInitialSize as SIZE_T_, byval dwMaximumSize as SIZE_T_) as HANDLE
  754 declare function HeapDestroy(byval hHeap as HANDLE) as WINBOOL
  755 declare function HeapValidate(byval hHeap as HANDLE, byval dwFlags as DWORD, byval lpMem as LPCVOID) as WINBOOL
  756 declare function HeapCompact(byval hHeap as HANDLE, byval dwFlags as DWORD) as SIZE_T_
  757 declare function HeapSummary(byval hHeap as HANDLE, byval dwFlags as DWORD, byval lpSummary as LPHEAP_SUMMARY) as WINBOOL
  758 declare function GetProcessHeaps(byval NumberOfHeaps as DWORD, byval ProcessHeaps as PHANDLE) as DWORD
  759 declare function HeapLock(byval hHeap as HANDLE) as WINBOOL
  760 declare function HeapUnlock(byval hHeap as HANDLE) as WINBOOL
  761 declare function HeapWalk(byval hHeap as HANDLE, byval lpEntry as LPPROCESS_HEAP_ENTRY) as WINBOOL
  762 declare function HeapSetInformation(byval HeapHandle as HANDLE, byval HeapInformationClass as HEAP_INFORMATION_CLASS, byval HeapInformation as PVOID, byval HeapInformationLength as SIZE_T_) as WINBOOL
  763 declare function HeapQueryInformation(byval HeapHandle as HANDLE, byval HeapInformationClass as HEAP_INFORMATION_CLASS, byval HeapInformation as PVOID, byval HeapInformationLength as SIZE_T_, byval ReturnLength as PSIZE_T) as WINBOOL
  764 declare function HeapAlloc(byval hHeap as HANDLE, byval dwFlags as DWORD, byval dwBytes as SIZE_T_) as LPVOID
  765 declare function HeapReAlloc(byval hHeap as HANDLE, byval dwFlags as DWORD, byval lpMem as LPVOID, byval dwBytes as SIZE_T_) as LPVOID
  766 declare function HeapFree(byval hHeap as HANDLE, byval dwFlags as DWORD, byval lpMem as LPVOID) as WINBOOL
  767 declare function HeapSize(byval hHeap as HANDLE, byval dwFlags as DWORD, byval lpMem as LPCVOID) as SIZE_T_
  768 declare function GetProcessHeap() as HANDLE
  769 #define _IO_APISET_H_
  770 declare function GetOverlappedResult(byval hFile as HANDLE, byval lpOverlapped as LPOVERLAPPED, byval lpNumberOfBytesTransferred as LPDWORD, byval bWait as WINBOOL) as WINBOOL
  771 declare function CreateIoCompletionPort(byval FileHandle as HANDLE, byval ExistingCompletionPort as HANDLE, byval CompletionKey as ULONG_PTR, byval NumberOfConcurrentThreads as DWORD) as HANDLE
  772 declare function GetQueuedCompletionStatus(byval CompletionPort as HANDLE, byval lpNumberOfBytesTransferred as LPDWORD, byval lpCompletionKey as PULONG_PTR, byval lpOverlapped as LPOVERLAPPED ptr, byval dwMilliseconds as DWORD) as WINBOOL
  773 declare function PostQueuedCompletionStatus(byval CompletionPort as HANDLE, byval dwNumberOfBytesTransferred as DWORD, byval dwCompletionKey as ULONG_PTR, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  774 declare function DeviceIoControl(byval hDevice as HANDLE, byval dwIoControlCode as DWORD, byval lpInBuffer as LPVOID, byval nInBufferSize as DWORD, byval lpOutBuffer as LPVOID, byval nOutBufferSize as DWORD, byval lpBytesReturned as LPDWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  775 declare function CancelIo(byval hFile as HANDLE) as WINBOOL
  776 
  777 #if _WIN32_WINNT >= &h0600
  778     declare function GetQueuedCompletionStatusEx(byval CompletionPort as HANDLE, byval lpCompletionPortEntries as LPOVERLAPPED_ENTRY, byval ulCount as ULONG, byval ulNumEntriesRemoved as PULONG, byval dwMilliseconds as DWORD, byval fAlertable as WINBOOL) as WINBOOL
  779     declare function CancelIoEx(byval hFile as HANDLE, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
  780     declare function CancelSynchronousIo(byval hThread as HANDLE) as WINBOOL
  781 #endif
  782 
  783 declare function GetOverlappedResultEx(byval hFile as HANDLE, byval lpOverlapped as LPOVERLAPPED, byval lpNumberOfBytesTransferred as LPDWORD, byval dwMilliseconds as DWORD, byval bAlertable as WINBOOL) as WINBOOL
  784 #define _INTERLOCKAPI_H_
  785 
  786 #ifndef __FB_64BIT__
  787     #define InterlockedExchangePointer(Target, Value) cast(PVOID, InterlockedExchange(cast(PLONG, (Target)), cast(LONG, cast(LONG_PTR, (Value)))))
  788     #define InterlockedExchangePointerNoFence InterlockedExchangePointer
  789     #define InterlockedIncrement(lpAddend) cast(LONG, _InterlockedIncrement((lpAddend)))
  790     #define InterlockedDecrement(lpAddend) cast(LONG, _InterlockedDecrement((lpAddend)))
  791     #define InterlockedExchange(Target, Value) cast(LONG, _InterlockedExchange((Target), (Value)))
  792     #define InterlockedExchangeAdd(Addend, Value) cast(LONG, _InterlockedExchangeAdd((Addend), (Value)))
  793     #define InterlockedCompareExchange(Destination, Exchange, Comperand) cast(LONG, _InterlockedCompareExchange((Destination), (Exchange), (Comperand)))
  794     #define InterlockedCompareExchange64(Destination, Exchange, Comperand) cast(LONGLONG, _InterlockedCompareExchange64((Destination), (Exchange), (Comperand)))
  795 #endif
  796 
  797 declare sub InitializeSListHead(byval ListHead as PSLIST_HEADER)
  798 declare function InterlockedPopEntrySList(byval ListHead as PSLIST_HEADER) as PSLIST_ENTRY
  799 declare function InterlockedPushEntrySList(byval ListHead as PSLIST_HEADER, byval ListEntry as PSLIST_ENTRY) as PSLIST_ENTRY
  800 declare function InterlockedFlushSList(byval ListHead as PSLIST_HEADER) as PSLIST_ENTRY
  801 declare function QueryDepthSList(byval ListHead as PSLIST_HEADER) as USHORT
  802 
  803 #if _WIN32_WINNT = &h0602
  804     declare function InterlockedPushListSListEx(byval ListHead as PSLIST_HEADER, byval List as PSLIST_ENTRY, byval ListEnd as PSLIST_ENTRY, byval Count as ULONG) as PSLIST_ENTRY
  805     declare function InterlockedPushListSList alias "InterlockedPushListSListEx"(byval ListHead as PSLIST_HEADER, byval List as PSLIST_ENTRY, byval ListEnd as PSLIST_ENTRY, byval Count as ULONG) as PSLIST_ENTRY
  806 #endif
  807 
  808 #define _JOBAPISET_H_
  809 declare function IsProcessInJob(byval ProcessHandle as HANDLE, byval JobHandle as HANDLE, byval Result as PBOOL) as WINBOOL
  810 #define _APISETLIBLOADER_
  811 
  812 type tagENUMUILANG
  813     NumOfEnumUILang as ULONG
  814     SizeOfEnumUIBuffer as ULONG
  815     pEnumUIBuffer as LANGID ptr
  816 end type
  817 
  818 type ENUMUILANG as tagENUMUILANG
  819 type PENUMUILANG as tagENUMUILANG ptr
  820 type ENUMRESLANGPROCA as function(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpName as LPCSTR, byval wLanguage as WORD, byval lParam as LONG_PTR) as WINBOOL
  821 type ENUMRESLANGPROCW as function(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpName as LPCWSTR, byval wLanguage as WORD, byval lParam as LONG_PTR) as WINBOOL
  822 type ENUMRESNAMEPROCA as function(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpName as LPSTR, byval lParam as LONG_PTR) as WINBOOL
  823 type ENUMRESNAMEPROCW as function(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpName as LPWSTR, byval lParam as LONG_PTR) as WINBOOL
  824 type ENUMRESTYPEPROCA as function(byval hModule as HMODULE, byval lpType as LPSTR, byval lParam as LONG_PTR) as WINBOOL
  825 type ENUMRESTYPEPROCW as function(byval hModule as HMODULE, byval lpType as LPWSTR, byval lParam as LONG_PTR) as WINBOOL
  826 type PGET_MODULE_HANDLE_EXA as function(byval dwFlags as DWORD, byval lpModuleName as LPCSTR, byval phModule as HMODULE ptr) as WINBOOL
  827 type PGET_MODULE_HANDLE_EXW as function(byval dwFlags as DWORD, byval lpModuleName as LPCWSTR, byval phModule as HMODULE ptr) as WINBOOL
  828 type DLL_DIRECTORY_COOKIE as PVOID
  829 type PDLL_DIRECTORY_COOKIE as PVOID ptr
  830 
  831 const FIND_RESOURCE_DIRECTORY_TYPES = &h0100
  832 const FIND_RESOURCE_DIRECTORY_NAMES = &h0200
  833 const FIND_RESOURCE_DIRECTORY_LANGUAGES = &h0400
  834 const RESOURCE_ENUM_LN = &h0001
  835 const RESOURCE_ENUM_MUI = &h0002
  836 const RESOURCE_ENUM_MUI_SYSTEM = &h0004
  837 const RESOURCE_ENUM_VALIDATE = &h0008
  838 const RESOURCE_ENUM_MODULE_EXACT = &h0010
  839 const SUPPORT_LANG_NUMBER = 32
  840 const DONT_RESOLVE_DLL_REFERENCES = &h1
  841 const LOAD_LIBRARY_AS_DATAFILE = &h2
  842 const LOAD_WITH_ALTERED_SEARCH_PATH = &h8
  843 const LOAD_IGNORE_CODE_AUTHZ_LEVEL = &h10
  844 const LOAD_LIBRARY_AS_IMAGE_RESOURCE = &h20
  845 const LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = &h40
  846 const LOAD_LIBRARY_REQUIRE_SIGNED_TARGET = &h80
  847 const LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = &h100
  848 const LOAD_LIBRARY_SEARCH_APPLICATION_DIR = &h200
  849 const LOAD_LIBRARY_SEARCH_USER_DIRS = &h400
  850 const LOAD_LIBRARY_SEARCH_SYSTEM32 = &h800
  851 const LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = &h1000
  852 const GET_MODULE_HANDLE_EX_FLAG_PIN = &h1
  853 const GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = &h2
  854 const GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = &h4
  855 
  856 #ifdef UNICODE
  857     type ENUMRESLANGPROC as ENUMRESLANGPROCW
  858     type ENUMRESNAMEPROC as ENUMRESNAMEPROCW
  859     type ENUMRESTYPEPROC as ENUMRESTYPEPROCW
  860 #else
  861     type ENUMRESLANGPROC as ENUMRESLANGPROCA
  862     type ENUMRESNAMEPROC as ENUMRESNAMEPROCA
  863     type ENUMRESTYPEPROC as ENUMRESTYPEPROCA
  864 #endif
  865 
  866 declare function FindResourceExW(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpName as LPCWSTR, byval wLanguage as WORD) as HRSRC
  867 declare sub FreeLibraryAndExitThread(byval hLibModule as HMODULE, byval dwExitCode as DWORD)
  868 declare function FreeResource(byval hResData as HGLOBAL) as WINBOOL
  869 declare function GetModuleFileNameA(byval hModule as HMODULE, byval lpFilename as LPSTR, byval nSize as DWORD) as DWORD
  870 declare function GetModuleFileNameW(byval hModule as HMODULE, byval lpFilename as LPWSTR, byval nSize as DWORD) as DWORD
  871 declare function GetModuleHandleA(byval lpModuleName as LPCSTR) as HMODULE
  872 declare function GetModuleHandleW(byval lpModuleName as LPCWSTR) as HMODULE
  873 declare function LoadLibraryExA(byval lpLibFileName as LPCSTR, byval hFile as HANDLE, byval dwFlags as DWORD) as HMODULE
  874 declare function LoadLibraryExW(byval lpLibFileName as LPCWSTR, byval hFile as HANDLE, byval dwFlags as DWORD) as HMODULE
  875 declare function LoadResource(byval hModule as HMODULE, byval hResInfo as HRSRC) as HGLOBAL
  876 declare function LoadStringA(byval hInstance as HINSTANCE, byval uID as UINT, byval lpBuffer as LPSTR, byval cchBufferMax as long) as long
  877 declare function LoadStringW(byval hInstance as HINSTANCE, byval uID as UINT, byval lpBuffer as LPWSTR, byval cchBufferMax as long) as long
  878 declare function LockResource(byval hResData as HGLOBAL) as LPVOID
  879 declare function SizeofResource(byval hModule as HMODULE, byval hResInfo as HRSRC) as DWORD
  880 declare function AddDllDirectory(byval NewDirectory as PCWSTR) as DLL_DIRECTORY_COOKIE
  881 declare function RemoveDllDirectory(byval Cookie as DLL_DIRECTORY_COOKIE) as WINBOOL
  882 declare function SetDefaultDllDirectories(byval DirectoryFlags as DWORD) as WINBOOL
  883 declare function GetModuleHandleExA(byval dwFlags as DWORD, byval lpModuleName as LPCSTR, byval phModule as HMODULE ptr) as WINBOOL
  884 declare function GetModuleHandleExW(byval dwFlags as DWORD, byval lpModuleName as LPCWSTR, byval phModule as HMODULE ptr) as WINBOOL
  885 
  886 #ifdef UNICODE
  887     type PGET_MODULE_HANDLE_EX as PGET_MODULE_HANDLE_EXW
  888     declare function GetModuleHandleEx alias "GetModuleHandleExW"(byval dwFlags as DWORD, byval lpModuleName as LPCWSTR, byval phModule as HMODULE ptr) as WINBOOL
  889     declare function FindResourceEx alias "FindResourceExW"(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpName as LPCWSTR, byval wLanguage as WORD) as HRSRC
  890     declare function LoadString alias "LoadStringW"(byval hInstance as HINSTANCE, byval uID as UINT, byval lpBuffer as LPWSTR, byval cchBufferMax as long) as long
  891     declare function GetModuleFileName alias "GetModuleFileNameW"(byval hModule as HMODULE, byval lpFilename as LPWSTR, byval nSize as DWORD) as DWORD
  892     declare function GetModuleHandle alias "GetModuleHandleW"(byval lpModuleName as LPCWSTR) as HMODULE
  893     declare function LoadLibraryEx alias "LoadLibraryExW"(byval lpLibFileName as LPCWSTR, byval hFile as HANDLE, byval dwFlags as DWORD) as HMODULE
  894     #define EnumResourceLanguages EnumResourceLanguagesW
  895 #else
  896     type PGET_MODULE_HANDLE_EX as PGET_MODULE_HANDLE_EXA
  897     declare function GetModuleHandleEx alias "GetModuleHandleExA"(byval dwFlags as DWORD, byval lpModuleName as LPCSTR, byval phModule as HMODULE ptr) as WINBOOL
  898     declare function LoadString alias "LoadStringA"(byval hInstance as HINSTANCE, byval uID as UINT, byval lpBuffer as LPSTR, byval cchBufferMax as long) as long
  899     declare function GetModuleFileName alias "GetModuleFileNameA"(byval hModule as HMODULE, byval lpFilename as LPSTR, byval nSize as DWORD) as DWORD
  900     declare function GetModuleHandle alias "GetModuleHandleA"(byval lpModuleName as LPCSTR) as HMODULE
  901     declare function LoadLibraryEx alias "LoadLibraryExA"(byval lpLibFileName as LPCSTR, byval hFile as HANDLE, byval dwFlags as DWORD) as HMODULE
  902     #define EnumResourceLanguages EnumResourceLanguagesA
  903 #endif
  904 
  905 #if _WIN32_WINNT >= &h0600
  906     declare function EnumResourceLanguagesExA(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpName as LPCSTR, byval lpEnumFunc as ENUMRESLANGPROCA, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  907     declare function EnumResourceLanguagesExW(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpName as LPCWSTR, byval lpEnumFunc as ENUMRESLANGPROCW, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  908     declare function EnumResourceNamesExA(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpEnumFunc as ENUMRESNAMEPROCA, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  909     declare function EnumResourceNamesExW(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpEnumFunc as ENUMRESNAMEPROCW, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  910     declare function EnumResourceTypesExA(byval hModule as HMODULE, byval lpEnumFunc as ENUMRESTYPEPROCA, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  911     declare function EnumResourceTypesExW(byval hModule as HMODULE, byval lpEnumFunc as ENUMRESTYPEPROCW, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  912     declare function QueryOptionalDelayLoadedAPI(byval CallerModule as HMODULE, byval lpDllName as LPCSTR, byval lpProcName as LPCSTR, byval Reserved as DWORD) as WINBOOL
  913 #endif
  914 
  915 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
  916     declare function EnumResourceLanguagesEx alias "EnumResourceLanguagesExW"(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpName as LPCWSTR, byval lpEnumFunc as ENUMRESLANGPROCW, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  917     declare function EnumResourceNamesEx alias "EnumResourceNamesExW"(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpEnumFunc as ENUMRESNAMEPROCW, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  918     declare function EnumResourceTypesEx alias "EnumResourceTypesExW"(byval hModule as HMODULE, byval lpEnumFunc as ENUMRESTYPEPROCW, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  919 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
  920     declare function EnumResourceLanguagesEx alias "EnumResourceLanguagesExA"(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpName as LPCSTR, byval lpEnumFunc as ENUMRESLANGPROCA, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  921     declare function EnumResourceNamesEx alias "EnumResourceNamesExA"(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpEnumFunc as ENUMRESNAMEPROCA, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  922     declare function EnumResourceTypesEx alias "EnumResourceTypesExA"(byval hModule as HMODULE, byval lpEnumFunc as ENUMRESTYPEPROCA, byval lParam as LONG_PTR, byval dwFlags as DWORD, byval LangId as LANGID) as WINBOOL
  923 #endif
  924 
  925 declare function DisableThreadLibraryCalls(byval hLibModule as HMODULE) as WINBOOL
  926 declare function FreeLibrary(byval hLibModule as HMODULE) as WINBOOL
  927 declare function GetProcAddress(byval hModule as HMODULE, byval lpProcName as LPCSTR) as FARPROC
  928 
  929 #if _WIN32_WINNT >= &h0601
  930     declare function FindStringOrdinal(byval dwFindStringOrdinalFlags as DWORD, byval lpStringSource as LPCWSTR, byval cchSource as long, byval lpStringValue as LPCWSTR, byval cchValue as long, byval bIgnoreCase as WINBOOL) as long
  931 #endif
  932 
  933 #define _MEMORYAPI_H_
  934 
  935 type _MEMORY_RESOURCE_NOTIFICATION_TYPE as long
  936 enum
  937     LowMemoryResourceNotification
  938     HighMemoryResourceNotification
  939 end enum
  940 
  941 type MEMORY_RESOURCE_NOTIFICATION_TYPE as _MEMORY_RESOURCE_NOTIFICATION_TYPE
  942 
  943 #if _WIN32_WINNT = &h0602
  944     type _WIN32_MEMORY_RANGE_ENTRY
  945         VirtualAddress as PVOID
  946         NumberOfBytes as SIZE_T_
  947     end type
  948 
  949     type WIN32_MEMORY_RANGE_ENTRY as _WIN32_MEMORY_RANGE_ENTRY
  950     type PWIN32_MEMORY_RANGE_ENTRY as _WIN32_MEMORY_RANGE_ENTRY ptr
  951 #endif
  952 
  953 const FILE_MAP_WRITE = SECTION_MAP_WRITE
  954 const FILE_MAP_READ = SECTION_MAP_READ
  955 const FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS
  956 const FILE_MAP_COPY = &h1
  957 const FILE_MAP_RESERVE = &h80000000
  958 
  959 declare function VirtualQuery(byval lpAddress as LPCVOID, byval lpBuffer as PMEMORY_BASIC_INFORMATION, byval dwLength as SIZE_T_) as SIZE_T_
  960 declare function FlushViewOfFile(byval lpBaseAddress as LPCVOID, byval dwNumberOfBytesToFlush as SIZE_T_) as WINBOOL
  961 declare function UnmapViewOfFile(byval lpBaseAddress as LPCVOID) as WINBOOL
  962 declare function CreateFileMappingFromApp(byval hFile as HANDLE, byval SecurityAttributes as PSECURITY_ATTRIBUTES, byval PageProtection as ULONG, byval MaximumSize as ULONG64, byval Name as PCWSTR) as HANDLE
  963 declare function MapViewOfFileFromApp(byval hFileMappingObject as HANDLE, byval DesiredAccess as ULONG, byval FileOffset as ULONG64, byval NumberOfBytesToMap as SIZE_T_) as PVOID
  964 
  965 const FILE_MAP_EXECUTE = SECTION_MAP_EXECUTE_EXPLICIT
  966 #define FILE_CACHE_FLAGS_DEFINED
  967 const FILE_CACHE_MAX_HARD_ENABLE = &h00000001
  968 const FILE_CACHE_MAX_HARD_DISABLE = &h00000002
  969 const FILE_CACHE_MIN_HARD_ENABLE = &h00000004
  970 const FILE_CACHE_MIN_HARD_DISABLE = &h00000008
  971 
  972 declare function VirtualAlloc(byval lpAddress as LPVOID, byval dwSize as SIZE_T_, byval flAllocationType as DWORD, byval flProtect as DWORD) as LPVOID
  973 declare function VirtualFree(byval lpAddress as LPVOID, byval dwSize as SIZE_T_, byval dwFreeType as DWORD) as WINBOOL
  974 declare function VirtualProtect(byval lpAddress as LPVOID, byval dwSize as SIZE_T_, byval flNewProtect as DWORD, byval lpflOldProtect as PDWORD) as WINBOOL
  975 declare function VirtualAllocEx(byval hProcess as HANDLE, byval lpAddress as LPVOID, byval dwSize as SIZE_T_, byval flAllocationType as DWORD, byval flProtect as DWORD) as LPVOID
  976 declare function VirtualFreeEx(byval hProcess as HANDLE, byval lpAddress as LPVOID, byval dwSize as SIZE_T_, byval dwFreeType as DWORD) as WINBOOL
  977 declare function VirtualProtectEx(byval hProcess as HANDLE, byval lpAddress as LPVOID, byval dwSize as SIZE_T_, byval flNewProtect as DWORD, byval lpflOldProtect as PDWORD) as WINBOOL
  978 declare function VirtualQueryEx(byval hProcess as HANDLE, byval lpAddress as LPCVOID, byval lpBuffer as PMEMORY_BASIC_INFORMATION, byval dwLength as SIZE_T_) as SIZE_T_
  979 declare function ReadProcessMemory(byval hProcess as HANDLE, byval lpBaseAddress as LPCVOID, byval lpBuffer as LPVOID, byval nSize as SIZE_T_, byval lpNumberOfBytesRead as SIZE_T_ ptr) as WINBOOL
  980 declare function WriteProcessMemory(byval hProcess as HANDLE, byval lpBaseAddress as LPVOID, byval lpBuffer as LPCVOID, byval nSize as SIZE_T_, byval lpNumberOfBytesWritten as SIZE_T_ ptr) as WINBOOL
  981 declare function CreateFileMappingW(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCWSTR) as HANDLE
  982 declare function OpenFileMappingW(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCWSTR) as HANDLE
  983 declare function MapViewOfFile(byval hFileMappingObject as HANDLE, byval dwDesiredAccess as DWORD, byval dwFileOffsetHigh as DWORD, byval dwFileOffsetLow as DWORD, byval dwNumberOfBytesToMap as SIZE_T_) as LPVOID
  984 declare function MapViewOfFileEx(byval hFileMappingObject as HANDLE, byval dwDesiredAccess as DWORD, byval dwFileOffsetHigh as DWORD, byval dwFileOffsetLow as DWORD, byval dwNumberOfBytesToMap as SIZE_T_, byval lpBaseAddress as LPVOID) as LPVOID
  985 declare function GetLargePageMinimum() as SIZE_T_
  986 declare function GetProcessWorkingSetSizeEx(byval hProcess as HANDLE, byval lpMinimumWorkingSetSize as PSIZE_T, byval lpMaximumWorkingSetSize as PSIZE_T, byval Flags as PDWORD) as WINBOOL
  987 declare function SetProcessWorkingSetSizeEx(byval hProcess as HANDLE, byval dwMinimumWorkingSetSize as SIZE_T_, byval dwMaximumWorkingSetSize as SIZE_T_, byval Flags as DWORD) as WINBOOL
  988 declare function VirtualLock(byval lpAddress as LPVOID, byval dwSize as SIZE_T_) as WINBOOL
  989 declare function VirtualUnlock(byval lpAddress as LPVOID, byval dwSize as SIZE_T_) as WINBOOL
  990 declare function GetWriteWatch(byval dwFlags as DWORD, byval lpBaseAddress as PVOID, byval dwRegionSize as SIZE_T_, byval lpAddresses as PVOID ptr, byval lpdwCount as ULONG_PTR ptr, byval lpdwGranularity as LPDWORD) as UINT
  991 declare function ResetWriteWatch(byval lpBaseAddress as LPVOID, byval dwRegionSize as SIZE_T_) as UINT
  992 declare function CreateMemoryResourceNotification(byval NotificationType as MEMORY_RESOURCE_NOTIFICATION_TYPE) as HANDLE
  993 declare function QueryMemoryResourceNotification(byval ResourceNotificationHandle as HANDLE, byval ResourceState as PBOOL) as WINBOOL
  994 declare function GetSystemFileCacheSize(byval lpMinimumFileCacheSize as PSIZE_T, byval lpMaximumFileCacheSize as PSIZE_T, byval lpFlags as PDWORD) as WINBOOL
  995 declare function SetSystemFileCacheSize(byval MinimumFileCacheSize as SIZE_T_, byval MaximumFileCacheSize as SIZE_T_, byval Flags as DWORD) as WINBOOL
  996 
  997 #ifdef UNICODE
  998     declare function CreateFileMapping alias "CreateFileMappingW"(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCWSTR) as HANDLE
  999     declare function OpenFileMapping alias "OpenFileMappingW"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1000 #endif
 1001 
 1002 #if _WIN32_WINNT >= &h0600
 1003     declare function CreateFileMappingNumaW(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCWSTR, byval nndPreferred as DWORD) as HANDLE
 1004 #endif
 1005 
 1006 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 1007     declare function CreateFileMappingNuma alias "CreateFileMappingNumaW"(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCWSTR, byval nndPreferred as DWORD) as HANDLE
 1008 #endif
 1009 
 1010 #if _WIN32_WINNT = &h0602
 1011     declare function PrefetchVirtualMemory(byval hProcess as HANDLE, byval NumberOfEntries as ULONG_PTR, byval VirtualAddresses as PWIN32_MEMORY_RANGE_ENTRY, byval Flags as ULONG) as WINBOOL
 1012     declare function UnmapViewOfFileEx(byval BaseAddress as PVOID, byval UnmapFlags as ULONG) as WINBOOL
 1013 #endif
 1014 
 1015 #define _NAMEDPIPE_H_
 1016 declare function ImpersonateNamedPipeClient(byval hNamedPipe as HANDLE) as WINBOOL
 1017 declare function CreatePipe(byval hReadPipe as PHANDLE, byval hWritePipe as PHANDLE, byval lpPipeAttributes as LPSECURITY_ATTRIBUTES, byval nSize as DWORD) as WINBOOL
 1018 declare function ConnectNamedPipe(byval hNamedPipe as HANDLE, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
 1019 declare function DisconnectNamedPipe(byval hNamedPipe as HANDLE) as WINBOOL
 1020 declare function SetNamedPipeHandleState(byval hNamedPipe as HANDLE, byval lpMode as LPDWORD, byval lpMaxCollectionCount as LPDWORD, byval lpCollectDataTimeout as LPDWORD) as WINBOOL
 1021 declare function PeekNamedPipe(byval hNamedPipe as HANDLE, byval lpBuffer as LPVOID, byval nBufferSize as DWORD, byval lpBytesRead as LPDWORD, byval lpTotalBytesAvail as LPDWORD, byval lpBytesLeftThisMessage as LPDWORD) as WINBOOL
 1022 declare function TransactNamedPipe(byval hNamedPipe as HANDLE, byval lpInBuffer as LPVOID, byval nInBufferSize as DWORD, byval lpOutBuffer as LPVOID, byval nOutBufferSize as DWORD, byval lpBytesRead as LPDWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
 1023 declare function CreateNamedPipeW(byval lpName as LPCWSTR, byval dwOpenMode as DWORD, byval dwPipeMode as DWORD, byval nMaxInstances as DWORD, byval nOutBufferSize as DWORD, byval nInBufferSize as DWORD, byval nDefaultTimeOut as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as HANDLE
 1024 declare function WaitNamedPipeW(byval lpNamedPipeName as LPCWSTR, byval nTimeOut as DWORD) as WINBOOL
 1025 
 1026 #if _WIN32_WINNT >= &h0600
 1027     declare function GetNamedPipeClientComputerNameW(byval Pipe as HANDLE, byval ClientComputerName as LPWSTR, byval ClientComputerNameLength as ULONG) as WINBOOL
 1028 #endif
 1029 
 1030 #ifdef UNICODE
 1031     declare function CreateNamedPipe alias "CreateNamedPipeW"(byval lpName as LPCWSTR, byval dwOpenMode as DWORD, byval dwPipeMode as DWORD, byval nMaxInstances as DWORD, byval nOutBufferSize as DWORD, byval nInBufferSize as DWORD, byval nDefaultTimeOut as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as HANDLE
 1032     declare function WaitNamedPipe alias "WaitNamedPipeW"(byval lpNamedPipeName as LPCWSTR, byval nTimeOut as DWORD) as WINBOOL
 1033 
 1034     #if _WIN32_WINNT <= &h0502
 1035         #define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameW
 1036     #elseif _WIN32_WINNT >= &h0600
 1037         declare function GetNamedPipeClientComputerName alias "GetNamedPipeClientComputerNameW"(byval Pipe as HANDLE, byval ClientComputerName as LPWSTR, byval ClientComputerNameLength as ULONG) as WINBOOL
 1038     #endif
 1039 #endif
 1040 
 1041 #define _APISETNAMESPACE_
 1042 const PRIVATE_NAMESPACE_FLAG_DESTROY = &h1
 1043 declare function CreatePrivateNamespaceW(byval lpPrivateNamespaceAttributes as LPSECURITY_ATTRIBUTES, byval lpBoundaryDescriptor as LPVOID, byval lpAliasPrefix as LPCWSTR) as HANDLE
 1044 declare function OpenPrivateNamespaceW(byval lpBoundaryDescriptor as LPVOID, byval lpAliasPrefix as LPCWSTR) as HANDLE
 1045 
 1046 #ifdef UNICODE
 1047     declare function CreatePrivateNamespace alias "CreatePrivateNamespaceW"(byval lpPrivateNamespaceAttributes as LPSECURITY_ATTRIBUTES, byval lpBoundaryDescriptor as LPVOID, byval lpAliasPrefix as LPCWSTR) as HANDLE
 1048 #endif
 1049 
 1050 declare function ClosePrivateNamespace(byval Handle as HANDLE, byval Flags as ULONG) as WINBOOLEAN
 1051 declare function CreateBoundaryDescriptorW(byval Name as LPCWSTR, byval Flags as ULONG) as HANDLE
 1052 
 1053 #ifdef UNICODE
 1054     declare function CreateBoundaryDescriptor alias "CreateBoundaryDescriptorW"(byval Name as LPCWSTR, byval Flags as ULONG) as HANDLE
 1055 #endif
 1056 
 1057 declare function AddSIDToBoundaryDescriptor(byval BoundaryDescriptor as HANDLE ptr, byval RequiredSid as PSID) as WINBOOL
 1058 declare sub DeleteBoundaryDescriptor(byval BoundaryDescriptor as HANDLE)
 1059 #define _PROCESSENV_
 1060 declare function GetEnvironmentStringsA alias "GetEnvironmentStrings"() as LPCH
 1061 declare function GetEnvironmentStringsW() as LPWCH
 1062 declare function SetEnvironmentStringsW(byval NewEnvironment as LPWCH) as WINBOOL
 1063 
 1064 #ifdef UNICODE
 1065     declare function GetEnvironmentStrings alias "GetEnvironmentStringsW"() as LPWCH
 1066     declare function SetEnvironmentStrings alias "SetEnvironmentStringsW"(byval NewEnvironment as LPWCH) as WINBOOL
 1067 #else
 1068     declare function GetEnvironmentStrings() as LPCH
 1069 #endif
 1070 
 1071 declare function FreeEnvironmentStringsA(byval penv as LPCH) as WINBOOL
 1072 declare function FreeEnvironmentStringsW(byval penv as LPWCH) as WINBOOL
 1073 declare function GetStdHandle(byval nStdHandle as DWORD) as HANDLE
 1074 declare function SetStdHandle(byval nStdHandle as DWORD, byval hHandle as HANDLE) as WINBOOL
 1075 
 1076 #if _WIN32_WINNT >= &h0600
 1077     declare function SetStdHandleEx(byval nStdHandle as DWORD, byval hHandle as HANDLE, byval phPrevValue as PHANDLE) as WINBOOL
 1078 #endif
 1079 
 1080 declare function GetCommandLineA() as LPSTR
 1081 declare function GetCommandLineW() as LPWSTR
 1082 declare function GetEnvironmentVariableA(byval lpName as LPCSTR, byval lpBuffer as LPSTR, byval nSize as DWORD) as DWORD
 1083 declare function GetEnvironmentVariableW(byval lpName as LPCWSTR, byval lpBuffer as LPWSTR, byval nSize as DWORD) as DWORD
 1084 declare function SetEnvironmentVariableA(byval lpName as LPCSTR, byval lpValue as LPCSTR) as WINBOOL
 1085 declare function SetEnvironmentVariableW(byval lpName as LPCWSTR, byval lpValue as LPCWSTR) as WINBOOL
 1086 declare function ExpandEnvironmentStringsA(byval lpSrc as LPCSTR, byval lpDst as LPSTR, byval nSize as DWORD) as DWORD
 1087 declare function ExpandEnvironmentStringsW(byval lpSrc as LPCWSTR, byval lpDst as LPWSTR, byval nSize as DWORD) as DWORD
 1088 declare function SetCurrentDirectoryA(byval lpPathName as LPCSTR) as WINBOOL
 1089 declare function SetCurrentDirectoryW(byval lpPathName as LPCWSTR) as WINBOOL
 1090 declare function GetCurrentDirectoryA(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 1091 declare function GetCurrentDirectoryW(byval nBufferLength as DWORD, byval lpBuffer as LPWSTR) as DWORD
 1092 declare function SearchPathW(byval lpPath as LPCWSTR, byval lpFileName as LPCWSTR, byval lpExtension as LPCWSTR, byval nBufferLength as DWORD, byval lpBuffer as LPWSTR, byval lpFilePart as LPWSTR ptr) as DWORD
 1093 declare function SearchPathA(byval lpPath as LPCSTR, byval lpFileName as LPCSTR, byval lpExtension as LPCSTR, byval nBufferLength as DWORD, byval lpBuffer as LPSTR, byval lpFilePart as LPSTR ptr) as DWORD
 1094 declare function NeedCurrentDirectoryForExePathA(byval ExeName as LPCSTR) as WINBOOL
 1095 declare function NeedCurrentDirectoryForExePathW(byval ExeName as LPCWSTR) as WINBOOL
 1096 
 1097 #ifdef UNICODE
 1098     declare function ExpandEnvironmentStrings alias "ExpandEnvironmentStringsW"(byval lpSrc as LPCWSTR, byval lpDst as LPWSTR, byval nSize as DWORD) as DWORD
 1099     declare function FreeEnvironmentStrings alias "FreeEnvironmentStringsW"(byval penv as LPWCH) as WINBOOL
 1100     declare function GetCommandLine alias "GetCommandLineW"() as LPWSTR
 1101     declare function GetCurrentDirectory alias "GetCurrentDirectoryW"(byval nBufferLength as DWORD, byval lpBuffer as LPWSTR) as DWORD
 1102     declare function GetEnvironmentVariable alias "GetEnvironmentVariableW"(byval lpName as LPCWSTR, byval lpBuffer as LPWSTR, byval nSize as DWORD) as DWORD
 1103     declare function NeedCurrentDirectoryForExePath alias "NeedCurrentDirectoryForExePathW"(byval ExeName as LPCWSTR) as WINBOOL
 1104     declare function SearchPath alias "SearchPathW"(byval lpPath as LPCWSTR, byval lpFileName as LPCWSTR, byval lpExtension as LPCWSTR, byval nBufferLength as DWORD, byval lpBuffer as LPWSTR, byval lpFilePart as LPWSTR ptr) as DWORD
 1105     declare function SetCurrentDirectory alias "SetCurrentDirectoryW"(byval lpPathName as LPCWSTR) as WINBOOL
 1106     declare function SetEnvironmentVariable alias "SetEnvironmentVariableW"(byval lpName as LPCWSTR, byval lpValue as LPCWSTR) as WINBOOL
 1107 #else
 1108     declare function ExpandEnvironmentStrings alias "ExpandEnvironmentStringsA"(byval lpSrc as LPCSTR, byval lpDst as LPSTR, byval nSize as DWORD) as DWORD
 1109     declare function FreeEnvironmentStrings alias "FreeEnvironmentStringsA"(byval penv as LPCH) as WINBOOL
 1110     declare function GetCommandLine alias "GetCommandLineA"() as LPSTR
 1111     declare function GetCurrentDirectory alias "GetCurrentDirectoryA"(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 1112     declare function GetEnvironmentVariable alias "GetEnvironmentVariableA"(byval lpName as LPCSTR, byval lpBuffer as LPSTR, byval nSize as DWORD) as DWORD
 1113     declare function NeedCurrentDirectoryForExePath alias "NeedCurrentDirectoryForExePathA"(byval ExeName as LPCSTR) as WINBOOL
 1114     declare function SearchPath alias "SearchPathA"(byval lpPath as LPCSTR, byval lpFileName as LPCSTR, byval lpExtension as LPCSTR, byval nBufferLength as DWORD, byval lpBuffer as LPSTR, byval lpFilePart as LPSTR ptr) as DWORD
 1115     declare function SetCurrentDirectory alias "SetCurrentDirectoryA"(byval lpPathName as LPCSTR) as WINBOOL
 1116     declare function SetEnvironmentVariable alias "SetEnvironmentVariableA"(byval lpName as LPCSTR, byval lpValue as LPCSTR) as WINBOOL
 1117 #endif
 1118 
 1119 #define _PROCESSTHREADSAPI_H_
 1120 
 1121 #if _WIN32_WINNT <= &h0502
 1122     const FLS_OUT_OF_INDEXES = cast(DWORD, &hffffffff)
 1123 #endif
 1124 
 1125 const TLS_OUT_OF_INDEXES = cast(DWORD, &hffffffff)
 1126 
 1127 type _PROCESS_INFORMATION
 1128     hProcess as HANDLE
 1129     hThread as HANDLE
 1130     dwProcessId as DWORD
 1131     dwThreadId as DWORD
 1132 end type
 1133 
 1134 type PROCESS_INFORMATION as _PROCESS_INFORMATION
 1135 type PPROCESS_INFORMATION as _PROCESS_INFORMATION ptr
 1136 type LPPROCESS_INFORMATION as _PROCESS_INFORMATION ptr
 1137 
 1138 type _STARTUPINFOA
 1139     cb as DWORD
 1140     lpReserved as LPSTR
 1141     lpDesktop as LPSTR
 1142     lpTitle as LPSTR
 1143     dwX as DWORD
 1144     dwY as DWORD
 1145     dwXSize as DWORD
 1146     dwYSize as DWORD
 1147     dwXCountChars as DWORD
 1148     dwYCountChars as DWORD
 1149     dwFillAttribute as DWORD
 1150     dwFlags as DWORD
 1151     wShowWindow as WORD
 1152     cbReserved2 as WORD
 1153     lpReserved2 as LPBYTE
 1154     hStdInput as HANDLE
 1155     hStdOutput as HANDLE
 1156     hStdError as HANDLE
 1157 end type
 1158 
 1159 type STARTUPINFOA as _STARTUPINFOA
 1160 type LPSTARTUPINFOA as _STARTUPINFOA ptr
 1161 
 1162 type _STARTUPINFOW
 1163     cb as DWORD
 1164     lpReserved as LPWSTR
 1165     lpDesktop as LPWSTR
 1166     lpTitle as LPWSTR
 1167     dwX as DWORD
 1168     dwY as DWORD
 1169     dwXSize as DWORD
 1170     dwYSize as DWORD
 1171     dwXCountChars as DWORD
 1172     dwYCountChars as DWORD
 1173     dwFillAttribute as DWORD
 1174     dwFlags as DWORD
 1175     wShowWindow as WORD
 1176     cbReserved2 as WORD
 1177     lpReserved2 as LPBYTE
 1178     hStdInput as HANDLE
 1179     hStdOutput as HANDLE
 1180     hStdError as HANDLE
 1181 end type
 1182 
 1183 type STARTUPINFOW as _STARTUPINFOW
 1184 type LPSTARTUPINFOW as _STARTUPINFOW ptr
 1185 
 1186 #ifdef UNICODE
 1187     type STARTUPINFO as STARTUPINFOW
 1188     type LPSTARTUPINFO as LPSTARTUPINFOW
 1189 #else
 1190     type STARTUPINFO as STARTUPINFOA
 1191     type LPSTARTUPINFO as LPSTARTUPINFOA
 1192 #endif
 1193 
 1194 type PPROC_THREAD_ATTRIBUTE_LIST as _PROC_THREAD_ATTRIBUTE_LIST ptr
 1195 type LPPROC_THREAD_ATTRIBUTE_LIST as _PROC_THREAD_ATTRIBUTE_LIST ptr
 1196 declare function QueueUserAPC(byval pfnAPC as PAPCFUNC, byval hThread as HANDLE, byval dwData as ULONG_PTR) as DWORD
 1197 declare function GetProcessTimes(byval hProcess as HANDLE, byval lpCreationTime as LPFILETIME, byval lpExitTime as LPFILETIME, byval lpKernelTime as LPFILETIME, byval lpUserTime as LPFILETIME) as WINBOOL
 1198 declare sub ExitProcess(byval uExitCode as UINT)
 1199 declare function TerminateProcess(byval hProcess as HANDLE, byval uExitCode as UINT) as WINBOOL
 1200 declare function GetExitCodeProcess(byval hProcess as HANDLE, byval lpExitCode as LPDWORD) as WINBOOL
 1201 declare function SwitchToThread() as WINBOOL
 1202 declare function CreateRemoteThread(byval hProcess as HANDLE, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval dwStackSize as SIZE_T_, byval lpStartAddress as LPTHREAD_START_ROUTINE, byval lpParameter as LPVOID, byval dwCreationFlags as DWORD, byval lpThreadId as LPDWORD) as HANDLE
 1203 declare function OpenThread(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval dwThreadId as DWORD) as HANDLE
 1204 declare function SetThreadPriorityBoost(byval hThread as HANDLE, byval bDisablePriorityBoost as WINBOOL) as WINBOOL
 1205 declare function GetThreadPriorityBoost(byval hThread as HANDLE, byval pDisablePriorityBoost as PBOOL) as WINBOOL
 1206 declare function TerminateThread(byval hThread as HANDLE, byval dwExitCode as DWORD) as WINBOOL
 1207 declare function SetProcessShutdownParameters(byval dwLevel as DWORD, byval dwFlags as DWORD) as WINBOOL
 1208 declare function GetProcessVersion(byval ProcessId as DWORD) as DWORD
 1209 declare sub GetStartupInfoW(byval lpStartupInfo as LPSTARTUPINFOW)
 1210 declare function SetThreadToken(byval Thread as PHANDLE, byval Token as HANDLE) as WINBOOL
 1211 declare function OpenProcessToken(byval ProcessHandle as HANDLE, byval DesiredAccess as DWORD, byval TokenHandle as PHANDLE) as WINBOOL
 1212 declare function OpenThreadToken(byval ThreadHandle as HANDLE, byval DesiredAccess as DWORD, byval OpenAsSelf as WINBOOL, byval TokenHandle as PHANDLE) as WINBOOL
 1213 declare function SetPriorityClass(byval hProcess as HANDLE, byval dwPriorityClass as DWORD) as WINBOOL
 1214 declare function SetThreadStackGuarantee(byval StackSizeInBytes as PULONG) as WINBOOL
 1215 declare function GetPriorityClass(byval hProcess as HANDLE) as DWORD
 1216 declare function ProcessIdToSessionId(byval dwProcessId as DWORD, byval pSessionId as DWORD ptr) as WINBOOL
 1217 declare function GetProcessId(byval Process as HANDLE) as DWORD
 1218 declare function GetThreadId(byval Thread as HANDLE) as DWORD
 1219 declare function CreateRemoteThreadEx(byval hProcess as HANDLE, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval dwStackSize as SIZE_T_, byval lpStartAddress as LPTHREAD_START_ROUTINE, byval lpParameter as LPVOID, byval dwCreationFlags as DWORD, byval lpAttributeList as LPPROC_THREAD_ATTRIBUTE_LIST, byval lpThreadId as LPDWORD) as HANDLE
 1220 declare function GetThreadContext(byval hThread as HANDLE, byval lpContext as LPCONTEXT) as WINBOOL
 1221 declare function SetThreadContext(byval hThread as HANDLE, byval lpContext as const CONTEXT ptr) as WINBOOL
 1222 declare function FlushInstructionCache(byval hProcess as HANDLE, byval lpBaseAddress as LPCVOID, byval dwSize as SIZE_T_) as WINBOOL
 1223 declare function GetThreadTimes(byval hThread as HANDLE, byval lpCreationTime as LPFILETIME, byval lpExitTime as LPFILETIME, byval lpKernelTime as LPFILETIME, byval lpUserTime as LPFILETIME) as WINBOOL
 1224 declare function OpenProcess(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval dwProcessId as DWORD) as HANDLE
 1225 declare function GetProcessHandleCount(byval hProcess as HANDLE, byval pdwHandleCount as PDWORD) as WINBOOL
 1226 declare function GetCurrentProcessorNumber() as DWORD
 1227 
 1228 #ifdef UNICODE
 1229     declare sub GetStartupInfo alias "GetStartupInfoW"(byval lpStartupInfo as LPSTARTUPINFOW)
 1230 #endif
 1231 
 1232 declare function CreateProcessA(byval lpApplicationName as LPCSTR, byval lpCommandLine as LPSTR, byval lpProcessAttributes as LPSECURITY_ATTRIBUTES, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval bInheritHandles as WINBOOL, byval dwCreationFlags as DWORD, byval lpEnvironment as LPVOID, byval lpCurrentDirectory as LPCSTR, byval lpStartupInfo as LPSTARTUPINFOA, byval lpProcessInformation as LPPROCESS_INFORMATION) as WINBOOL
 1233 declare function CreateProcessW(byval lpApplicationName as LPCWSTR, byval lpCommandLine as LPWSTR, byval lpProcessAttributes as LPSECURITY_ATTRIBUTES, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval bInheritHandles as WINBOOL, byval dwCreationFlags as DWORD, byval lpEnvironment as LPVOID, byval lpCurrentDirectory as LPCWSTR, byval lpStartupInfo as LPSTARTUPINFOW, byval lpProcessInformation as LPPROCESS_INFORMATION) as WINBOOL
 1234 
 1235 #ifdef UNICODE
 1236     declare function CreateProcess alias "CreateProcessW"(byval lpApplicationName as LPCWSTR, byval lpCommandLine as LPWSTR, byval lpProcessAttributes as LPSECURITY_ATTRIBUTES, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval bInheritHandles as WINBOOL, byval dwCreationFlags as DWORD, byval lpEnvironment as LPVOID, byval lpCurrentDirectory as LPCWSTR, byval lpStartupInfo as LPSTARTUPINFOW, byval lpProcessInformation as LPPROCESS_INFORMATION) as WINBOOL
 1237 #else
 1238     declare function CreateProcess alias "CreateProcessA"(byval lpApplicationName as LPCSTR, byval lpCommandLine as LPSTR, byval lpProcessAttributes as LPSECURITY_ATTRIBUTES, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval bInheritHandles as WINBOOL, byval dwCreationFlags as DWORD, byval lpEnvironment as LPVOID, byval lpCurrentDirectory as LPCSTR, byval lpStartupInfo as LPSTARTUPINFOA, byval lpProcessInformation as LPPROCESS_INFORMATION) as WINBOOL
 1239 #endif
 1240 
 1241 declare function CreateProcessAsUserW(byval hToken as HANDLE, byval lpApplicationName as LPCWSTR, byval lpCommandLine as LPWSTR, byval lpProcessAttributes as LPSECURITY_ATTRIBUTES, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval bInheritHandles as WINBOOL, byval dwCreationFlags as DWORD, byval lpEnvironment as LPVOID, byval lpCurrentDirectory as LPCWSTR, byval lpStartupInfo as LPSTARTUPINFOW, byval lpProcessInformation as LPPROCESS_INFORMATION) as WINBOOL
 1242 
 1243 #ifdef UNICODE
 1244     declare function CreateProcessAsUser alias "CreateProcessAsUserW"(byval hToken as HANDLE, byval lpApplicationName as LPCWSTR, byval lpCommandLine as LPWSTR, byval lpProcessAttributes as LPSECURITY_ATTRIBUTES, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval bInheritHandles as WINBOOL, byval dwCreationFlags as DWORD, byval lpEnvironment as LPVOID, byval lpCurrentDirectory as LPCWSTR, byval lpStartupInfo as LPSTARTUPINFOW, byval lpProcessInformation as LPPROCESS_INFORMATION) as WINBOOL
 1245 #endif
 1246 
 1247 #if _WIN32_WINNT >= &h0600
 1248     const PROCESS_AFFINITY_ENABLE_AUTO_UPDATE = &h1u
 1249     const PROC_THREAD_ATTRIBUTE_REPLACE_VALUE = &h00000001
 1250     declare function GetProcessIdOfThread(byval Thread as HANDLE) as DWORD
 1251     declare function InitializeProcThreadAttributeList(byval lpAttributeList as LPPROC_THREAD_ATTRIBUTE_LIST, byval dwAttributeCount as DWORD, byval dwFlags as DWORD, byval lpSize as PSIZE_T) as WINBOOL
 1252     declare sub DeleteProcThreadAttributeList(byval lpAttributeList as LPPROC_THREAD_ATTRIBUTE_LIST)
 1253     declare function SetProcessAffinityUpdateMode(byval hProcess as HANDLE, byval dwFlags as DWORD) as WINBOOL
 1254     declare function QueryProcessAffinityUpdateMode(byval hProcess as HANDLE, byval lpdwFlags as LPDWORD) as WINBOOL
 1255     declare function UpdateProcThreadAttribute(byval lpAttributeList as LPPROC_THREAD_ATTRIBUTE_LIST, byval dwFlags as DWORD, byval Attribute as DWORD_PTR, byval lpValue as PVOID, byval cbSize as SIZE_T_, byval lpPreviousValue as PVOID, byval lpReturnSize as PSIZE_T) as WINBOOL
 1256 #endif
 1257 
 1258 #if _WIN32_WINNT >= &h0601
 1259     declare function GetThreadIdealProcessorEx(byval hThread as HANDLE, byval lpIdealProcessor as PPROCESSOR_NUMBER) as WINBOOL
 1260     declare sub GetCurrentProcessorNumberEx(byval ProcNumber as PPROCESSOR_NUMBER)
 1261 #endif
 1262 
 1263 #if _WIN32_WINNT = &h0602
 1264     declare sub GetCurrentThreadStackLimits(byval LowLimit as PULONG_PTR, byval HighLimit as PULONG_PTR)
 1265     declare function SetProcessMitigationPolicy(byval MitigationPolicy as PROCESS_MITIGATION_POLICY, byval lpBuffer as PVOID, byval dwLength as SIZE_T_) as WINBOOL
 1266     declare function GetProcessMitigationPolicy(byval hProcess as HANDLE, byval MitigationPolicy as PROCESS_MITIGATION_POLICY, byval lpBuffer as PVOID, byval dwLength as SIZE_T_) as WINBOOL
 1267 #endif
 1268 
 1269 declare function GetCurrentProcess() as HANDLE
 1270 declare function GetCurrentProcessId() as DWORD
 1271 declare function GetCurrentThread() as HANDLE
 1272 declare function GetCurrentThreadId() as DWORD
 1273 declare function IsProcessorFeaturePresent(byval ProcessorFeature as DWORD) as WINBOOL
 1274 
 1275 #if _WIN32_WINNT >= &h0600
 1276     declare sub FlushProcessWriteBuffers()
 1277 #endif
 1278 
 1279 declare function CreateThread(byval lpThreadAttributes as LPSECURITY_ATTRIBUTES, byval dwStackSize as SIZE_T_, byval lpStartAddress as LPTHREAD_START_ROUTINE, byval lpParameter as LPVOID, byval dwCreationFlags as DWORD, byval lpThreadId as LPDWORD) as HANDLE
 1280 declare function SetThreadPriority(byval hThread as HANDLE, byval nPriority as long) as WINBOOL
 1281 declare function GetThreadPriority(byval hThread as HANDLE) as long
 1282 declare sub ExitThread(byval dwExitCode as DWORD)
 1283 declare function GetExitCodeThread(byval hThread as HANDLE, byval lpExitCode as LPDWORD) as WINBOOL
 1284 declare function SuspendThread(byval hThread as HANDLE) as DWORD
 1285 declare function ResumeThread(byval hThread as HANDLE) as DWORD
 1286 declare function TlsAlloc() as DWORD
 1287 declare function TlsGetValue(byval dwTlsIndex as DWORD) as LPVOID
 1288 declare function TlsSetValue(byval dwTlsIndex as DWORD, byval lpTlsValue as LPVOID) as WINBOOL
 1289 declare function TlsFree(byval dwTlsIndex as DWORD) as WINBOOL
 1290 
 1291 #if _WIN32_WINNT >= &h0601
 1292     declare function SetThreadIdealProcessorEx(byval hThread as HANDLE, byval lpIdealProcessor as PPROCESSOR_NUMBER, byval lpPreviousIdealProcessor as PPROCESSOR_NUMBER) as WINBOOL
 1293 #endif
 1294 
 1295 #define _PROCESSTOPOLOGYAPI_H_
 1296 
 1297 #if _WIN32_WINNT >= &h0601
 1298     declare function GetProcessGroupAffinity(byval hProcess as HANDLE, byval GroupCount as PUSHORT, byval GroupArray as PUSHORT) as WINBOOL
 1299     declare function SetProcessGroupAffinity(byval hProcess as HANDLE, byval GroupAffinity as const GROUP_AFFINITY ptr, byval PreviousGroupAffinity as PGROUP_AFFINITY) as WINBOOL
 1300     declare function GetThreadGroupAffinity(byval hThread as HANDLE, byval GroupAffinity as PGROUP_AFFINITY) as WINBOOL
 1301     declare function SetThreadGroupAffinity(byval hThread as HANDLE, byval GroupAffinity as const GROUP_AFFINITY ptr, byval PreviousGroupAffinity as PGROUP_AFFINITY) as WINBOOL
 1302 #endif
 1303 
 1304 #define _PROFILEAPI_H_
 1305 declare function QueryPerformanceCounter(byval lpPerformanceCount as LARGE_INTEGER ptr) as WINBOOL
 1306 declare function QueryPerformanceFrequency(byval lpFrequency as LARGE_INTEGER ptr) as WINBOOL
 1307 #define _APISETREALTIME_
 1308 
 1309 #if _WIN32_WINNT >= &h0600
 1310     declare function QueryThreadCycleTime(byval ThreadHandle as HANDLE, byval CycleTime as PULONG64) as WINBOOL
 1311     declare function QueryProcessCycleTime(byval ProcessHandle as HANDLE, byval CycleTime as PULONG64) as WINBOOL
 1312     declare function QueryIdleProcessorCycleTime(byval BufferLength as PULONG, byval ProcessorIdleCycleTime as PULONG64) as WINBOOL
 1313 #endif
 1314 
 1315 #if _WIN32_WINNT >= &h0601
 1316     declare function QueryIdleProcessorCycleTimeEx(byval Group as USHORT, byval BufferLength as PULONG, byval ProcessorIdleCycleTime as PULONG64) as WINBOOL
 1317     declare function QueryUnbiasedInterruptTime(byval UnbiasedTime as PULONGLONG) as WINBOOL
 1318 #endif
 1319 
 1320 #define _APIAPPCONTAINER_
 1321 
 1322 #if _WIN32_WINNT = &h0602
 1323     declare function GetAppContainerNamedObjectPath cdecl(byval Token as HANDLE, byval AppContainerSid as PSID, byval ObjectPathLength as ULONG, byval ObjectPath as LPWSTR, byval ReturnLength as PULONG) as WINBOOL
 1324 #endif
 1325 
 1326 #define _APISECUREBASE_
 1327 declare function AccessCheck(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval ClientToken as HANDLE, byval DesiredAccess as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval PrivilegeSet as PPRIVILEGE_SET, byval PrivilegeSetLength as LPDWORD, byval GrantedAccess as LPDWORD, byval AccessStatus as LPBOOL) as WINBOOL
 1328 declare function AccessCheckAndAuditAlarmW(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ObjectTypeName as LPWSTR, byval ObjectName as LPWSTR, byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval DesiredAccess as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval ObjectCreation as WINBOOL, byval GrantedAccess as LPDWORD, byval AccessStatus as LPBOOL, byval pfGenerateOnClose as LPBOOL) as WINBOOL
 1329 
 1330 #ifdef UNICODE
 1331     declare function AccessCheckAndAuditAlarm alias "AccessCheckAndAuditAlarmW"(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ObjectTypeName as LPWSTR, byval ObjectName as LPWSTR, byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval DesiredAccess as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval ObjectCreation as WINBOOL, byval GrantedAccess as LPDWORD, byval AccessStatus as LPBOOL, byval pfGenerateOnClose as LPBOOL) as WINBOOL
 1332 #endif
 1333 
 1334 declare function AccessCheckByType(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval PrincipalSelfSid as PSID, byval ClientToken as HANDLE, byval DesiredAccess as DWORD, byval ObjectTypeList as POBJECT_TYPE_LIST, byval ObjectTypeListLength as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval PrivilegeSet as PPRIVILEGE_SET, byval PrivilegeSetLength as LPDWORD, byval GrantedAccess as LPDWORD, byval AccessStatus as LPBOOL) as WINBOOL
 1335 declare function AccessCheckByTypeResultList(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval PrincipalSelfSid as PSID, byval ClientToken as HANDLE, byval DesiredAccess as DWORD, byval ObjectTypeList as POBJECT_TYPE_LIST, byval ObjectTypeListLength as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval PrivilegeSet as PPRIVILEGE_SET, byval PrivilegeSetLength as LPDWORD, byval GrantedAccessList as LPDWORD, byval AccessStatusList as LPDWORD) as WINBOOL
 1336 declare function AccessCheckByTypeAndAuditAlarmW(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ObjectTypeName as LPCWSTR, byval ObjectName as LPCWSTR, byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval PrincipalSelfSid as PSID, byval DesiredAccess as DWORD, byval AuditType as AUDIT_EVENT_TYPE, byval Flags as DWORD, byval ObjectTypeList as POBJECT_TYPE_LIST, byval ObjectTypeListLength as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval ObjectCreation as WINBOOL, byval GrantedAccess as LPDWORD, byval AccessStatus as LPBOOL, byval pfGenerateOnClose as LPBOOL) as WINBOOL
 1337 
 1338 #ifdef UNICODE
 1339     declare function AccessCheckByTypeAndAuditAlarm alias "AccessCheckByTypeAndAuditAlarmW"(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ObjectTypeName as LPCWSTR, byval ObjectName as LPCWSTR, byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval PrincipalSelfSid as PSID, byval DesiredAccess as DWORD, byval AuditType as AUDIT_EVENT_TYPE, byval Flags as DWORD, byval ObjectTypeList as POBJECT_TYPE_LIST, byval ObjectTypeListLength as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval ObjectCreation as WINBOOL, byval GrantedAccess as LPDWORD, byval AccessStatus as LPBOOL, byval pfGenerateOnClose as LPBOOL) as WINBOOL
 1340 #endif
 1341 
 1342 declare function AccessCheckByTypeResultListAndAuditAlarmW(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ObjectTypeName as LPCWSTR, byval ObjectName as LPCWSTR, byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval PrincipalSelfSid as PSID, byval DesiredAccess as DWORD, byval AuditType as AUDIT_EVENT_TYPE, byval Flags as DWORD, byval ObjectTypeList as POBJECT_TYPE_LIST, byval ObjectTypeListLength as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval ObjectCreation as WINBOOL, byval GrantedAccessList as LPDWORD, byval AccessStatusList as LPDWORD, byval pfGenerateOnClose as LPBOOL) as WINBOOL
 1343 
 1344 #ifdef UNICODE
 1345     declare function AccessCheckByTypeResultListAndAuditAlarm alias "AccessCheckByTypeResultListAndAuditAlarmW"(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ObjectTypeName as LPCWSTR, byval ObjectName as LPCWSTR, byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval PrincipalSelfSid as PSID, byval DesiredAccess as DWORD, byval AuditType as AUDIT_EVENT_TYPE, byval Flags as DWORD, byval ObjectTypeList as POBJECT_TYPE_LIST, byval ObjectTypeListLength as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval ObjectCreation as WINBOOL, byval GrantedAccessList as LPDWORD, byval AccessStatusList as LPDWORD, byval pfGenerateOnClose as LPBOOL) as WINBOOL
 1346 #endif
 1347 
 1348 declare function AccessCheckByTypeResultListAndAuditAlarmByHandleW(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ClientToken as HANDLE, byval ObjectTypeName as LPCWSTR, byval ObjectName as LPCWSTR, byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval PrincipalSelfSid as PSID, byval DesiredAccess as DWORD, byval AuditType as AUDIT_EVENT_TYPE, byval Flags as DWORD, byval ObjectTypeList as POBJECT_TYPE_LIST, byval ObjectTypeListLength as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval ObjectCreation as WINBOOL, byval GrantedAccessList as LPDWORD, byval AccessStatusList as LPDWORD, byval pfGenerateOnClose as LPBOOL) as WINBOOL
 1349 
 1350 #ifdef UNICODE
 1351     declare function AccessCheckByTypeResultListAndAuditAlarmByHandle alias "AccessCheckByTypeResultListAndAuditAlarmByHandleW"(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ClientToken as HANDLE, byval ObjectTypeName as LPCWSTR, byval ObjectName as LPCWSTR, byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval PrincipalSelfSid as PSID, byval DesiredAccess as DWORD, byval AuditType as AUDIT_EVENT_TYPE, byval Flags as DWORD, byval ObjectTypeList as POBJECT_TYPE_LIST, byval ObjectTypeListLength as DWORD, byval GenericMapping as PGENERIC_MAPPING, byval ObjectCreation as WINBOOL, byval GrantedAccessList as LPDWORD, byval AccessStatusList as LPDWORD, byval pfGenerateOnClose as LPBOOL) as WINBOOL
 1352 #endif
 1353 
 1354 declare function AddAccessAllowedAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AccessMask as DWORD, byval pSid as PSID) as WINBOOL
 1355 declare function AddAccessAllowedAceEx(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval AccessMask as DWORD, byval pSid as PSID) as WINBOOL
 1356 declare function AddAccessAllowedObjectAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval AccessMask as DWORD, byval ObjectTypeGuid as GUID ptr, byval InheritedObjectTypeGuid as GUID ptr, byval pSid as PSID) as WINBOOL
 1357 declare function AddAccessDeniedAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AccessMask as DWORD, byval pSid as PSID) as WINBOOL
 1358 declare function AddAccessDeniedAceEx(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval AccessMask as DWORD, byval pSid as PSID) as WINBOOL
 1359 declare function AddAccessDeniedObjectAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval AccessMask as DWORD, byval ObjectTypeGuid as GUID ptr, byval InheritedObjectTypeGuid as GUID ptr, byval pSid as PSID) as WINBOOL
 1360 declare function AddAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval dwStartingAceIndex as DWORD, byval pAceList as LPVOID, byval nAceListLength as DWORD) as WINBOOL
 1361 declare function AddAuditAccessAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval dwAccessMask as DWORD, byval pSid as PSID, byval bAuditSuccess as WINBOOL, byval bAuditFailure as WINBOOL) as WINBOOL
 1362 declare function AddAuditAccessAceEx(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval dwAccessMask as DWORD, byval pSid as PSID, byval bAuditSuccess as WINBOOL, byval bAuditFailure as WINBOOL) as WINBOOL
 1363 declare function AddAuditAccessObjectAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval AccessMask as DWORD, byval ObjectTypeGuid as GUID ptr, byval InheritedObjectTypeGuid as GUID ptr, byval pSid as PSID, byval bAuditSuccess as WINBOOL, byval bAuditFailure as WINBOOL) as WINBOOL
 1364 
 1365 #if _WIN32_WINNT >= &h0600
 1366     declare function AddMandatoryAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval MandatoryPolicy as DWORD, byval pLabelSid as PSID) as WINBOOL
 1367 #endif
 1368 
 1369 #if _WIN32_WINNT = &h0602
 1370     declare function AddResourceAttributeAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval AccessMask as DWORD, byval pSid as PSID, byval pAttributeInfo as PCLAIM_SECURITY_ATTRIBUTES_INFORMATION, byval pReturnLength as PDWORD) as WINBOOL
 1371     declare function AddScopedPolicyIDAce(byval pAcl as PACL, byval dwAceRevision as DWORD, byval AceFlags as DWORD, byval AccessMask as DWORD, byval pSid as PSID) as WINBOOL
 1372 #endif
 1373 
 1374 declare function AdjustTokenGroups(byval TokenHandle as HANDLE, byval ResetToDefault as WINBOOL, byval NewState as PTOKEN_GROUPS, byval BufferLength as DWORD, byval PreviousState as PTOKEN_GROUPS, byval ReturnLength as PDWORD) as WINBOOL
 1375 declare function AdjustTokenPrivileges(byval TokenHandle as HANDLE, byval DisableAllPrivileges as WINBOOL, byval NewState as PTOKEN_PRIVILEGES, byval BufferLength as DWORD, byval PreviousState as PTOKEN_PRIVILEGES, byval ReturnLength as PDWORD) as WINBOOL
 1376 declare function AllocateAndInitializeSid(byval pIdentifierAuthority as PSID_IDENTIFIER_AUTHORITY, byval nSubAuthorityCount as UBYTE, byval nSubAuthority0 as DWORD, byval nSubAuthority1 as DWORD, byval nSubAuthority2 as DWORD, byval nSubAuthority3 as DWORD, byval nSubAuthority4 as DWORD, byval nSubAuthority5 as DWORD, byval nSubAuthority6 as DWORD, byval nSubAuthority7 as DWORD, byval pSid as PSID ptr) as WINBOOL
 1377 declare function AllocateLocallyUniqueId(byval Luid as PLUID) as WINBOOL
 1378 declare function AreAllAccessesGranted(byval GrantedAccess as DWORD, byval DesiredAccess as DWORD) as WINBOOL
 1379 declare function AreAnyAccessesGranted(byval GrantedAccess as DWORD, byval DesiredAccess as DWORD) as WINBOOL
 1380 declare function CheckTokenMembership(byval TokenHandle as HANDLE, byval SidToCheck as PSID, byval IsMember as PBOOL) as WINBOOL
 1381 
 1382 #if _WIN32_WINNT = &h0602
 1383     declare function CheckTokenCapability(byval TokenHandle as HANDLE, byval CapabilitySidToCheck as PSID, byval HasCapability as PBOOL) as WINBOOL
 1384     declare function GetAppContainerAce(byval Acl as PACL, byval StartingAceIndex as DWORD, byval AppContainerAce as PVOID ptr, byval AppContainerAceIndex as DWORD ptr) as WINBOOL
 1385     declare function CheckTokenMembershipEx(byval TokenHandle as HANDLE, byval SidToCheck as PSID, byval Flags as DWORD, byval IsMember as PBOOL) as WINBOOL
 1386 #endif
 1387 
 1388 declare function ConvertToAutoInheritPrivateObjectSecurity(byval ParentDescriptor as PSECURITY_DESCRIPTOR, byval CurrentSecurityDescriptor as PSECURITY_DESCRIPTOR, byval NewSecurityDescriptor as PSECURITY_DESCRIPTOR ptr, byval ObjectType as GUID ptr, byval IsDirectoryObject as WINBOOLEAN, byval GenericMapping as PGENERIC_MAPPING) as WINBOOL
 1389 declare function CopySid(byval nDestinationSidLength as DWORD, byval pDestinationSid as PSID, byval pSourceSid as PSID) as WINBOOL
 1390 declare function CreatePrivateObjectSecurity(byval ParentDescriptor as PSECURITY_DESCRIPTOR, byval CreatorDescriptor as PSECURITY_DESCRIPTOR, byval NewDescriptor as PSECURITY_DESCRIPTOR ptr, byval IsDirectoryObject as WINBOOL, byval Token as HANDLE, byval GenericMapping as PGENERIC_MAPPING) as WINBOOL
 1391 declare function CreatePrivateObjectSecurityEx(byval ParentDescriptor as PSECURITY_DESCRIPTOR, byval CreatorDescriptor as PSECURITY_DESCRIPTOR, byval NewDescriptor as PSECURITY_DESCRIPTOR ptr, byval ObjectType as GUID ptr, byval IsContainerObject as WINBOOL, byval AutoInheritFlags as ULONG, byval Token as HANDLE, byval GenericMapping as PGENERIC_MAPPING) as WINBOOL
 1392 declare function CreatePrivateObjectSecurityWithMultipleInheritance(byval ParentDescriptor as PSECURITY_DESCRIPTOR, byval CreatorDescriptor as PSECURITY_DESCRIPTOR, byval NewDescriptor as PSECURITY_DESCRIPTOR ptr, byval ObjectTypes as GUID ptr ptr, byval GuidCount as ULONG, byval IsContainerObject as WINBOOL, byval AutoInheritFlags as ULONG, byval Token as HANDLE, byval GenericMapping as PGENERIC_MAPPING) as WINBOOL
 1393 declare function CreateRestrictedToken(byval ExistingTokenHandle as HANDLE, byval Flags as DWORD, byval DisableSidCount as DWORD, byval SidsToDisable as PSID_AND_ATTRIBUTES, byval DeletePrivilegeCount as DWORD, byval PrivilegesToDelete as PLUID_AND_ATTRIBUTES, byval RestrictedSidCount as DWORD, byval SidsToRestrict as PSID_AND_ATTRIBUTES, byval NewTokenHandle as PHANDLE) as WINBOOL
 1394 declare function CreateWellKnownSid(byval WellKnownSidType as WELL_KNOWN_SID_TYPE, byval DomainSid as PSID, byval pSid as PSID, byval cbSid as DWORD ptr) as WINBOOL
 1395 declare function EqualDomainSid(byval pSid1 as PSID, byval pSid2 as PSID, byval pfEqual as WINBOOL ptr) as WINBOOL
 1396 declare function DeleteAce(byval pAcl as PACL, byval dwAceIndex as DWORD) as WINBOOL
 1397 declare function DestroyPrivateObjectSecurity(byval ObjectDescriptor as PSECURITY_DESCRIPTOR ptr) as WINBOOL
 1398 declare function DuplicateToken(byval ExistingTokenHandle as HANDLE, byval ImpersonationLevel as SECURITY_IMPERSONATION_LEVEL, byval DuplicateTokenHandle as PHANDLE) as WINBOOL
 1399 declare function DuplicateTokenEx(byval hExistingToken as HANDLE, byval dwDesiredAccess as DWORD, byval lpTokenAttributes as LPSECURITY_ATTRIBUTES, byval ImpersonationLevel as SECURITY_IMPERSONATION_LEVEL, byval TokenType as TOKEN_TYPE, byval phNewToken as PHANDLE) as WINBOOL
 1400 declare function EqualPrefixSid(byval pSid1 as PSID, byval pSid2 as PSID) as WINBOOL
 1401 declare function EqualSid(byval pSid1 as PSID, byval pSid2 as PSID) as WINBOOL
 1402 declare function FindFirstFreeAce(byval pAcl as PACL, byval pAce as LPVOID ptr) as WINBOOL
 1403 declare function FreeSid(byval pSid as PSID) as PVOID
 1404 declare function GetAce(byval pAcl as PACL, byval dwAceIndex as DWORD, byval pAce as LPVOID ptr) as WINBOOL
 1405 declare function GetAclInformation(byval pAcl as PACL, byval pAclInformation as LPVOID, byval nAclInformationLength as DWORD, byval dwAclInformationClass as ACL_INFORMATION_CLASS) as WINBOOL
 1406 declare function GetFileSecurityW(byval lpFileName as LPCWSTR, byval RequestedInformation as SECURITY_INFORMATION, byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval nLength as DWORD, byval lpnLengthNeeded as LPDWORD) as WINBOOL
 1407 
 1408 #ifdef UNICODE
 1409     declare function GetFileSecurity alias "GetFileSecurityW"(byval lpFileName as LPCWSTR, byval RequestedInformation as SECURITY_INFORMATION, byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval nLength as DWORD, byval lpnLengthNeeded as LPDWORD) as WINBOOL
 1410 #endif
 1411 
 1412 declare function GetKernelObjectSecurity(byval Handle as HANDLE, byval RequestedInformation as SECURITY_INFORMATION, byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval nLength as DWORD, byval lpnLengthNeeded as LPDWORD) as WINBOOL
 1413 declare function GetLengthSid(byval pSid as PSID) as DWORD
 1414 declare function GetPrivateObjectSecurity(byval ObjectDescriptor as PSECURITY_DESCRIPTOR, byval SecurityInformation as SECURITY_INFORMATION, byval ResultantDescriptor as PSECURITY_DESCRIPTOR, byval DescriptorLength as DWORD, byval ReturnLength as PDWORD) as WINBOOL
 1415 declare function GetSecurityDescriptorControl(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval pControl as PSECURITY_DESCRIPTOR_CONTROL, byval lpdwRevision as LPDWORD) as WINBOOL
 1416 declare function GetSecurityDescriptorDacl(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval lpbDaclPresent as LPBOOL, byval pDacl as PACL ptr, byval lpbDaclDefaulted as LPBOOL) as WINBOOL
 1417 declare function GetSecurityDescriptorGroup(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval pGroup as PSID ptr, byval lpbGroupDefaulted as LPBOOL) as WINBOOL
 1418 declare function GetSecurityDescriptorLength(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR) as DWORD
 1419 declare function GetSecurityDescriptorOwner(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval pOwner as PSID ptr, byval lpbOwnerDefaulted as LPBOOL) as WINBOOL
 1420 declare function GetSecurityDescriptorRMControl(byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval RMControl as PUCHAR) as DWORD
 1421 declare function GetSecurityDescriptorSacl(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval lpbSaclPresent as LPBOOL, byval pSacl as PACL ptr, byval lpbSaclDefaulted as LPBOOL) as WINBOOL
 1422 declare function GetSidIdentifierAuthority(byval pSid as PSID) as PSID_IDENTIFIER_AUTHORITY
 1423 declare function GetSidLengthRequired(byval nSubAuthorityCount as UCHAR) as DWORD
 1424 declare function GetSidSubAuthority(byval pSid as PSID, byval nSubAuthority as DWORD) as PDWORD
 1425 declare function GetSidSubAuthorityCount(byval pSid as PSID) as PUCHAR
 1426 declare function GetTokenInformation(byval TokenHandle as HANDLE, byval TokenInformationClass as TOKEN_INFORMATION_CLASS, byval TokenInformation as LPVOID, byval TokenInformationLength as DWORD, byval ReturnLength as PDWORD) as WINBOOL
 1427 declare function GetWindowsAccountDomainSid(byval pSid as PSID, byval pDomainSid as PSID, byval cbDomainSid as DWORD ptr) as WINBOOL
 1428 declare function ImpersonateAnonymousToken(byval ThreadHandle as HANDLE) as WINBOOL
 1429 declare function ImpersonateLoggedOnUser(byval hToken as HANDLE) as WINBOOL
 1430 declare function ImpersonateSelf(byval ImpersonationLevel as SECURITY_IMPERSONATION_LEVEL) as WINBOOL
 1431 declare function InitializeAcl(byval pAcl as PACL, byval nAclLength as DWORD, byval dwAclRevision as DWORD) as WINBOOL
 1432 declare function InitializeSecurityDescriptor(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval dwRevision as DWORD) as WINBOOL
 1433 declare function InitializeSid(byval Sid as PSID, byval pIdentifierAuthority as PSID_IDENTIFIER_AUTHORITY, byval nSubAuthorityCount as UBYTE) as WINBOOL
 1434 declare function IsTokenRestricted(byval TokenHandle as HANDLE) as WINBOOL
 1435 declare function IsValidAcl(byval pAcl as PACL) as WINBOOL
 1436 declare function IsValidSecurityDescriptor(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR) as WINBOOL
 1437 declare function IsValidSid(byval pSid as PSID) as WINBOOL
 1438 declare function IsWellKnownSid(byval pSid as PSID, byval WellKnownSidType as WELL_KNOWN_SID_TYPE) as WINBOOL
 1439 declare function MakeAbsoluteSD(byval pSelfRelativeSecurityDescriptor as PSECURITY_DESCRIPTOR, byval pAbsoluteSecurityDescriptor as PSECURITY_DESCRIPTOR, byval lpdwAbsoluteSecurityDescriptorSize as LPDWORD, byval pDacl as PACL, byval lpdwDaclSize as LPDWORD, byval pSacl as PACL, byval lpdwSaclSize as LPDWORD, byval pOwner as PSID, byval lpdwOwnerSize as LPDWORD, byval pPrimaryGroup as PSID, byval lpdwPrimaryGroupSize as LPDWORD) as WINBOOL
 1440 declare function MakeSelfRelativeSD(byval pAbsoluteSecurityDescriptor as PSECURITY_DESCRIPTOR, byval pSelfRelativeSecurityDescriptor as PSECURITY_DESCRIPTOR, byval lpdwBufferLength as LPDWORD) as WINBOOL
 1441 declare sub MapGenericMask(byval AccessMask as PDWORD, byval GenericMapping as PGENERIC_MAPPING)
 1442 declare function ObjectCloseAuditAlarmW(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval GenerateOnClose as WINBOOL) as WINBOOL
 1443 
 1444 #ifdef UNICODE
 1445     declare function ObjectCloseAuditAlarm alias "ObjectCloseAuditAlarmW"(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval GenerateOnClose as WINBOOL) as WINBOOL
 1446 #endif
 1447 
 1448 declare function ObjectDeleteAuditAlarmW(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval GenerateOnClose as WINBOOL) as WINBOOL
 1449 
 1450 #ifdef UNICODE
 1451     declare function ObjectDeleteAuditAlarm alias "ObjectDeleteAuditAlarmW"(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval GenerateOnClose as WINBOOL) as WINBOOL
 1452 #endif
 1453 
 1454 declare function ObjectOpenAuditAlarmW(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ObjectTypeName as LPWSTR, byval ObjectName as LPWSTR, byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval ClientToken as HANDLE, byval DesiredAccess as DWORD, byval GrantedAccess as DWORD, byval Privileges as PPRIVILEGE_SET, byval ObjectCreation as WINBOOL, byval AccessGranted as WINBOOL, byval GenerateOnClose as LPBOOL) as WINBOOL
 1455 
 1456 #ifdef UNICODE
 1457     declare function ObjectOpenAuditAlarm alias "ObjectOpenAuditAlarmW"(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ObjectTypeName as LPWSTR, byval ObjectName as LPWSTR, byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval ClientToken as HANDLE, byval DesiredAccess as DWORD, byval GrantedAccess as DWORD, byval Privileges as PPRIVILEGE_SET, byval ObjectCreation as WINBOOL, byval AccessGranted as WINBOOL, byval GenerateOnClose as LPBOOL) as WINBOOL
 1458 #endif
 1459 
 1460 declare function ObjectPrivilegeAuditAlarmW(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ClientToken as HANDLE, byval DesiredAccess as DWORD, byval Privileges as PPRIVILEGE_SET, byval AccessGranted as WINBOOL) as WINBOOL
 1461 
 1462 #ifdef UNICODE
 1463     declare function ObjectPrivilegeAuditAlarm alias "ObjectPrivilegeAuditAlarmW"(byval SubsystemName as LPCWSTR, byval HandleId as LPVOID, byval ClientToken as HANDLE, byval DesiredAccess as DWORD, byval Privileges as PPRIVILEGE_SET, byval AccessGranted as WINBOOL) as WINBOOL
 1464 #endif
 1465 
 1466 declare function PrivilegeCheck(byval ClientToken as HANDLE, byval RequiredPrivileges as PPRIVILEGE_SET, byval pfResult as LPBOOL) as WINBOOL
 1467 declare function PrivilegedServiceAuditAlarmW(byval SubsystemName as LPCWSTR, byval ServiceName as LPCWSTR, byval ClientToken as HANDLE, byval Privileges as PPRIVILEGE_SET, byval AccessGranted as WINBOOL) as WINBOOL
 1468 
 1469 #ifdef UNICODE
 1470     declare function PrivilegedServiceAuditAlarm alias "PrivilegedServiceAuditAlarmW"(byval SubsystemName as LPCWSTR, byval ServiceName as LPCWSTR, byval ClientToken as HANDLE, byval Privileges as PPRIVILEGE_SET, byval AccessGranted as WINBOOL) as WINBOOL
 1471 #endif
 1472 
 1473 #if _WIN32_WINNT >= &h0600
 1474     declare sub QuerySecurityAccessMask(byval SecurityInformation as SECURITY_INFORMATION, byval DesiredAccess as LPDWORD)
 1475 #endif
 1476 
 1477 declare function RevertToSelf() as WINBOOL
 1478 declare function SetAclInformation(byval pAcl as PACL, byval pAclInformation as LPVOID, byval nAclInformationLength as DWORD, byval dwAclInformationClass as ACL_INFORMATION_CLASS) as WINBOOL
 1479 declare function SetFileSecurityW(byval lpFileName as LPCWSTR, byval SecurityInformation as SECURITY_INFORMATION, byval pSecurityDescriptor as PSECURITY_DESCRIPTOR) as WINBOOL
 1480 
 1481 #ifdef UNICODE
 1482     declare function SetFileSecurity alias "SetFileSecurityW"(byval lpFileName as LPCWSTR, byval SecurityInformation as SECURITY_INFORMATION, byval pSecurityDescriptor as PSECURITY_DESCRIPTOR) as WINBOOL
 1483 #endif
 1484 
 1485 declare function SetKernelObjectSecurity(byval Handle as HANDLE, byval SecurityInformation as SECURITY_INFORMATION, byval SecurityDescriptor as PSECURITY_DESCRIPTOR) as WINBOOL
 1486 declare function SetPrivateObjectSecurity(byval SecurityInformation as SECURITY_INFORMATION, byval ModificationDescriptor as PSECURITY_DESCRIPTOR, byval ObjectsSecurityDescriptor as PSECURITY_DESCRIPTOR ptr, byval GenericMapping as PGENERIC_MAPPING, byval Token as HANDLE) as WINBOOL
 1487 declare function SetPrivateObjectSecurityEx(byval SecurityInformation as SECURITY_INFORMATION, byval ModificationDescriptor as PSECURITY_DESCRIPTOR, byval ObjectsSecurityDescriptor as PSECURITY_DESCRIPTOR ptr, byval AutoInheritFlags as ULONG, byval GenericMapping as PGENERIC_MAPPING, byval Token as HANDLE) as WINBOOL
 1488 
 1489 #if _WIN32_WINNT >= &h0600
 1490     declare sub SetSecurityAccessMask(byval SecurityInformation as SECURITY_INFORMATION, byval DesiredAccess as LPDWORD)
 1491 #endif
 1492 
 1493 declare function SetSecurityDescriptorControl(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval ControlBitsOfInterest as SECURITY_DESCRIPTOR_CONTROL, byval ControlBitsToSet as SECURITY_DESCRIPTOR_CONTROL) as WINBOOL
 1494 declare function SetSecurityDescriptorDacl(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval bDaclPresent as WINBOOL, byval pDacl as PACL, byval bDaclDefaulted as WINBOOL) as WINBOOL
 1495 declare function SetSecurityDescriptorGroup(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval pGroup as PSID, byval bGroupDefaulted as WINBOOL) as WINBOOL
 1496 declare function SetSecurityDescriptorOwner(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval pOwner as PSID, byval bOwnerDefaulted as WINBOOL) as WINBOOL
 1497 declare function SetSecurityDescriptorRMControl(byval SecurityDescriptor as PSECURITY_DESCRIPTOR, byval RMControl as PUCHAR) as DWORD
 1498 declare function SetSecurityDescriptorSacl(byval pSecurityDescriptor as PSECURITY_DESCRIPTOR, byval bSaclPresent as WINBOOL, byval pSacl as PACL, byval bSaclDefaulted as WINBOOL) as WINBOOL
 1499 declare function SetTokenInformation(byval TokenHandle as HANDLE, byval TokenInformationClass as TOKEN_INFORMATION_CLASS, byval TokenInformation as LPVOID, byval TokenInformationLength as DWORD) as WINBOOL
 1500 
 1501 #if _WIN32_WINNT = &h0602
 1502     declare function SetCachedSigningLevel(byval SourceFiles as PHANDLE, byval SourceFileCount as ULONG, byval Flags as ULONG, byval TargetFile as HANDLE) as WINBOOL
 1503     declare function GetCachedSigningLevel(byval File as HANDLE, byval Flags as PULONG, byval SigningLevel as PULONG, byval Thumbprint as PUCHAR, byval ThumbprintSize as PULONG, byval ThumbprintAlgorithm as PULONG) as WINBOOL
 1504 #endif
 1505 
 1506 #define _SYNCHAPI_H_
 1507 #define SRWLOCK_INIT RTL_SRWLOCK_INIT
 1508 #define INIT_ONCE_STATIC_INIT RTL_RUN_ONCE_INIT
 1509 const INIT_ONCE_CHECK_ONLY = RTL_RUN_ONCE_CHECK_ONLY
 1510 const INIT_ONCE_ASYNC = RTL_RUN_ONCE_ASYNC
 1511 const INIT_ONCE_INIT_FAILED = RTL_RUN_ONCE_INIT_FAILED
 1512 const INIT_ONCE_CTX_RESERVED_BITS = RTL_RUN_ONCE_CTX_RESERVED_BITS
 1513 #define CONDITION_VARIABLE_INIT RTL_CONDITION_VARIABLE_INIT
 1514 const CONDITION_VARIABLE_LOCKMODE_SHARED = RTL_CONDITION_VARIABLE_LOCKMODE_SHARED
 1515 const MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE
 1516 const MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS
 1517 
 1518 type SRWLOCK as RTL_SRWLOCK
 1519 type PSRWLOCK as RTL_SRWLOCK ptr
 1520 type INIT_ONCE as RTL_RUN_ONCE
 1521 type PINIT_ONCE as PRTL_RUN_ONCE
 1522 type LPINIT_ONCE as PRTL_RUN_ONCE
 1523 type PINIT_ONCE_FN as function(byval InitOnce as PINIT_ONCE, byval Parameter as PVOID, byval Context as PVOID ptr) as WINBOOL
 1524 type CONDITION_VARIABLE as RTL_CONDITION_VARIABLE
 1525 type PCONDITION_VARIABLE as RTL_CONDITION_VARIABLE ptr
 1526 
 1527 declare sub EnterCriticalSection(byval lpCriticalSection as LPCRITICAL_SECTION)
 1528 declare sub LeaveCriticalSection(byval lpCriticalSection as LPCRITICAL_SECTION)
 1529 declare function TryEnterCriticalSection(byval lpCriticalSection as LPCRITICAL_SECTION) as WINBOOL
 1530 declare sub DeleteCriticalSection(byval lpCriticalSection as LPCRITICAL_SECTION)
 1531 declare function SetEvent(byval hEvent as HANDLE) as WINBOOL
 1532 declare function ResetEvent(byval hEvent as HANDLE) as WINBOOL
 1533 declare function ReleaseSemaphore(byval hSemaphore as HANDLE, byval lReleaseCount as LONG, byval lpPreviousCount as LPLONG) as WINBOOL
 1534 declare function ReleaseMutex(byval hMutex as HANDLE) as WINBOOL
 1535 declare function WaitForSingleObjectEx(byval hHandle as HANDLE, byval dwMilliseconds as DWORD, byval bAlertable as WINBOOL) as DWORD
 1536 declare function WaitForMultipleObjectsEx(byval nCount as DWORD, byval lpHandles as const HANDLE ptr, byval bWaitAll as WINBOOL, byval dwMilliseconds as DWORD, byval bAlertable as WINBOOL) as DWORD
 1537 declare function OpenMutexW(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1538 declare function OpenEventA(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 1539 declare function OpenEventW(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1540 declare function OpenSemaphoreW(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1541 declare function WaitOnAddress(byval Address as any ptr, byval CompareAddress as PVOID, byval AddressSize as SIZE_T_, byval dwMilliseconds as DWORD) as WINBOOL
 1542 declare sub WakeByAddressSingle(byval Address as PVOID)
 1543 declare sub WakeByAddressAll(byval Address as PVOID)
 1544 
 1545 #if _WIN32_WINNT >= &h0600
 1546     const CREATE_MUTEX_INITIAL_OWNER = &h1
 1547     const CREATE_EVENT_MANUAL_RESET = &h1
 1548     const CREATE_EVENT_INITIAL_SET = &h2
 1549 
 1550     declare sub InitializeSRWLock(byval SRWLock as PSRWLOCK)
 1551     declare sub ReleaseSRWLockExclusive(byval SRWLock as PSRWLOCK)
 1552     declare sub ReleaseSRWLockShared(byval SRWLock as PSRWLOCK)
 1553     declare sub AcquireSRWLockExclusive(byval SRWLock as PSRWLOCK)
 1554     declare sub AcquireSRWLockShared(byval SRWLock as PSRWLOCK)
 1555     declare function TryAcquireSRWLockExclusive(byval SRWLock as PSRWLOCK) as WINBOOLEAN
 1556     declare function TryAcquireSRWLockShared(byval SRWLock as PSRWLOCK) as WINBOOLEAN
 1557     declare function InitializeCriticalSectionEx(byval lpCriticalSection as LPCRITICAL_SECTION, byval dwSpinCount as DWORD, byval Flags as DWORD) as WINBOOL
 1558     declare sub InitOnceInitialize(byval InitOnce as PINIT_ONCE)
 1559     declare function InitOnceExecuteOnce(byval InitOnce as PINIT_ONCE, byval InitFn as PINIT_ONCE_FN, byval Parameter as PVOID, byval Context as LPVOID ptr) as WINBOOL
 1560     declare function InitOnceBeginInitialize(byval lpInitOnce as LPINIT_ONCE, byval dwFlags as DWORD, byval fPending as PBOOL, byval lpContext as LPVOID ptr) as WINBOOL
 1561     declare function InitOnceComplete(byval lpInitOnce as LPINIT_ONCE, byval dwFlags as DWORD, byval lpContext as LPVOID) as WINBOOL
 1562     declare sub InitializeConditionVariable(byval ConditionVariable as PCONDITION_VARIABLE)
 1563     declare sub WakeConditionVariable(byval ConditionVariable as PCONDITION_VARIABLE)
 1564     declare sub WakeAllConditionVariable(byval ConditionVariable as PCONDITION_VARIABLE)
 1565     declare function SleepConditionVariableCS(byval ConditionVariable as PCONDITION_VARIABLE, byval CriticalSection as PCRITICAL_SECTION, byval dwMilliseconds as DWORD) as WINBOOL
 1566     declare function SleepConditionVariableSRW(byval ConditionVariable as PCONDITION_VARIABLE, byval SRWLock as PSRWLOCK, byval dwMilliseconds as DWORD, byval Flags as ULONG) as WINBOOL
 1567     declare function CreateMutexExA(byval lpMutexAttributes as LPSECURITY_ATTRIBUTES, byval lpName as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1568     declare function CreateMutexExW(byval lpMutexAttributes as LPSECURITY_ATTRIBUTES, byval lpName as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1569     declare function CreateEventExA(byval lpEventAttributes as LPSECURITY_ATTRIBUTES, byval lpName as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1570     declare function CreateEventExW(byval lpEventAttributes as LPSECURITY_ATTRIBUTES, byval lpName as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1571     declare function CreateSemaphoreExW(byval lpSemaphoreAttributes as LPSECURITY_ATTRIBUTES, byval lInitialCount as LONG, byval lMaximumCount as LONG, byval lpName as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1572 #endif
 1573 
 1574 #ifdef UNICODE
 1575     #if _WIN32_WINNT >= &h0600
 1576         declare function CreateMutexEx alias "CreateMutexExW"(byval lpMutexAttributes as LPSECURITY_ATTRIBUTES, byval lpName as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1577         declare function CreateEventEx alias "CreateEventExW"(byval lpEventAttributes as LPSECURITY_ATTRIBUTES, byval lpName as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1578         declare function CreateSemaphoreEx alias "CreateSemaphoreExW"(byval lpSemaphoreAttributes as LPSECURITY_ATTRIBUTES, byval lInitialCount as LONG, byval lMaximumCount as LONG, byval lpName as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1579     #endif
 1580 
 1581     declare function OpenMutex alias "OpenMutexW"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1582     declare function OpenSemaphore alias "OpenSemaphoreW"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1583     declare function OpenEvent alias "OpenEventW"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1584 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 1585     declare function CreateMutexEx alias "CreateMutexExA"(byval lpMutexAttributes as LPSECURITY_ATTRIBUTES, byval lpName as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1586     declare function CreateEventEx alias "CreateEventExA"(byval lpEventAttributes as LPSECURITY_ATTRIBUTES, byval lpName as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1587 #endif
 1588 
 1589 #ifndef UNICODE
 1590     declare function OpenEvent alias "OpenEventA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 1591 #endif
 1592 
 1593 type PTIMERAPCROUTINE as sub(byval lpArgToCompletionRoutine as LPVOID, byval dwTimerLowValue as DWORD, byval dwTimerHighValue as DWORD)
 1594 type SYNCHRONIZATION_BARRIER as RTL_BARRIER
 1595 type PSYNCHRONIZATION_BARRIER as PRTL_BARRIER
 1596 type LPSYNCHRONIZATION_BARRIER as PRTL_BARRIER
 1597 
 1598 const SYNCHRONIZATION_BARRIER_FLAGS_SPIN_ONLY = &h01
 1599 const SYNCHRONIZATION_BARRIER_FLAGS_BLOCK_ONLY = &h02
 1600 const SYNCHRONIZATION_BARRIER_FLAGS_NO_DELETE = &h04
 1601 
 1602 declare sub InitializeCriticalSection(byval lpCriticalSection as LPCRITICAL_SECTION)
 1603 declare function InitializeCriticalSectionAndSpinCount(byval lpCriticalSection as LPCRITICAL_SECTION, byval dwSpinCount as DWORD) as WINBOOL
 1604 declare function SetCriticalSectionSpinCount(byval lpCriticalSection as LPCRITICAL_SECTION, byval dwSpinCount as DWORD) as DWORD
 1605 declare function WaitForSingleObject(byval hHandle as HANDLE, byval dwMilliseconds as DWORD) as DWORD
 1606 declare function SleepEx(byval dwMilliseconds as DWORD, byval bAlertable as WINBOOL) as DWORD
 1607 declare function CreateMutexA(byval lpMutexAttributes as LPSECURITY_ATTRIBUTES, byval bInitialOwner as WINBOOL, byval lpName as LPCSTR) as HANDLE
 1608 declare function CreateMutexW(byval lpMutexAttributes as LPSECURITY_ATTRIBUTES, byval bInitialOwner as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1609 declare function CreateEventA(byval lpEventAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval bInitialState as WINBOOL, byval lpName as LPCSTR) as HANDLE
 1610 declare function CreateEventW(byval lpEventAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval bInitialState as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1611 declare function SetWaitableTimer(byval hTimer as HANDLE, byval lpDueTime as const LARGE_INTEGER ptr, byval lPeriod as LONG, byval pfnCompletionRoutine as PTIMERAPCROUTINE, byval lpArgToCompletionRoutine as LPVOID, byval fResume as WINBOOL) as WINBOOL
 1612 declare function CancelWaitableTimer(byval hTimer as HANDLE) as WINBOOL
 1613 declare function OpenWaitableTimerW(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpTimerName as LPCWSTR) as HANDLE
 1614 declare function EnterSynchronizationBarrier(byval lpBarrier as LPSYNCHRONIZATION_BARRIER, byval dwFlags as DWORD) as WINBOOL
 1615 declare function InitializeSynchronizationBarrier(byval lpBarrier as LPSYNCHRONIZATION_BARRIER, byval lTotalThreads as LONG, byval lSpinCount as LONG) as WINBOOL
 1616 declare function DeleteSynchronizationBarrier(byval lpBarrier as LPSYNCHRONIZATION_BARRIER) as WINBOOL
 1617 declare sub Sleep_ alias "Sleep"(byval dwMilliseconds as DWORD)
 1618 declare function SignalObjectAndWait(byval hObjectToSignal as HANDLE, byval hObjectToWaitOn as HANDLE, byval dwMilliseconds as DWORD, byval bAlertable as WINBOOL) as DWORD
 1619 
 1620 #if _WIN32_WINNT >= &h0600
 1621     const CREATE_WAITABLE_TIMER_MANUAL_RESET = &h1
 1622     declare function CreateWaitableTimerExW(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval lpTimerName as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1623 #endif
 1624 
 1625 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 1626     declare function CreateWaitableTimerEx alias "CreateWaitableTimerExW"(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval lpTimerName as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 1627 #endif
 1628 
 1629 #if _WIN32_WINNT >= &h0601
 1630     declare function SetWaitableTimerEx(byval hTimer as HANDLE, byval lpDueTime as const LARGE_INTEGER ptr, byval lPeriod as LONG, byval pfnCompletionRoutine as PTIMERAPCROUTINE, byval lpArgToCompletionRoutine as LPVOID, byval WakeContext as PREASON_CONTEXT, byval TolerableDelay as ULONG) as WINBOOL
 1631 #endif
 1632 
 1633 #ifdef UNICODE
 1634     declare function CreateMutex alias "CreateMutexW"(byval lpMutexAttributes as LPSECURITY_ATTRIBUTES, byval bInitialOwner as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1635     declare function CreateEvent alias "CreateEventW"(byval lpEventAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval bInitialState as WINBOOL, byval lpName as LPCWSTR) as HANDLE
 1636     declare function OpenWaitableTimer alias "OpenWaitableTimerW"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpTimerName as LPCWSTR) as HANDLE
 1637 #else
 1638     declare function CreateMutex alias "CreateMutexA"(byval lpMutexAttributes as LPSECURITY_ATTRIBUTES, byval bInitialOwner as WINBOOL, byval lpName as LPCSTR) as HANDLE
 1639     declare function CreateEvent alias "CreateEventA"(byval lpEventAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval bInitialState as WINBOOL, byval lpName as LPCSTR) as HANDLE
 1640 #endif
 1641 
 1642 #define _SYSINFOAPI_H_
 1643 
 1644 type _SYSTEM_INFO
 1645     union
 1646         dwOemId as DWORD
 1647 
 1648         type
 1649             wProcessorArchitecture as WORD
 1650             wReserved as WORD
 1651         end type
 1652     end union
 1653 
 1654     dwPageSize as DWORD
 1655     lpMinimumApplicationAddress as LPVOID
 1656     lpMaximumApplicationAddress as LPVOID
 1657     dwActiveProcessorMask as DWORD_PTR
 1658     dwNumberOfProcessors as DWORD
 1659     dwProcessorType as DWORD
 1660     dwAllocationGranularity as DWORD
 1661     wProcessorLevel as WORD
 1662     wProcessorRevision as WORD
 1663 end type
 1664 
 1665 type SYSTEM_INFO as _SYSTEM_INFO
 1666 type LPSYSTEM_INFO as _SYSTEM_INFO ptr
 1667 declare sub GetSystemTime(byval lpSystemTime as LPSYSTEMTIME)
 1668 declare sub GetSystemTimeAsFileTime(byval lpSystemTimeAsFileTime as LPFILETIME)
 1669 declare sub GetLocalTime(byval lpSystemTime as LPSYSTEMTIME)
 1670 declare sub GetNativeSystemInfo(byval lpSystemInfo as LPSYSTEM_INFO)
 1671 
 1672 #if _WIN32_WINNT >= &h0600
 1673     declare function GetTickCount64() as ULONGLONG
 1674 #endif
 1675 
 1676 declare function GetVersion() as DWORD
 1677 
 1678 type _MEMORYSTATUSEX
 1679     dwLength as DWORD
 1680     dwMemoryLoad as DWORD
 1681     ullTotalPhys as DWORDLONG
 1682     ullAvailPhys as DWORDLONG
 1683     ullTotalPageFile as DWORDLONG
 1684     ullAvailPageFile as DWORDLONG
 1685     ullTotalVirtual as DWORDLONG
 1686     ullAvailVirtual as DWORDLONG
 1687     ullAvailExtendedVirtual as DWORDLONG
 1688 end type
 1689 
 1690 type MEMORYSTATUSEX as _MEMORYSTATUSEX
 1691 type LPMEMORYSTATUSEX as _MEMORYSTATUSEX ptr
 1692 
 1693 type _COMPUTER_NAME_FORMAT as long
 1694 enum
 1695     ComputerNameNetBIOS
 1696     ComputerNameDnsHostname
 1697     ComputerNameDnsDomain
 1698     ComputerNameDnsFullyQualified
 1699     ComputerNamePhysicalNetBIOS
 1700     ComputerNamePhysicalDnsHostname
 1701     ComputerNamePhysicalDnsDomain
 1702     ComputerNamePhysicalDnsFullyQualified
 1703     ComputerNameMax
 1704 end enum
 1705 
 1706 type COMPUTER_NAME_FORMAT as _COMPUTER_NAME_FORMAT
 1707 declare function GlobalMemoryStatusEx(byval lpBuffer as LPMEMORYSTATUSEX) as WINBOOL
 1708 declare function SetLocalTime(byval lpSystemTime as const SYSTEMTIME ptr) as WINBOOL
 1709 declare sub GetSystemInfo(byval lpSystemInfo as LPSYSTEM_INFO)
 1710 declare function GetTickCount() as DWORD
 1711 declare function GetSystemTimeAdjustment(byval lpTimeAdjustment as PDWORD, byval lpTimeIncrement as PDWORD, byval lpTimeAdjustmentDisabled as PBOOL) as WINBOOL
 1712 declare function GetSystemDirectoryA(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 1713 declare function GetSystemDirectoryW(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 1714 declare function GetWindowsDirectoryA(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 1715 declare function GetWindowsDirectoryW(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 1716 declare function GetSystemWindowsDirectoryA(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 1717 declare function GetSystemWindowsDirectoryW(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 1718 declare function GetComputerNameExA(byval NameType as COMPUTER_NAME_FORMAT, byval lpBuffer as LPSTR, byval nSize as LPDWORD) as WINBOOL
 1719 declare function GetComputerNameExW(byval NameType as COMPUTER_NAME_FORMAT, byval lpBuffer as LPWSTR, byval nSize as LPDWORD) as WINBOOL
 1720 declare function SetComputerNameExW(byval NameType as COMPUTER_NAME_FORMAT, byval lpBuffer as LPCWSTR) as WINBOOL
 1721 declare function SetSystemTime(byval lpSystemTime as const SYSTEMTIME ptr) as WINBOOL
 1722 declare function GetVersionExA(byval lpVersionInformation as LPOSVERSIONINFOA) as WINBOOL
 1723 declare function GetVersionExW(byval lpVersionInformation as LPOSVERSIONINFOW) as WINBOOL
 1724 declare function GetLogicalProcessorInformation(byval Buffer as PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, byval ReturnedLength as PDWORD) as WINBOOL
 1725 declare sub GetSystemTimePreciseAsFileTime(byval lpSystemTimeAsFileTime as LPFILETIME)
 1726 declare function EnumSystemFirmwareTables(byval FirmwareTableProviderSignature as DWORD, byval pFirmwareTableEnumBuffer as PVOID, byval BufferSize as DWORD) as UINT
 1727 declare function GetSystemFirmwareTable(byval FirmwareTableProviderSignature as DWORD, byval FirmwareTableID as DWORD, byval pFirmwareTableBuffer as PVOID, byval BufferSize as DWORD) as UINT
 1728 
 1729 #if _WIN32_WINNT >= &h0600
 1730     declare function GetProductInfo(byval dwOSMajorVersion as DWORD, byval dwOSMinorVersion as DWORD, byval dwSpMajorVersion as DWORD, byval dwSpMinorVersion as DWORD, byval pdwReturnedProductType as PDWORD) as WINBOOL
 1731 #endif
 1732 
 1733 #if _WIN32_WINNT >= &h0601
 1734     declare function GetLogicalProcessorInformationEx(byval RelationshipType as LOGICAL_PROCESSOR_RELATIONSHIP, byval Buffer as PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, byval ReturnedLength as PDWORD) as WINBOOL
 1735     declare function GetOsSafeBootMode(byval Flags as PDWORD) as WINBOOL
 1736 #endif
 1737 
 1738 #ifdef UNICODE
 1739     declare function GetSystemDirectory alias "GetSystemDirectoryW"(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 1740     declare function GetWindowsDirectory alias "GetWindowsDirectoryW"(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 1741     declare function GetSystemWindowsDirectory alias "GetSystemWindowsDirectoryW"(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 1742     declare function GetComputerNameEx alias "GetComputerNameExW"(byval NameType as COMPUTER_NAME_FORMAT, byval lpBuffer as LPWSTR, byval nSize as LPDWORD) as WINBOOL
 1743     declare function GetVersionEx alias "GetVersionExW"(byval lpVersionInformation as LPOSVERSIONINFOW) as WINBOOL
 1744     declare function SetComputerNameEx alias "SetComputerNameExW"(byval NameType as COMPUTER_NAME_FORMAT, byval lpBuffer as LPCWSTR) as WINBOOL
 1745 #else
 1746     declare function GetSystemDirectory alias "GetSystemDirectoryA"(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 1747     declare function GetWindowsDirectory alias "GetWindowsDirectoryA"(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 1748     declare function GetSystemWindowsDirectory alias "GetSystemWindowsDirectoryA"(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 1749     declare function GetComputerNameEx alias "GetComputerNameExA"(byval NameType as COMPUTER_NAME_FORMAT, byval lpBuffer as LPSTR, byval nSize as LPDWORD) as WINBOOL
 1750     declare function GetVersionEx alias "GetVersionExA"(byval lpVersionInformation as LPOSVERSIONINFOA) as WINBOOL
 1751 #endif
 1752 
 1753 #define _SYSTEMTOPOLOGY_H_
 1754 declare function GetNumaHighestNodeNumber(byval HighestNodeNumber as PULONG) as WINBOOL
 1755 
 1756 #if _WIN32_WINNT >= &h0601
 1757     declare function GetNumaNodeProcessorMaskEx(byval Node as USHORT, byval ProcessorMask as PGROUP_AFFINITY) as WINBOOL
 1758 #endif
 1759 
 1760 #define _THREADPOOLAPISET_H_
 1761 type PTP_WIN32_IO_CALLBACK as sub(byval Instance as PTP_CALLBACK_INSTANCE, byval Context as PVOID, byval Overlapped as PVOID, byval IoResult as ULONG, byval NumberOfBytesTransferred as ULONG_PTR, byval Io as PTP_IO)
 1762 
 1763 #if _WIN32_WINNT >= &h0600
 1764     declare function CreateThreadpool(byval reserved as PVOID) as PTP_POOL
 1765     declare sub SetThreadpoolThreadMaximum(byval ptpp as PTP_POOL, byval cthrdMost as DWORD)
 1766     declare function SetThreadpoolThreadMinimum(byval ptpp as PTP_POOL, byval cthrdMic as DWORD) as WINBOOL
 1767     declare function SetThreadpoolStackInformation(byval ptpp as PTP_POOL, byval ptpsi as PTP_POOL_STACK_INFORMATION) as WINBOOL
 1768     declare function QueryThreadpoolStackInformation(byval ptpp as PTP_POOL, byval ptpsi as PTP_POOL_STACK_INFORMATION) as WINBOOL
 1769     declare sub CloseThreadpool(byval ptpp as PTP_POOL)
 1770     declare function CreateThreadpoolCleanupGroup() as PTP_CLEANUP_GROUP
 1771     declare sub CloseThreadpoolCleanupGroupMembers(byval ptpcg as PTP_CLEANUP_GROUP, byval fCancelPendingCallbacks as WINBOOL, byval pvCleanupContext as PVOID)
 1772     declare sub CloseThreadpoolCleanupGroup(byval ptpcg as PTP_CLEANUP_GROUP)
 1773     declare sub SetEventWhenCallbackReturns(byval pci as PTP_CALLBACK_INSTANCE, byval evt as HANDLE)
 1774     declare sub ReleaseSemaphoreWhenCallbackReturns(byval pci as PTP_CALLBACK_INSTANCE, byval sem as HANDLE, byval crel as DWORD)
 1775     declare sub ReleaseMutexWhenCallbackReturns(byval pci as PTP_CALLBACK_INSTANCE, byval mut as HANDLE)
 1776     declare sub LeaveCriticalSectionWhenCallbackReturns(byval pci as PTP_CALLBACK_INSTANCE, byval pcs as PCRITICAL_SECTION)
 1777     declare sub FreeLibraryWhenCallbackReturns(byval pci as PTP_CALLBACK_INSTANCE, byval mod_ as HMODULE)
 1778     declare function CallbackMayRunLong(byval pci as PTP_CALLBACK_INSTANCE) as WINBOOL
 1779     declare sub DisassociateCurrentThreadFromCallback(byval pci as PTP_CALLBACK_INSTANCE)
 1780     declare function TrySubmitThreadpoolCallback(byval pfns as PTP_SIMPLE_CALLBACK, byval pv as PVOID, byval pcbe as PTP_CALLBACK_ENVIRON) as WINBOOL
 1781     declare function CreateThreadpoolWork(byval pfnwk as PTP_WORK_CALLBACK, byval pv as PVOID, byval pcbe as PTP_CALLBACK_ENVIRON) as PTP_WORK
 1782     declare sub SubmitThreadpoolWork(byval pwk as PTP_WORK)
 1783     declare sub WaitForThreadpoolWorkCallbacks(byval pwk as PTP_WORK, byval fCancelPendingCallbacks as WINBOOL)
 1784     declare sub CloseThreadpoolWork(byval pwk as PTP_WORK)
 1785     declare function CreateThreadpoolTimer(byval pfnti as PTP_TIMER_CALLBACK, byval pv as PVOID, byval pcbe as PTP_CALLBACK_ENVIRON) as PTP_TIMER
 1786     declare sub SetThreadpoolTimer(byval pti as PTP_TIMER, byval pftDueTime as PFILETIME, byval msPeriod as DWORD, byval msWindowLength as DWORD)
 1787     declare function IsThreadpoolTimerSet(byval pti as PTP_TIMER) as WINBOOL
 1788     declare sub WaitForThreadpoolTimerCallbacks(byval pti as PTP_TIMER, byval fCancelPendingCallbacks as WINBOOL)
 1789     declare sub CloseThreadpoolTimer(byval pti as PTP_TIMER)
 1790     declare function CreateThreadpoolWait(byval pfnwa as PTP_WAIT_CALLBACK, byval pv as PVOID, byval pcbe as PTP_CALLBACK_ENVIRON) as PTP_WAIT
 1791     declare sub SetThreadpoolWait(byval pwa as PTP_WAIT, byval h as HANDLE, byval pftTimeout as PFILETIME)
 1792     declare sub WaitForThreadpoolWaitCallbacks(byval pwa as PTP_WAIT, byval fCancelPendingCallbacks as WINBOOL)
 1793     declare sub CloseThreadpoolWait(byval pwa as PTP_WAIT)
 1794     declare function CreateThreadpoolIo(byval fl as HANDLE, byval pfnio as PTP_WIN32_IO_CALLBACK, byval pv as PVOID, byval pcbe as PTP_CALLBACK_ENVIRON) as PTP_IO
 1795     declare sub StartThreadpoolIo(byval pio as PTP_IO)
 1796     declare sub CancelThreadpoolIo(byval pio as PTP_IO)
 1797     declare sub WaitForThreadpoolIoCallbacks(byval pio as PTP_IO, byval fCancelPendingCallbacks as WINBOOL)
 1798     declare sub CloseThreadpoolIo(byval pio as PTP_IO)
 1799     declare function SetThreadpoolTimerEx(byval pti as PTP_TIMER, byval pftDueTime as PFILETIME, byval msPeriod as DWORD, byval msWindowLength as DWORD) as WINBOOL
 1800     declare function SetThreadpoolWaitEx(byval pwa as PTP_WAIT, byval h as HANDLE, byval pftTimeout as PFILETIME, byval Reserved as PVOID) as WINBOOL
 1801 #endif
 1802 
 1803 #define _THREADPOOLLEGACYAPISET_H_
 1804 declare function CreateTimerQueueTimer(byval phNewTimer as PHANDLE, byval TimerQueue as HANDLE, byval Callback as WAITORTIMERCALLBACK, byval Parameter as PVOID, byval DueTime as DWORD, byval Period as DWORD, byval Flags as ULONG) as WINBOOL
 1805 declare function DeleteTimerQueueTimer(byval TimerQueue as HANDLE, byval Timer as HANDLE, byval CompletionEvent as HANDLE) as WINBOOL
 1806 declare function QueueUserWorkItem(byval Function as LPTHREAD_START_ROUTINE, byval Context as PVOID, byval Flags as ULONG) as WINBOOL
 1807 declare function UnregisterWaitEx(byval WaitHandle as HANDLE, byval CompletionEvent as HANDLE) as WINBOOL
 1808 declare function CreateTimerQueue() as HANDLE
 1809 declare function ChangeTimerQueueTimer(byval TimerQueue as HANDLE, byval Timer as HANDLE, byval DueTime as ULONG, byval Period as ULONG) as WINBOOL
 1810 declare function DeleteTimerQueueEx(byval TimerQueue as HANDLE, byval CompletionEvent as HANDLE) as WINBOOL
 1811 #define _APISETUTIL_
 1812 declare function EncodePointer(byval Ptr as PVOID) as PVOID
 1813 declare function DecodePointer(byval Ptr as PVOID) as PVOID
 1814 declare function EncodeSystemPointer(byval Ptr as PVOID) as PVOID
 1815 declare function DecodeSystemPointer(byval Ptr as PVOID) as PVOID
 1816 declare function Beep_ alias "Beep"(byval dwFreq as DWORD, byval dwDuration as DWORD) as WINBOOL
 1817 #define _WOW64APISET_H_
 1818 declare function Wow64DisableWow64FsRedirection(byval OldValue as PVOID ptr) as WINBOOL
 1819 declare function Wow64RevertWow64FsRedirection(byval OlValue as PVOID) as WINBOOL
 1820 declare function IsWow64Process(byval hProcess as HANDLE, byval Wow64Process as PBOOL) as WINBOOL
 1821 
 1822 #define GetCurrentTime() GetTickCount()
 1823 #define LimitEmsPages(dw)
 1824 #define SetSwapAreaSize(w) (w)
 1825 #define LockSegment(w) GlobalFix(cast(HANDLE, (w)))
 1826 #define UnlockSegment(w) GlobalUnfix(cast(HANDLE, (w)))
 1827 #define Yield()
 1828 const FILE_BEGIN = 0
 1829 const FILE_CURRENT = 1
 1830 const FILE_END = 2
 1831 const WAIT_FAILED = cast(DWORD, &hffffffff)
 1832 const WAIT_OBJECT_0 = STATUS_WAIT_0 + 0
 1833 const WAIT_ABANDONED = STATUS_ABANDONED_WAIT_0 + 0
 1834 const WAIT_ABANDONED_0 = STATUS_ABANDONED_WAIT_0 + 0
 1835 const WAIT_IO_COMPLETION = STATUS_USER_APC
 1836 declare function SecureZeroMemory alias "RtlSecureZeroMemory"(byval ptr as PVOID, byval cnt as SIZE_T_) as PVOID
 1837 declare function CaptureStackBackTrace alias "RtlCaptureStackBackTrace"(byval FramesToSkip as DWORD, byval FramesToCapture as DWORD, byval BackTrace as PVOID ptr, byval BackTraceHash as PDWORD) as WORD
 1838 const FILE_FLAG_WRITE_THROUGH = &h80000000
 1839 const FILE_FLAG_OVERLAPPED = &h40000000
 1840 const FILE_FLAG_NO_BUFFERING = &h20000000
 1841 const FILE_FLAG_RANDOM_ACCESS = &h10000000
 1842 const FILE_FLAG_SEQUENTIAL_SCAN = &h8000000
 1843 const FILE_FLAG_DELETE_ON_CLOSE = &h4000000
 1844 const FILE_FLAG_BACKUP_SEMANTICS = &h2000000
 1845 const FILE_FLAG_POSIX_SEMANTICS = &h1000000
 1846 const FILE_FLAG_SESSION_AWARE = &h800000
 1847 const FILE_FLAG_OPEN_REPARSE_POINT = &h200000
 1848 const FILE_FLAG_OPEN_NO_RECALL = &h100000
 1849 const FILE_FLAG_FIRST_PIPE_INSTANCE = &h80000
 1850 
 1851 #if _WIN32_WINNT = &h0602
 1852     const FILE_FLAG_OPEN_REQUIRING_OPLOCK = &h40000
 1853 #endif
 1854 
 1855 const PROGRESS_CONTINUE = 0
 1856 const PROGRESS_CANCEL = 1
 1857 const PROGRESS_STOP = 2
 1858 const PROGRESS_QUIET = 3
 1859 const CALLBACK_CHUNK_FINISHED = &h0
 1860 const CALLBACK_STREAM_SWITCH = &h1
 1861 const COPY_FILE_FAIL_IF_EXISTS = &h1
 1862 const COPY_FILE_RESTARTABLE = &h2
 1863 const COPY_FILE_OPEN_SOURCE_FOR_WRITE = &h4
 1864 const COPY_FILE_ALLOW_DECRYPTED_DESTINATION = &h8
 1865 
 1866 #if _WIN32_WINNT >= &h0600
 1867     const COPY_FILE_COPY_SYMLINK = &h800
 1868     const COPY_FILE_NO_BUFFERING = &h1000
 1869 #endif
 1870 
 1871 #if _WIN32_WINNT = &h0602
 1872     const COPY_FILE_REQUEST_SECURITY_PRIVILEGES = &h2000
 1873     const COPY_FILE_RESUME_FROM_PAUSE = &h4000
 1874     const COPY_FILE_NO_OFFLOAD = &h40000
 1875 #endif
 1876 
 1877 const REPLACEFILE_WRITE_THROUGH = &h1
 1878 const REPLACEFILE_IGNORE_MERGE_ERRORS = &h2
 1879 
 1880 #if _WIN32_WINNT >= &h0600
 1881     const REPLACEFILE_IGNORE_ACL_ERRORS = &h4
 1882 #endif
 1883 
 1884 const PIPE_ACCESS_INBOUND = &h1
 1885 const PIPE_ACCESS_OUTBOUND = &h2
 1886 const PIPE_ACCESS_DUPLEX = &h3
 1887 const PIPE_CLIENT_END = &h0
 1888 const PIPE_SERVER_END = &h1
 1889 const PIPE_WAIT = &h0
 1890 const PIPE_NOWAIT = &h1
 1891 const PIPE_READMODE_BYTE = &h0
 1892 const PIPE_READMODE_MESSAGE = &h2
 1893 const PIPE_TYPE_BYTE = &h0
 1894 const PIPE_TYPE_MESSAGE = &h4
 1895 const PIPE_ACCEPT_REMOTE_CLIENTS = &h0
 1896 const PIPE_REJECT_REMOTE_CLIENTS = &h8
 1897 const PIPE_UNLIMITED_INSTANCES = 255
 1898 const SECURITY_ANONYMOUS = SecurityAnonymous shl 16
 1899 const SECURITY_IDENTIFICATION = SecurityIdentification shl 16
 1900 const SECURITY_IMPERSONATION = SecurityImpersonation shl 16
 1901 const SECURITY_DELEGATION = SecurityDelegation shl 16
 1902 const SECURITY_CONTEXT_TRACKING = &h40000
 1903 const SECURITY_EFFECTIVE_ONLY = &h80000
 1904 const SECURITY_SQOS_PRESENT = &h100000
 1905 const SECURITY_VALID_SQOS_FLAGS = &h1f0000
 1906 const FAIL_FAST_GENERATE_EXCEPTION_ADDRESS = &h1
 1907 const FAIL_FAST_NO_HARD_ERROR_DLG = &h2
 1908 type PFIBER_START_ROUTINE as sub(byval lpFiberParameter as LPVOID)
 1909 type LPFIBER_START_ROUTINE as PFIBER_START_ROUTINE
 1910 
 1911 #ifdef __FB_64BIT__
 1912     type LPLDT_ENTRY as LPVOID
 1913 #else
 1914     type LPLDT_ENTRY as PLDT_ENTRY
 1915 #endif
 1916 
 1917 const SP_SERIALCOMM = cast(DWORD, &h1)
 1918 const PST_UNSPECIFIED = cast(DWORD, &h0)
 1919 const PST_RS232 = cast(DWORD, &h1)
 1920 const PST_PARALLELPORT = cast(DWORD, &h2)
 1921 const PST_RS422 = cast(DWORD, &h3)
 1922 const PST_RS423 = cast(DWORD, &h4)
 1923 const PST_RS449 = cast(DWORD, &h5)
 1924 const PST_MODEM = cast(DWORD, &h6)
 1925 const PST_FAX = cast(DWORD, &h21)
 1926 const PST_SCANNER = cast(DWORD, &h22)
 1927 const PST_NETWORK_BRIDGE = cast(DWORD, &h100)
 1928 const PST_LAT = cast(DWORD, &h101)
 1929 const PST_TCPIP_TELNET = cast(DWORD, &h102)
 1930 const PST_X25 = cast(DWORD, &h103)
 1931 const PCF_DTRDSR = cast(DWORD, &h1)
 1932 const PCF_RTSCTS = cast(DWORD, &h2)
 1933 const PCF_RLSD = cast(DWORD, &h4)
 1934 const PCF_PARITY_CHECK = cast(DWORD, &h8)
 1935 const PCF_XONXOFF = cast(DWORD, &h10)
 1936 const PCF_SETXCHAR = cast(DWORD, &h20)
 1937 const PCF_TOTALTIMEOUTS = cast(DWORD, &h40)
 1938 const PCF_INTTIMEOUTS = cast(DWORD, &h80)
 1939 const PCF_SPECIALCHARS = cast(DWORD, &h100)
 1940 const PCF_16BITMODE = cast(DWORD, &h200)
 1941 const SP_PARITY = cast(DWORD, &h1)
 1942 const SP_BAUD = cast(DWORD, &h2)
 1943 const SP_DATABITS = cast(DWORD, &h4)
 1944 const SP_STOPBITS = cast(DWORD, &h8)
 1945 const SP_HANDSHAKING = cast(DWORD, &h10)
 1946 const SP_PARITY_CHECK = cast(DWORD, &h20)
 1947 const SP_RLSD = cast(DWORD, &h40)
 1948 const BAUD_075 = cast(DWORD, &h1)
 1949 const BAUD_110 = cast(DWORD, &h2)
 1950 const BAUD_134_5 = cast(DWORD, &h4)
 1951 const BAUD_150 = cast(DWORD, &h8)
 1952 const BAUD_300 = cast(DWORD, &h10)
 1953 const BAUD_600 = cast(DWORD, &h20)
 1954 const BAUD_1200 = cast(DWORD, &h40)
 1955 const BAUD_1800 = cast(DWORD, &h80)
 1956 const BAUD_2400 = cast(DWORD, &h100)
 1957 const BAUD_4800 = cast(DWORD, &h200)
 1958 const BAUD_7200 = cast(DWORD, &h400)
 1959 const BAUD_9600 = cast(DWORD, &h800)
 1960 const BAUD_14400 = cast(DWORD, &h1000)
 1961 const BAUD_19200 = cast(DWORD, &h2000)
 1962 const BAUD_38400 = cast(DWORD, &h4000)
 1963 const BAUD_56K = cast(DWORD, &h8000)
 1964 const BAUD_128K = cast(DWORD, &h10000)
 1965 const BAUD_115200 = cast(DWORD, &h20000)
 1966 const BAUD_57600 = cast(DWORD, &h40000)
 1967 const BAUD_USER = cast(DWORD, &h10000000)
 1968 const DATABITS_5 = cast(WORD, &h1)
 1969 const DATABITS_6 = cast(WORD, &h2)
 1970 const DATABITS_7 = cast(WORD, &h4)
 1971 const DATABITS_8 = cast(WORD, &h8)
 1972 const DATABITS_16 = cast(WORD, &h10)
 1973 const DATABITS_16X = cast(WORD, &h20)
 1974 const STOPBITS_10 = cast(WORD, &h1)
 1975 const STOPBITS_15 = cast(WORD, &h2)
 1976 const STOPBITS_20 = cast(WORD, &h4)
 1977 const PARITY_NONE = cast(WORD, &h100)
 1978 const PARITY_ODD = cast(WORD, &h200)
 1979 const PARITY_EVEN = cast(WORD, &h400)
 1980 const PARITY_MARK = cast(WORD, &h800)
 1981 const PARITY_SPACE = cast(WORD, &h1000)
 1982 
 1983 type _COMMPROP
 1984     wPacketLength as WORD
 1985     wPacketVersion as WORD
 1986     dwServiceMask as DWORD
 1987     dwReserved1 as DWORD
 1988     dwMaxTxQueue as DWORD
 1989     dwMaxRxQueue as DWORD
 1990     dwMaxBaud as DWORD
 1991     dwProvSubType as DWORD
 1992     dwProvCapabilities as DWORD
 1993     dwSettableParams as DWORD
 1994     dwSettableBaud as DWORD
 1995     wSettableData as WORD
 1996     wSettableStopParity as WORD
 1997     dwCurrentTxQueue as DWORD
 1998     dwCurrentRxQueue as DWORD
 1999     dwProvSpec1 as DWORD
 2000     dwProvSpec2 as DWORD
 2001     wcProvChar as wstring * 1
 2002 end type
 2003 
 2004 type COMMPROP as _COMMPROP
 2005 type LPCOMMPROP as _COMMPROP ptr
 2006 const COMMPROP_INITIALIZED = cast(DWORD, &he73cf52e)
 2007 
 2008 type _COMSTAT
 2009     fCtsHold : 1 as DWORD
 2010     fDsrHold : 1 as DWORD
 2011     fRlsdHold : 1 as DWORD
 2012     fXoffHold : 1 as DWORD
 2013     fXoffSent : 1 as DWORD
 2014     fEof : 1 as DWORD
 2015     fTxim : 1 as DWORD
 2016     fReserved : 25 as DWORD
 2017     cbInQue as DWORD
 2018     cbOutQue as DWORD
 2019 end type
 2020 
 2021 type COMSTAT as _COMSTAT
 2022 type LPCOMSTAT as _COMSTAT ptr
 2023 const DTR_CONTROL_DISABLE = &h0
 2024 const DTR_CONTROL_ENABLE = &h1
 2025 const DTR_CONTROL_HANDSHAKE = &h2
 2026 const RTS_CONTROL_DISABLE = &h0
 2027 const RTS_CONTROL_ENABLE = &h1
 2028 const RTS_CONTROL_HANDSHAKE = &h2
 2029 const RTS_CONTROL_TOGGLE = &h3
 2030 
 2031 type _DCB
 2032     DCBlength as DWORD
 2033     BaudRate as DWORD
 2034     fBinary : 1 as DWORD
 2035     fParity : 1 as DWORD
 2036     fOutxCtsFlow : 1 as DWORD
 2037     fOutxDsrFlow : 1 as DWORD
 2038     fDtrControl : 2 as DWORD
 2039     fDsrSensitivity : 1 as DWORD
 2040     fTXContinueOnXoff : 1 as DWORD
 2041     fOutX : 1 as DWORD
 2042     fInX : 1 as DWORD
 2043     fErrorChar : 1 as DWORD
 2044     fNull : 1 as DWORD
 2045     fRtsControl : 2 as DWORD
 2046     fAbortOnError : 1 as DWORD
 2047     fDummy2 : 17 as DWORD
 2048     wReserved as WORD
 2049     XonLim as WORD
 2050     XoffLim as WORD
 2051     ByteSize as UBYTE
 2052     Parity as UBYTE
 2053     StopBits as UBYTE
 2054     XonChar as byte
 2055     XoffChar as byte
 2056     ErrorChar as byte
 2057     EofChar as byte
 2058     EvtChar as byte
 2059     wReserved1 as WORD
 2060 end type
 2061 
 2062 type DCB as _DCB
 2063 type LPDCB as _DCB ptr
 2064 
 2065 type _COMMTIMEOUTS
 2066     ReadIntervalTimeout as DWORD
 2067     ReadTotalTimeoutMultiplier as DWORD
 2068     ReadTotalTimeoutConstant as DWORD
 2069     WriteTotalTimeoutMultiplier as DWORD
 2070     WriteTotalTimeoutConstant as DWORD
 2071 end type
 2072 
 2073 type COMMTIMEOUTS as _COMMTIMEOUTS
 2074 type LPCOMMTIMEOUTS as _COMMTIMEOUTS ptr
 2075 
 2076 type _COMMCONFIG
 2077     dwSize as DWORD
 2078     wVersion as WORD
 2079     wReserved as WORD
 2080     dcb as DCB
 2081     dwProviderSubType as DWORD
 2082     dwProviderOffset as DWORD
 2083     dwProviderSize as DWORD
 2084     wcProviderData as wstring * 1
 2085 end type
 2086 
 2087 type COMMCONFIG as _COMMCONFIG
 2088 type LPCOMMCONFIG as _COMMCONFIG ptr
 2089 #define FreeModule(hLibModule) FreeLibrary((hLibModule))
 2090 #define MakeProcInstance(lpProc, hInstance) (lpProc)
 2091 #define FreeProcInstance(lpProc) (lpProc)
 2092 const GMEM_FIXED = &h0
 2093 const GMEM_MOVEABLE = &h2
 2094 const GMEM_NOCOMPACT = &h10
 2095 const GMEM_NODISCARD = &h20
 2096 const GMEM_ZEROINIT = &h40
 2097 const GMEM_MODIFY = &h80
 2098 const GMEM_DISCARDABLE = &h100
 2099 const GMEM_NOT_BANKED = &h1000
 2100 const GMEM_SHARE = &h2000
 2101 const GMEM_DDESHARE = &h2000
 2102 const GMEM_NOTIFY = &h4000
 2103 const GMEM_LOWER = GMEM_NOT_BANKED
 2104 const GMEM_VALID_FLAGS = &h7f72
 2105 const GMEM_INVALID_HANDLE = &h8000
 2106 const GHND_ = GMEM_MOVEABLE or GMEM_ZEROINIT
 2107 const GPTR_ = GMEM_FIXED or GMEM_ZEROINIT
 2108 #define GlobalLRUNewest(h) cast(HANDLE, (h))
 2109 #define GlobalLRUOldest(h) cast(HANDLE, (h))
 2110 #define GlobalDiscard(h) GlobalReAlloc((h), 0, GMEM_MOVEABLE)
 2111 const GMEM_DISCARDED = &h4000
 2112 const GMEM_LOCKCOUNT = &h00ff
 2113 
 2114 type _MEMORYSTATUS
 2115     dwLength as DWORD
 2116     dwMemoryLoad as DWORD
 2117     dwTotalPhys as SIZE_T_
 2118     dwAvailPhys as SIZE_T_
 2119     dwTotalPageFile as SIZE_T_
 2120     dwAvailPageFile as SIZE_T_
 2121     dwTotalVirtual as SIZE_T_
 2122     dwAvailVirtual as SIZE_T_
 2123 end type
 2124 
 2125 type MEMORYSTATUS as _MEMORYSTATUS
 2126 type LPMEMORYSTATUS as _MEMORYSTATUS ptr
 2127 const NUMA_NO_PREFERRED_NODE = cast(DWORD, -1)
 2128 const DEBUG_PROCESS = &h1
 2129 const DEBUG_ONLY_THIS_PROCESS = &h2
 2130 const CREATE_SUSPENDED = &h4
 2131 const DETACHED_PROCESS = &h8
 2132 const CREATE_NEW_CONSOLE = &h10
 2133 const NORMAL_PRIORITY_CLASS = &h20
 2134 const IDLE_PRIORITY_CLASS = &h40
 2135 const HIGH_PRIORITY_CLASS = &h80
 2136 const REALTIME_PRIORITY_CLASS = &h100
 2137 const CREATE_NEW_PROCESS_GROUP = &h200
 2138 const CREATE_UNICODE_ENVIRONMENT = &h400
 2139 const CREATE_SEPARATE_WOW_VDM = &h800
 2140 const CREATE_SHARED_WOW_VDM = &h1000
 2141 const CREATE_FORCEDOS = &h2000
 2142 const BELOW_NORMAL_PRIORITY_CLASS = &h4000
 2143 const ABOVE_NORMAL_PRIORITY_CLASS = &h8000
 2144 const INHERIT_PARENT_AFFINITY = &h10000
 2145 const INHERIT_CALLER_PRIORITY = &h20000
 2146 const CREATE_PROTECTED_PROCESS = &h40000
 2147 const EXTENDED_STARTUPINFO_PRESENT = &h80000
 2148 const PROCESS_MODE_BACKGROUND_BEGIN = &h100000
 2149 const PROCESS_MODE_BACKGROUND_END = &h200000
 2150 const CREATE_BREAKAWAY_FROM_JOB = &h1000000
 2151 const CREATE_PRESERVE_CODE_AUTHZ_LEVEL = &h2000000
 2152 const CREATE_DEFAULT_ERROR_MODE = &h4000000
 2153 const CREATE_NO_WINDOW = &h8000000
 2154 const PROFILE_USER = &h10000000
 2155 const PROFILE_KERNEL = &h20000000
 2156 const PROFILE_SERVER = &h40000000
 2157 const CREATE_IGNORE_SYSTEM_DEFAULT = &h80000000
 2158 const STACK_SIZE_PARAM_IS_A_RESERVATION = &h10000
 2159 const THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN
 2160 const THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST + 1
 2161 const THREAD_PRIORITY_NORMAL = 0
 2162 const THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX
 2163 const THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST - 1
 2164 const THREAD_PRIORITY_ERROR_RETURN = MAXLONG
 2165 const THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT
 2166 const THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE
 2167 const THREAD_MODE_BACKGROUND_BEGIN = &h00010000
 2168 const THREAD_MODE_BACKGROUND_END = &h00020000
 2169 const VOLUME_NAME_DOS = &h0
 2170 const VOLUME_NAME_GUID = &h1
 2171 const VOLUME_NAME_NT = &h2
 2172 const VOLUME_NAME_NONE = &h4
 2173 const FILE_NAME_NORMALIZED = &h0
 2174 const FILE_NAME_OPENED = &h8
 2175 
 2176 type _JIT_DEBUG_INFO
 2177     dwSize as DWORD
 2178     dwProcessorArchitecture as DWORD
 2179     dwThreadID as DWORD
 2180     dwReserved0 as DWORD
 2181     lpExceptionAddress as ULONG64
 2182     lpExceptionRecord as ULONG64
 2183     lpContextRecord as ULONG64
 2184 end type
 2185 
 2186 type JIT_DEBUG_INFO as _JIT_DEBUG_INFO
 2187 type LPJIT_DEBUG_INFO as _JIT_DEBUG_INFO ptr
 2188 type JIT_DEBUG_INFO32 as JIT_DEBUG_INFO
 2189 type LPJIT_DEBUG_INFO32 as JIT_DEBUG_INFO ptr
 2190 type JIT_DEBUG_INFO64 as JIT_DEBUG_INFO
 2191 type LPJIT_DEBUG_INFO64 as JIT_DEBUG_INFO ptr
 2192 type LPEXCEPTION_RECORD as PEXCEPTION_RECORD
 2193 type LPEXCEPTION_POINTERS as PEXCEPTION_POINTERS
 2194 
 2195 const DRIVE_UNKNOWN = 0
 2196 const DRIVE_NO_ROOT_DIR = 1
 2197 const DRIVE_REMOVABLE = 2
 2198 const DRIVE_FIXED = 3
 2199 const DRIVE_REMOTE = 4
 2200 const DRIVE_CDROM = 5
 2201 const DRIVE_RAMDISK = 6
 2202 #define GetFreeSpace(w) &h100000
 2203 const FILE_TYPE_UNKNOWN = &h0
 2204 const FILE_TYPE_DISK = &h1
 2205 const FILE_TYPE_CHAR = &h2
 2206 const FILE_TYPE_PIPE = &h3
 2207 const FILE_TYPE_REMOTE = &h8000
 2208 const STD_INPUT_HANDLE = cast(DWORD, -10)
 2209 const STD_OUTPUT_HANDLE = cast(DWORD, -11)
 2210 const STD_ERROR_HANDLE = cast(DWORD, -12)
 2211 const NOPARITY = 0
 2212 const ODDPARITY = 1
 2213 const EVENPARITY = 2
 2214 const MARKPARITY = 3
 2215 const SPACEPARITY = 4
 2216 const ONESTOPBIT = 0
 2217 const ONE5STOPBITS = 1
 2218 const TWOSTOPBITS = 2
 2219 const IGNORE = 0
 2220 const INFINITE = &hffffffff
 2221 const CBR_110 = 110
 2222 const CBR_300 = 300
 2223 const CBR_600 = 600
 2224 const CBR_1200 = 1200
 2225 const CBR_2400 = 2400
 2226 const CBR_4800 = 4800
 2227 const CBR_9600 = 9600
 2228 const CBR_14400 = 14400
 2229 const CBR_19200 = 19200
 2230 const CBR_38400 = 38400
 2231 const CBR_56000 = 56000
 2232 const CBR_57600 = 57600
 2233 const CBR_115200 = 115200
 2234 const CBR_128000 = 128000
 2235 const CBR_256000 = 256000
 2236 const CE_RXOVER = &h1
 2237 const CE_OVERRUN = &h2
 2238 const CE_RXPARITY = &h4
 2239 const CE_FRAME = &h8
 2240 const CE_BREAK = &h10
 2241 const CE_TXFULL = &h100
 2242 const CE_PTO = &h200
 2243 const CE_IOE = &h400
 2244 const CE_DNS = &h800
 2245 const CE_OOP = &h1000
 2246 const CE_MODE = &h8000
 2247 const IE_BADID = -1
 2248 const IE_OPEN = -2
 2249 const IE_NOPEN = -3
 2250 const IE_MEMORY = -4
 2251 const IE_DEFAULT = -5
 2252 const IE_HARDWARE = -10
 2253 const IE_BYTESIZE = -11
 2254 const IE_BAUDRATE = -12
 2255 const EV_RXCHAR = &h1
 2256 const EV_RXFLAG = &h2
 2257 const EV_TXEMPTY = &h4
 2258 const EV_CTS = &h8
 2259 const EV_DSR = &h10
 2260 const EV_RLSD = &h20
 2261 const EV_BREAK = &h40
 2262 const EV_ERR = &h80
 2263 const EV_RING = &h100
 2264 const EV_PERR = &h200
 2265 const EV_RX80FULL = &h400
 2266 const EV_EVENT1 = &h800
 2267 const EV_EVENT2 = &h1000
 2268 const SETXOFF = 1
 2269 const SETXON = 2
 2270 const SETRTS = 3
 2271 const CLRRTS = 4
 2272 const SETDTR = 5
 2273 const CLRDTR = 6
 2274 const RESETDEV = 7
 2275 const SETBREAK = 8
 2276 const CLRBREAK = 9
 2277 const PURGE_TXABORT = &h1
 2278 const PURGE_RXABORT = &h2
 2279 const PURGE_TXCLEAR = &h4
 2280 const PURGE_RXCLEAR = &h8
 2281 const LPTx = &h80
 2282 const MS_CTS_ON = cast(DWORD, &h10)
 2283 const MS_DSR_ON = cast(DWORD, &h20)
 2284 const MS_RING_ON = cast(DWORD, &h40)
 2285 const MS_RLSD_ON = cast(DWORD, &h80)
 2286 const S_QUEUEEMPTY = 0
 2287 const S_THRESHOLD = 1
 2288 const S_ALLTHRESHOLD = 2
 2289 const S_NORMAL = 0
 2290 const S_LEGATO = 1
 2291 const S_STACCATO = 2
 2292 const S_PERIOD512 = 0
 2293 const S_PERIOD1024 = 1
 2294 const S_PERIOD2048 = 2
 2295 const S_PERIODVOICE = 3
 2296 const S_WHITE512 = 4
 2297 const S_WHITE1024 = 5
 2298 const S_WHITE2048 = 6
 2299 const S_WHITEVOICE = 7
 2300 const S_SERDVNA = -1
 2301 const S_SEROFM = -2
 2302 const S_SERMACT = -3
 2303 const S_SERQFUL = -4
 2304 const S_SERBDNT = -5
 2305 const S_SERDLN = -6
 2306 const S_SERDCC = -7
 2307 const S_SERDTP = -8
 2308 const S_SERDVL = -9
 2309 const S_SERDMD = -10
 2310 const S_SERDSH = -11
 2311 const S_SERDPT = -12
 2312 const S_SERDFQ = -13
 2313 const S_SERDDR = -14
 2314 const S_SERDSR = -15
 2315 const S_SERDST = -16
 2316 const NMPWAIT_WAIT_FOREVER = &hffffffff
 2317 const NMPWAIT_NOWAIT = &h1
 2318 const NMPWAIT_USE_DEFAULT_WAIT = &h0
 2319 const FS_CASE_IS_PRESERVED = FILE_CASE_PRESERVED_NAMES
 2320 const FS_CASE_SENSITIVE = FILE_CASE_SENSITIVE_SEARCH
 2321 const FS_UNICODE_STORED_ON_DISK = FILE_UNICODE_ON_DISK
 2322 const FS_PERSISTENT_ACLS = FILE_PERSISTENT_ACLS
 2323 const FS_VOL_IS_COMPRESSED = FILE_VOLUME_IS_COMPRESSED
 2324 const FS_FILE_COMPRESSION = FILE_FILE_COMPRESSION
 2325 const FS_FILE_ENCRYPTION = FILE_SUPPORTS_ENCRYPTION
 2326 const OF_READ = &h0
 2327 const OF_WRITE = &h1
 2328 const OF_READWRITE = &h2
 2329 const OF_SHARE_COMPAT = &h0
 2330 const OF_SHARE_EXCLUSIVE = &h10
 2331 const OF_SHARE_DENY_WRITE = &h20
 2332 const OF_SHARE_DENY_READ = &h30
 2333 const OF_SHARE_DENY_NONE = &h40
 2334 const OF_PARSE = &h100
 2335 const OF_DELETE = &h200
 2336 const OF_VERIFY = &h400
 2337 const OF_CANCEL = &h800
 2338 const OF_CREATE = &h1000
 2339 const OF_PROMPT = &h2000
 2340 const OF_EXIST = &h4000
 2341 const OF_REOPEN = &h8000
 2342 const OFS_MAXPATHNAME = 128
 2343 
 2344 type _OFSTRUCT
 2345     cBytes as UBYTE
 2346     fFixedDisk as UBYTE
 2347     nErrCode as WORD
 2348     Reserved1 as WORD
 2349     Reserved2 as WORD
 2350     szPathName as zstring * 128
 2351 end type
 2352 
 2353 type OFSTRUCT as _OFSTRUCT
 2354 type LPOFSTRUCT as _OFSTRUCT ptr
 2355 type POFSTRUCT as _OFSTRUCT ptr
 2356 
 2357 #ifdef __FB_64BIT__
 2358     #define InterlockedIncrement _InterlockedIncrement
 2359 #else
 2360     private function InterlockedAnd64 cdecl(byval Destination as LONGLONG ptr, byval Value as LONGLONG) as LONGLONG
 2361         dim Old as LONGLONG
 2362         do
 2363             Old = *Destination
 2364         loop while InterlockedCompareExchange64(Destination, Old and Value, Old) <> Old
 2365         return Old
 2366     end function
 2367 
 2368     private function InterlockedOr64 cdecl(byval Destination as LONGLONG ptr, byval Value as LONGLONG) as LONGLONG
 2369         dim Old as LONGLONG
 2370         do
 2371             Old = *Destination
 2372         loop while InterlockedCompareExchange64(Destination, Old or Value, Old) <> Old
 2373         return Old
 2374     end function
 2375 
 2376     private function InterlockedXor64 cdecl(byval Destination as LONGLONG ptr, byval Value as LONGLONG) as LONGLONG
 2377         dim Old as LONGLONG
 2378         do
 2379             Old = *Destination
 2380         loop while InterlockedCompareExchange64(Destination, Old xor Value, Old) <> Old
 2381         return Old
 2382     end function
 2383 
 2384     private function InterlockedIncrement64 cdecl(byval Addend as LONGLONG ptr) as LONGLONG
 2385         dim Old as LONGLONG
 2386         do
 2387             Old = *Addend
 2388         loop while InterlockedCompareExchange64(Addend, Old + 1, Old) <> Old
 2389         return Old + 1
 2390     end function
 2391 
 2392     private function InterlockedDecrement64 cdecl(byval Addend as LONGLONG ptr) as LONGLONG
 2393         dim Old as LONGLONG
 2394         do
 2395             Old = *Addend
 2396         loop while InterlockedCompareExchange64(Addend, Old - 1, Old) <> Old
 2397         return Old - 1
 2398     end function
 2399 
 2400     private function InterlockedExchange64 cdecl(byval Target as LONGLONG ptr, byval Value as LONGLONG) as LONGLONG
 2401         dim Old as LONGLONG
 2402         do
 2403             Old = *Target
 2404         loop while InterlockedCompareExchange64(Target, Value, Old) <> Old
 2405         return Old
 2406     end function
 2407 
 2408     private function InterlockedExchangeAdd64 cdecl(byval Addend as LONGLONG ptr, byval Value as LONGLONG) as LONGLONG
 2409         dim Old as LONGLONG
 2410         do
 2411             Old = *Addend
 2412         loop while InterlockedCompareExchange64(Addend, Old + Value, Old) <> Old
 2413         return Old
 2414     end function
 2415 
 2416     #define InterlockedCompareExchangePointer(Destination, ExChange, Comperand) cast(PVOID, cast(LONG_PTR, InterlockedCompareExchange(cptr(LONG ptr, (Destination)), cast(LONG, cast(LONG_PTR, (ExChange))), cast(LONG, cast(LONG_PTR, (Comperand))))))
 2417 #endif
 2418 
 2419 #define InterlockedIncrementAcquire InterlockedIncrement
 2420 #define InterlockedIncrementRelease InterlockedIncrement
 2421 
 2422 #ifdef __FB_64BIT__
 2423     #define InterlockedDecrement _InterlockedDecrement
 2424 #endif
 2425 
 2426 #define InterlockedDecrementAcquire InterlockedDecrement
 2427 #define InterlockedDecrementRelease InterlockedDecrement
 2428 
 2429 #ifdef __FB_64BIT__
 2430     #define InterlockedExchange _InterlockedExchange
 2431     #define InterlockedExchangeAdd _InterlockedExchangeAdd
 2432     #define InterlockedCompareExchange _InterlockedCompareExchange
 2433 #else
 2434     #define InterlockedIncrementAcquire InterlockedIncrement
 2435     #define InterlockedIncrementRelease InterlockedIncrement
 2436 #endif
 2437 
 2438 #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
 2439 #define InterlockedCompareExchangeRelease InterlockedCompareExchange
 2440 
 2441 #ifdef __FB_64BIT__
 2442     #define InterlockedExchangePointer _InterlockedExchangePointer
 2443     #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
 2444     #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer
 2445     #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer
 2446     #define InterlockedAnd64 _InterlockedAnd64
 2447     #define InterlockedOr64 _InterlockedOr64
 2448     #define InterlockedXor64 _InterlockedXor64
 2449     #define InterlockedIncrement64 _InterlockedIncrement64
 2450     #define InterlockedDecrement64 _InterlockedDecrement64
 2451     #define InterlockedExchange64 _InterlockedExchange64
 2452     #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
 2453     #define InterlockedCompareExchange64 _InterlockedCompareExchange64
 2454 #endif
 2455 
 2456 #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
 2457 #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
 2458 
 2459 #ifdef __FB_64BIT__
 2460     declare function _InterlockedAnd(byval Destination as LONG ptr, byval Value as LONG) as LONG
 2461     declare function _InterlockedOr(byval Destination as LONG ptr, byval Value as LONG) as LONG
 2462     declare function _InterlockedXor(byval Destination as LONG ptr, byval Value as LONG) as LONG
 2463     declare function _InterlockedAnd8(byval Destination as zstring ptr, byval Value as byte) as byte
 2464     declare function InterlockedAnd8 alias "_InterlockedAnd8"(byval Destination as zstring ptr, byval Value as byte) as byte
 2465     declare function _InterlockedOr8(byval Destination as zstring ptr, byval Value as byte) as byte
 2466     declare function InterlockedOr8 alias "_InterlockedOr8"(byval Destination as zstring ptr, byval Value as byte) as byte
 2467     declare function _InterlockedXor8(byval Destination as zstring ptr, byval Value as byte) as byte
 2468     declare function InterlockedXor8 alias "_InterlockedXor8"(byval Destination as zstring ptr, byval Value as byte) as byte
 2469     declare function _InterlockedAnd16(byval Destination as SHORT ptr, byval Value as SHORT) as SHORT
 2470     declare function InterlockedAnd16 alias "_InterlockedAnd16"(byval Destination as SHORT ptr, byval Value as SHORT) as SHORT
 2471     declare function _InterlockedOr16(byval Destination as SHORT ptr, byval Value as SHORT) as SHORT
 2472     declare function InterlockedOr16 alias "_InterlockedOr16"(byval Destination as SHORT ptr, byval Value as SHORT) as SHORT
 2473     declare function _InterlockedXor16(byval Destination as SHORT ptr, byval Value as SHORT) as SHORT
 2474     declare function InterlockedXor16 alias "_InterlockedXor16"(byval Destination as SHORT ptr, byval Value as SHORT) as SHORT
 2475 #else
 2476     #define InterlockedCompareExchangePointerAcquire InterlockedCompareExchangePointer
 2477     #define InterlockedCompareExchangePointerRelease InterlockedCompareExchangePointer
 2478 #endif
 2479 
 2480 const MAXINTATOM = &hc000
 2481 #define MAKEINTATOM(i) cast(LPTSTR, cast(ULONG_PTR, cast(WORD, (i))))
 2482 const INVALID_ATOM = cast(ATOM, 0)
 2483 
 2484 declare function GlobalAlloc(byval uFlags as UINT, byval dwBytes as SIZE_T_) as HGLOBAL
 2485 declare function GlobalReAlloc(byval hMem as HGLOBAL, byval dwBytes as SIZE_T_, byval uFlags as UINT) as HGLOBAL
 2486 declare function GlobalSize(byval hMem as HGLOBAL) as SIZE_T_
 2487 declare function GlobalFlags(byval hMem as HGLOBAL) as UINT
 2488 declare function GlobalLock(byval hMem as HGLOBAL) as LPVOID
 2489 declare function GlobalHandle(byval pMem as LPCVOID) as HGLOBAL
 2490 declare function GlobalUnlock(byval hMem as HGLOBAL) as WINBOOL
 2491 declare function GlobalFree(byval hMem as HGLOBAL) as HGLOBAL
 2492 declare function GlobalCompact(byval dwMinFree as DWORD) as SIZE_T_
 2493 declare sub GlobalFix(byval hMem as HGLOBAL)
 2494 declare sub GlobalUnfix(byval hMem as HGLOBAL)
 2495 declare function GlobalWire(byval hMem as HGLOBAL) as LPVOID
 2496 declare function GlobalUnWire(byval hMem as HGLOBAL) as WINBOOL
 2497 declare sub GlobalMemoryStatus(byval lpBuffer as LPMEMORYSTATUS)
 2498 declare function LocalAlloc(byval uFlags as UINT, byval uBytes as SIZE_T_) as HLOCAL
 2499 declare function LocalReAlloc(byval hMem as HLOCAL, byval uBytes as SIZE_T_, byval uFlags as UINT) as HLOCAL
 2500 declare function LocalLock(byval hMem as HLOCAL) as LPVOID
 2501 declare function LocalHandle(byval pMem as LPCVOID) as HLOCAL
 2502 declare function LocalUnlock(byval hMem as HLOCAL) as WINBOOL
 2503 declare function LocalSize(byval hMem as HLOCAL) as SIZE_T_
 2504 declare function LocalFlags(byval hMem as HLOCAL) as UINT
 2505 declare function LocalFree(byval hMem as HLOCAL) as HLOCAL
 2506 declare function LocalShrink(byval hMem as HLOCAL, byval cbNewSize as UINT) as SIZE_T_
 2507 declare function LocalCompact(byval uMinFree as UINT) as SIZE_T_
 2508 
 2509 #if _WIN32_WINNT >= &h0600
 2510     declare function VirtualAllocExNuma(byval hProcess as HANDLE, byval lpAddress as LPVOID, byval dwSize as SIZE_T_, byval flAllocationType as DWORD, byval flProtect as DWORD, byval nndPreferred as DWORD) as LPVOID
 2511 #endif
 2512 
 2513 #if _WIN32_WINNT >= &h0601
 2514     declare function GetProcessorSystemCycleTime(byval Group as USHORT, byval Buffer as PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION, byval ReturnedLength as PDWORD) as WINBOOL
 2515     declare function GetPhysicallyInstalledSystemMemory(byval TotalMemoryInKilobytes as PULONGLONG) as WINBOOL
 2516 #endif
 2517 
 2518 const SCS_32BIT_BINARY = 0
 2519 const SCS_DOS_BINARY = 1
 2520 const SCS_WOW_BINARY = 2
 2521 const SCS_PIF_BINARY = 3
 2522 const SCS_POSIX_BINARY = 4
 2523 const SCS_OS216_BINARY = 5
 2524 const SCS_64BIT_BINARY = 6
 2525 
 2526 #ifdef __FB_64BIT__
 2527     const SCS_THIS_PLATFORM_BINARY = SCS_64BIT_BINARY
 2528 #else
 2529     const SCS_THIS_PLATFORM_BINARY = SCS_32BIT_BINARY
 2530 #endif
 2531 
 2532 declare function GetBinaryTypeA(byval lpApplicationName as LPCSTR, byval lpBinaryType as LPDWORD) as WINBOOL
 2533 declare function GetBinaryTypeW(byval lpApplicationName as LPCWSTR, byval lpBinaryType as LPDWORD) as WINBOOL
 2534 declare function GetShortPathNameA(byval lpszLongPath as LPCSTR, byval lpszShortPath as LPSTR, byval cchBuffer as DWORD) as DWORD
 2535 
 2536 #if _WIN32_WINNT >= &h0600
 2537     declare function GetLongPathNameTransactedA(byval lpszShortPath as LPCSTR, byval lpszLongPath as LPSTR, byval cchBuffer as DWORD, byval hTransaction as HANDLE) as DWORD
 2538     declare function GetLongPathNameTransactedW(byval lpszShortPath as LPCWSTR, byval lpszLongPath as LPWSTR, byval cchBuffer as DWORD, byval hTransaction as HANDLE) as DWORD
 2539 #endif
 2540 
 2541 declare function GetProcessAffinityMask(byval hProcess as HANDLE, byval lpProcessAffinityMask as PDWORD_PTR, byval lpSystemAffinityMask as PDWORD_PTR) as WINBOOL
 2542 declare function SetProcessAffinityMask(byval hProcess as HANDLE, byval dwProcessAffinityMask as DWORD_PTR) as WINBOOL
 2543 declare function GetProcessIoCounters(byval hProcess as HANDLE, byval lpIoCounters as PIO_COUNTERS) as WINBOOL
 2544 declare function GetProcessWorkingSetSize(byval hProcess as HANDLE, byval lpMinimumWorkingSetSize as PSIZE_T, byval lpMaximumWorkingSetSize as PSIZE_T) as WINBOOL
 2545 declare function SetProcessWorkingSetSize(byval hProcess as HANDLE, byval dwMinimumWorkingSetSize as SIZE_T_, byval dwMaximumWorkingSetSize as SIZE_T_) as WINBOOL
 2546 declare sub FatalExit(byval ExitCode as long)
 2547 declare function SetEnvironmentStringsA(byval NewEnvironment as LPCH) as WINBOOL
 2548 
 2549 #ifdef UNICODE
 2550     declare function GetBinaryType alias "GetBinaryTypeW"(byval lpApplicationName as LPCWSTR, byval lpBinaryType as LPDWORD) as WINBOOL
 2551 #endif
 2552 
 2553 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 2554     declare function GetLongPathNameTransacted alias "GetLongPathNameTransactedW"(byval lpszShortPath as LPCWSTR, byval lpszLongPath as LPWSTR, byval cchBuffer as DWORD, byval hTransaction as HANDLE) as DWORD
 2555 #elseif not defined(UNICODE)
 2556     declare function SetEnvironmentStrings alias "SetEnvironmentStringsA"(byval NewEnvironment as LPCH) as WINBOOL
 2557     declare function GetShortPathName alias "GetShortPathNameA"(byval lpszLongPath as LPCSTR, byval lpszShortPath as LPSTR, byval cchBuffer as DWORD) as DWORD
 2558     declare function GetBinaryType alias "GetBinaryTypeA"(byval lpApplicationName as LPCSTR, byval lpBinaryType as LPDWORD) as WINBOOL
 2559 #endif
 2560 
 2561 #if (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 2562     declare function GetLongPathNameTransacted alias "GetLongPathNameTransactedA"(byval lpszShortPath as LPCSTR, byval lpszLongPath as LPSTR, byval cchBuffer as DWORD, byval hTransaction as HANDLE) as DWORD
 2563 #endif
 2564 
 2565 declare sub RaiseFailFastException(byval pExceptionRecord as PEXCEPTION_RECORD, byval pContextRecord as PCONTEXT, byval dwFlags as DWORD)
 2566 declare function SetThreadIdealProcessor(byval hThread as HANDLE, byval dwIdealProcessor as DWORD) as DWORD
 2567 const FIBER_FLAG_FLOAT_SWITCH = &h1
 2568 declare function CreateFiber(byval dwStackSize as SIZE_T_, byval lpStartAddress as LPFIBER_START_ROUTINE, byval lpParameter as LPVOID) as LPVOID
 2569 declare function CreateFiberEx(byval dwStackCommitSize as SIZE_T_, byval dwStackReserveSize as SIZE_T_, byval dwFlags as DWORD, byval lpStartAddress as LPFIBER_START_ROUTINE, byval lpParameter as LPVOID) as LPVOID
 2570 declare sub DeleteFiber(byval lpFiber as LPVOID)
 2571 declare function ConvertThreadToFiber(byval lpParameter as LPVOID) as LPVOID
 2572 declare function ConvertThreadToFiberEx(byval lpParameter as LPVOID, byval dwFlags as DWORD) as LPVOID
 2573 declare function ConvertFiberToThread() as WINBOOL
 2574 declare sub SwitchToFiber(byval lpFiber as LPVOID)
 2575 declare function SetThreadAffinityMask(byval hThread as HANDLE, byval dwThreadAffinityMask as DWORD_PTR) as DWORD_PTR
 2576 
 2577 type _THREAD_INFORMATION_CLASS as long
 2578 enum
 2579     ThreadMemoryPriority
 2580     ThreadAbsoluteCpuPriority
 2581     ThreadInformationClassMax
 2582 end enum
 2583 
 2584 type THREAD_INFORMATION_CLASS as _THREAD_INFORMATION_CLASS
 2585 
 2586 type _PROCESS_INFORMATION_CLASS as long
 2587 enum
 2588     ProcessMemoryPriority
 2589     ProcessInformationClassMax
 2590 end enum
 2591 
 2592 type PROCESS_INFORMATION_CLASS as _PROCESS_INFORMATION_CLASS
 2593 
 2594 #if _WIN32_WINNT = &h0602
 2595     declare function GetThreadInformation(byval hThread as HANDLE, byval ThreadInformationClass as THREAD_INFORMATION_CLASS, byval ThreadInformation as LPVOID, byval ThreadInformationSize as DWORD) as WINBOOL
 2596     declare function SetThreadInformation(byval hThread as HANDLE, byval ThreadInformationClass as THREAD_INFORMATION_CLASS, byval ThreadInformation as LPVOID, byval ThreadInformationSize as DWORD) as WINBOOL
 2597     declare function GetProcessInformation(byval hProcess as HANDLE, byval ProcessInformationClass as PROCESS_INFORMATION_CLASS, byval ProcessInformation as LPVOID, byval ProcessInformationSize as DWORD) as WINBOOL
 2598     declare function SetProcessInformation(byval hProcess as HANDLE, byval ProcessInformationClass as PROCESS_INFORMATION_CLASS, byval ProcessInformation as LPVOID, byval ProcessInformationSize as DWORD) as WINBOOL
 2599 
 2600     const MEMORY_PRIORITY_LOWEST = 0
 2601     const MEMORY_PRIORITY_VERY_LOW = 1
 2602     const MEMORY_PRIORITY_LOW = 2
 2603     const MEMORY_PRIORITY_MEDIUM = 3
 2604     const MEMORY_PRIORITY_BELOW_NORMAL = 4
 2605     const MEMORY_PRIORITY_NORMAL = 5
 2606 
 2607     type _MEMORY_PRIORITY_INFORMATION
 2608         MemoryPriority as ULONG
 2609     end type
 2610 
 2611     type MEMORY_PRIORITY_INFORMATION as _MEMORY_PRIORITY_INFORMATION
 2612     type PMEMORY_PRIORITY_INFORMATION as _MEMORY_PRIORITY_INFORMATION ptr
 2613 #endif
 2614 
 2615 #if _WIN32_WINNT >= &h0600
 2616     const PROCESS_DEP_ENABLE = &h00000001
 2617     const PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION = &h00000002
 2618     declare function SetProcessDEPPolicy(byval dwFlags as DWORD) as WINBOOL
 2619     declare function GetProcessDEPPolicy(byval hProcess as HANDLE, byval lpFlags as LPDWORD, byval lpPermanent as PBOOL) as WINBOOL
 2620 #endif
 2621 
 2622 declare function SetProcessPriorityBoost(byval hProcess as HANDLE, byval bDisablePriorityBoost as WINBOOL) as WINBOOL
 2623 declare function GetProcessPriorityBoost(byval hProcess as HANDLE, byval pDisablePriorityBoost as PBOOL) as WINBOOL
 2624 declare function RequestWakeupLatency(byval latency as LATENCY_TIME) as WINBOOL
 2625 declare function IsSystemResumeAutomatic() as WINBOOL
 2626 declare function GetThreadIOPendingFlag(byval hThread as HANDLE, byval lpIOIsPending as PBOOL) as WINBOOL
 2627 declare function GetThreadSelectorEntry(byval hThread as HANDLE, byval dwSelector as DWORD, byval lpSelectorEntry as LPLDT_ENTRY) as WINBOOL
 2628 declare function SetThreadExecutionState(byval esFlags as EXECUTION_STATE) as EXECUTION_STATE
 2629 
 2630 #if _WIN32_WINNT >= &h0601
 2631     type POWER_REQUEST_CONTEXT as REASON_CONTEXT
 2632     type PPOWER_REQUEST_CONTEXT as REASON_CONTEXT ptr
 2633     type LPPOWER_REQUEST_CONTEXT as REASON_CONTEXT ptr
 2634 
 2635     declare function PowerCreateRequest(byval Context as PREASON_CONTEXT) as HANDLE
 2636     declare function PowerSetRequest(byval PowerRequest as HANDLE, byval RequestType as POWER_REQUEST_TYPE) as WINBOOL
 2637     declare function PowerClearRequest(byval PowerRequest as HANDLE, byval RequestType as POWER_REQUEST_TYPE) as WINBOOL
 2638 #endif
 2639 
 2640 #define HasOverlappedIoCompleted(lpOverlapped) (cast(DWORD, (lpOverlapped)->Internal) <> STATUS_PENDING)
 2641 
 2642 #if _WIN32_WINNT >= &h0600
 2643     const FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = &h1
 2644     const FILE_SKIP_SET_EVENT_ON_HANDLE = &h2
 2645     declare function SetFileCompletionNotificationModes(byval FileHandle as HANDLE, byval Flags as UCHAR) as WINBOOL
 2646     declare function SetFileIoOverlappedRange(byval FileHandle as HANDLE, byval OverlappedRangeStart as PUCHAR, byval Length as ULONG) as WINBOOL
 2647 #endif
 2648 
 2649 const SEM_FAILCRITICALERRORS = &h0001
 2650 const SEM_NOGPFAULTERRORBOX = &h0002
 2651 const SEM_NOALIGNMENTFAULTEXCEPT = &h0004
 2652 const SEM_NOOPENFILEERRORBOX = &h8000
 2653 declare function GetThreadErrorMode() as DWORD
 2654 declare function SetThreadErrorMode(byval dwNewMode as DWORD, byval lpOldMode as LPDWORD) as WINBOOL
 2655 
 2656 #if _WIN32_WINNT >= &h0600
 2657     declare function Wow64GetThreadContext(byval hThread as HANDLE, byval lpContext as PWOW64_CONTEXT) as WINBOOL
 2658     declare function Wow64SetThreadContext(byval hThread as HANDLE, byval lpContext as const WOW64_CONTEXT ptr) as WINBOOL
 2659 #endif
 2660 
 2661 #if _WIN32_WINNT >= &h0601
 2662     declare function Wow64GetThreadSelectorEntry(byval hThread as HANDLE, byval dwSelector as DWORD, byval lpSelectorEntry as PWOW64_LDT_ENTRY) as WINBOOL
 2663 #endif
 2664 
 2665 #if _WIN32_WINNT >= &h0600
 2666     declare function Wow64SuspendThread(byval hThread as HANDLE) as DWORD
 2667 #endif
 2668 
 2669 declare function DebugSetProcessKillOnExit(byval KillOnExit as WINBOOL) as WINBOOL
 2670 declare function DebugBreakProcess(byval Process as HANDLE) as WINBOOL
 2671 const CRITICAL_SECTION_NO_DEBUG_INFO = RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO
 2672 
 2673 type _DEP_SYSTEM_POLICY_TYPE as long
 2674 enum
 2675     DEPPolicyAlwaysOff = 0
 2676     DEPPolicyAlwaysOn
 2677     DEPPolicyOptIn
 2678     DEPPolicyOptOut
 2679     DEPTotalPolicyCount
 2680 end enum
 2681 
 2682 type DEP_SYSTEM_POLICY_TYPE as _DEP_SYSTEM_POLICY_TYPE
 2683 const HANDLE_FLAG_INHERIT = &h1
 2684 const HANDLE_FLAG_PROTECT_FROM_CLOSE = &h2
 2685 const HINSTANCE_ERROR = 32
 2686 const GET_TAPE_MEDIA_INFORMATION = 0
 2687 const GET_TAPE_DRIVE_INFORMATION = 1
 2688 const SET_TAPE_MEDIA_INFORMATION = 0
 2689 const SET_TAPE_DRIVE_INFORMATION = 1
 2690 
 2691 declare function PulseEvent(byval hEvent as HANDLE) as WINBOOL
 2692 declare function WaitForMultipleObjects(byval nCount as DWORD, byval lpHandles as const HANDLE ptr, byval bWaitAll as WINBOOL, byval dwMilliseconds as DWORD) as DWORD
 2693 declare function GlobalDeleteAtom(byval nAtom as ATOM) as ATOM
 2694 declare function InitAtomTable(byval nSize as DWORD) as WINBOOL
 2695 declare function DeleteAtom(byval nAtom as ATOM) as ATOM
 2696 declare function SetHandleCount(byval uNumber as UINT) as UINT
 2697 declare function RequestDeviceWakeup(byval hDevice as HANDLE) as WINBOOL
 2698 declare function CancelDeviceWakeupRequest(byval hDevice as HANDLE) as WINBOOL
 2699 declare function GetDevicePowerState(byval hDevice as HANDLE, byval pfOn as WINBOOL ptr) as WINBOOL
 2700 declare function SetMessageWaitingIndicator(byval hMsgIndicator as HANDLE, byval ulMsgCount as ULONG) as WINBOOL
 2701 declare function SetFileShortNameA(byval hFile as HANDLE, byval lpShortName as LPCSTR) as WINBOOL
 2702 declare function SetFileShortNameW(byval hFile as HANDLE, byval lpShortName as LPCWSTR) as WINBOOL
 2703 declare function LoadModule(byval lpModuleName as LPCSTR, byval lpParameterBlock as LPVOID) as DWORD
 2704 declare function WinExec(byval lpCmdLine as LPCSTR, byval uCmdShow as UINT) as UINT
 2705 declare function ClearCommBreak(byval hFile as HANDLE) as WINBOOL
 2706 declare function ClearCommError(byval hFile as HANDLE, byval lpErrors as LPDWORD, byval lpStat as LPCOMSTAT) as WINBOOL
 2707 declare function SetupComm(byval hFile as HANDLE, byval dwInQueue as DWORD, byval dwOutQueue as DWORD) as WINBOOL
 2708 declare function EscapeCommFunction(byval hFile as HANDLE, byval dwFunc as DWORD) as WINBOOL
 2709 declare function GetCommConfig(byval hCommDev as HANDLE, byval lpCC as LPCOMMCONFIG, byval lpdwSize as LPDWORD) as WINBOOL
 2710 declare function GetCommMask(byval hFile as HANDLE, byval lpEvtMask as LPDWORD) as WINBOOL
 2711 declare function GetCommProperties(byval hFile as HANDLE, byval lpCommProp as LPCOMMPROP) as WINBOOL
 2712 declare function GetCommModemStatus(byval hFile as HANDLE, byval lpModemStat as LPDWORD) as WINBOOL
 2713 declare function GetCommState(byval hFile as HANDLE, byval lpDCB as LPDCB) as WINBOOL
 2714 declare function GetCommTimeouts(byval hFile as HANDLE, byval lpCommTimeouts as LPCOMMTIMEOUTS) as WINBOOL
 2715 declare function PurgeComm(byval hFile as HANDLE, byval dwFlags as DWORD) as WINBOOL
 2716 declare function SetCommBreak(byval hFile as HANDLE) as WINBOOL
 2717 declare function SetCommConfig(byval hCommDev as HANDLE, byval lpCC as LPCOMMCONFIG, byval dwSize as DWORD) as WINBOOL
 2718 declare function SetCommMask(byval hFile as HANDLE, byval dwEvtMask as DWORD) as WINBOOL
 2719 declare function SetCommState(byval hFile as HANDLE, byval lpDCB as LPDCB) as WINBOOL
 2720 declare function SetCommTimeouts(byval hFile as HANDLE, byval lpCommTimeouts as LPCOMMTIMEOUTS) as WINBOOL
 2721 declare function TransmitCommChar(byval hFile as HANDLE, byval cChar as byte) as WINBOOL
 2722 declare function WaitCommEvent(byval hFile as HANDLE, byval lpEvtMask as LPDWORD, byval lpOverlapped as LPOVERLAPPED) as WINBOOL
 2723 declare function SetTapePosition(byval hDevice as HANDLE, byval dwPositionMethod as DWORD, byval dwPartition as DWORD, byval dwOffsetLow as DWORD, byval dwOffsetHigh as DWORD, byval bImmediate as WINBOOL) as DWORD
 2724 declare function GetTapePosition(byval hDevice as HANDLE, byval dwPositionType as DWORD, byval lpdwPartition as LPDWORD, byval lpdwOffsetLow as LPDWORD, byval lpdwOffsetHigh as LPDWORD) as DWORD
 2725 declare function PrepareTape(byval hDevice as HANDLE, byval dwOperation as DWORD, byval bImmediate as WINBOOL) as DWORD
 2726 declare function EraseTape(byval hDevice as HANDLE, byval dwEraseType as DWORD, byval bImmediate as WINBOOL) as DWORD
 2727 declare function CreateTapePartition(byval hDevice as HANDLE, byval dwPartitionMethod as DWORD, byval dwCount as DWORD, byval dwSize as DWORD) as DWORD
 2728 declare function WriteTapemark(byval hDevice as HANDLE, byval dwTapemarkType as DWORD, byval dwTapemarkCount as DWORD, byval bImmediate as WINBOOL) as DWORD
 2729 declare function GetTapeStatus(byval hDevice as HANDLE) as DWORD
 2730 declare function GetTapeParameters(byval hDevice as HANDLE, byval dwOperation as DWORD, byval lpdwSize as LPDWORD, byval lpTapeInformation as LPVOID) as DWORD
 2731 declare function SetTapeParameters(byval hDevice as HANDLE, byval dwOperation as DWORD, byval lpTapeInformation as LPVOID) as DWORD
 2732 declare function GetSystemDEPPolicy() as DEP_SYSTEM_POLICY_TYPE
 2733 declare function GetSystemRegistryQuota(byval pdwQuotaAllowed as PDWORD, byval pdwQuotaUsed as PDWORD) as WINBOOL
 2734 declare function GetSystemTimes(byval lpIdleTime as LPFILETIME, byval lpKernelTime as LPFILETIME, byval lpUserTime as LPFILETIME) as WINBOOL
 2735 declare function FileTimeToDosDateTime(byval lpFileTime as const FILETIME ptr, byval lpFatDate as LPWORD, byval lpFatTime as LPWORD) as WINBOOL
 2736 declare function DosDateTimeToFileTime(byval wFatDate as WORD, byval wFatTime as WORD, byval lpFileTime as LPFILETIME) as WINBOOL
 2737 declare function SetSystemTimeAdjustment(byval dwTimeAdjustment as DWORD, byval bTimeAdjustmentDisabled as WINBOOL) as WINBOOL
 2738 
 2739 #ifdef UNICODE
 2740     declare function SetFileShortName alias "SetFileShortNameW"(byval hFile as HANDLE, byval lpShortName as LPCWSTR) as WINBOOL
 2741 #else
 2742     declare function SetFileShortName alias "SetFileShortNameA"(byval hFile as HANDLE, byval lpShortName as LPCSTR) as WINBOOL
 2743 #endif
 2744 
 2745 declare function MulDiv(byval nNumber as long, byval nNumerator as long, byval nDenominator as long) as long
 2746 declare function FormatMessageA(byval dwFlags as DWORD, byval lpSource as LPCVOID, byval dwMessageId as DWORD, byval dwLanguageId as DWORD, byval lpBuffer as LPSTR, byval nSize as DWORD, byval Arguments as va_list ptr) as DWORD
 2747 declare function FormatMessageW(byval dwFlags as DWORD, byval lpSource as LPCVOID, byval dwMessageId as DWORD, byval dwLanguageId as DWORD, byval lpBuffer as LPWSTR, byval nSize as DWORD, byval Arguments as va_list ptr) as DWORD
 2748 
 2749 #ifdef UNICODE
 2750     declare function FormatMessage alias "FormatMessageW"(byval dwFlags as DWORD, byval lpSource as LPCVOID, byval dwMessageId as DWORD, byval dwLanguageId as DWORD, byval lpBuffer as LPWSTR, byval nSize as DWORD, byval Arguments as va_list ptr) as DWORD
 2751 #else
 2752     declare function FormatMessage alias "FormatMessageA"(byval dwFlags as DWORD, byval lpSource as LPCVOID, byval dwMessageId as DWORD, byval dwLanguageId as DWORD, byval lpBuffer as LPSTR, byval nSize as DWORD, byval Arguments as va_list ptr) as DWORD
 2753 #endif
 2754 
 2755 const FORMAT_MESSAGE_IGNORE_INSERTS = &h00000200
 2756 const FORMAT_MESSAGE_FROM_STRING = &h00000400
 2757 const FORMAT_MESSAGE_FROM_HMODULE = &h00000800
 2758 const FORMAT_MESSAGE_FROM_SYSTEM = &h00001000
 2759 const FORMAT_MESSAGE_ARGUMENT_ARRAY = &h00002000
 2760 const FORMAT_MESSAGE_MAX_WIDTH_MASK = &h000000ff
 2761 type PFE_EXPORT_FUNC as function(byval pbData as PBYTE, byval pvCallbackContext as PVOID, byval ulLength as ULONG) as DWORD
 2762 type PFE_IMPORT_FUNC as function(byval pbData as PBYTE, byval pvCallbackContext as PVOID, byval ulLength as PULONG) as DWORD
 2763 const FILE_ENCRYPTABLE = 0
 2764 const FILE_IS_ENCRYPTED = 1
 2765 const FILE_SYSTEM_ATTR = 2
 2766 const FILE_ROOT_DIR = 3
 2767 const FILE_SYSTEM_DIR = 4
 2768 const FILE_UNKNOWN = 5
 2769 const FILE_SYSTEM_NOT_SUPPORT = 6
 2770 const FILE_USER_DISALLOWED = 7
 2771 const FILE_READ_ONLY = 8
 2772 const FILE_DIR_DISALLOWED = 9
 2773 const FORMAT_MESSAGE_ALLOCATE_BUFFER = &h00000100
 2774 const EFS_USE_RECOVERY_KEYS = &h1
 2775 const CREATE_FOR_IMPORT = 1
 2776 const CREATE_FOR_DIR = 2
 2777 const OVERWRITE_HIDDEN = 4
 2778 const EFSRPC_SECURE_ONLY = 8
 2779 
 2780 declare function GetNamedPipeInfo(byval hNamedPipe as HANDLE, byval lpFlags as LPDWORD, byval lpOutBufferSize as LPDWORD, byval lpInBufferSize as LPDWORD, byval lpMaxInstances as LPDWORD) as WINBOOL
 2781 declare function CreateMailslotA(byval lpName as LPCSTR, byval nMaxMessageSize as DWORD, byval lReadTimeout as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as HANDLE
 2782 declare function CreateMailslotW(byval lpName as LPCWSTR, byval nMaxMessageSize as DWORD, byval lReadTimeout as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as HANDLE
 2783 declare function GetMailslotInfo(byval hMailslot as HANDLE, byval lpMaxMessageSize as LPDWORD, byval lpNextSize as LPDWORD, byval lpMessageCount as LPDWORD, byval lpReadTimeout as LPDWORD) as WINBOOL
 2784 declare function SetMailslotInfo(byval hMailslot as HANDLE, byval lReadTimeout as DWORD) as WINBOOL
 2785 declare function EncryptFileA(byval lpFileName as LPCSTR) as WINBOOL
 2786 declare function EncryptFileW(byval lpFileName as LPCWSTR) as WINBOOL
 2787 declare function DecryptFileA(byval lpFileName as LPCSTR, byval dwReserved as DWORD) as WINBOOL
 2788 declare function DecryptFileW(byval lpFileName as LPCWSTR, byval dwReserved as DWORD) as WINBOOL
 2789 declare function FileEncryptionStatusA(byval lpFileName as LPCSTR, byval lpStatus as LPDWORD) as WINBOOL
 2790 declare function FileEncryptionStatusW(byval lpFileName as LPCWSTR, byval lpStatus as LPDWORD) as WINBOOL
 2791 declare function OpenEncryptedFileRawA(byval lpFileName as LPCSTR, byval ulFlags as ULONG, byval pvContext as PVOID ptr) as DWORD
 2792 declare function OpenEncryptedFileRawW(byval lpFileName as LPCWSTR, byval ulFlags as ULONG, byval pvContext as PVOID ptr) as DWORD
 2793 declare function ReadEncryptedFileRaw(byval pfExportCallback as PFE_EXPORT_FUNC, byval pvCallbackContext as PVOID, byval pvContext as PVOID) as DWORD
 2794 declare function WriteEncryptedFileRaw(byval pfImportCallback as PFE_IMPORT_FUNC, byval pvCallbackContext as PVOID, byval pvContext as PVOID) as DWORD
 2795 declare sub CloseEncryptedFileRaw(byval pvContext as PVOID)
 2796 declare function lstrcmpA(byval lpString1 as LPCSTR, byval lpString2 as LPCSTR) as long
 2797 declare function lstrcmpW(byval lpString1 as LPCWSTR, byval lpString2 as LPCWSTR) as long
 2798 declare function lstrcmpiA(byval lpString1 as LPCSTR, byval lpString2 as LPCSTR) as long
 2799 declare function lstrcmpiW(byval lpString1 as LPCWSTR, byval lpString2 as LPCWSTR) as long
 2800 declare function lstrcpynA(byval lpString1 as LPSTR, byval lpString2 as LPCSTR, byval iMaxLength as long) as LPSTR
 2801 declare function lstrcpynW(byval lpString1 as LPWSTR, byval lpString2 as LPCWSTR, byval iMaxLength as long) as LPWSTR
 2802 declare function lstrcpyA(byval lpString1 as LPSTR, byval lpString2 as LPCSTR) as LPSTR
 2803 declare function lstrcpyW(byval lpString1 as LPWSTR, byval lpString2 as LPCWSTR) as LPWSTR
 2804 declare function lstrcatA(byval lpString1 as LPSTR, byval lpString2 as LPCSTR) as LPSTR
 2805 declare function lstrcatW(byval lpString1 as LPWSTR, byval lpString2 as LPCWSTR) as LPWSTR
 2806 declare function lstrlenA(byval lpString as LPCSTR) as long
 2807 declare function lstrlenW(byval lpString as LPCWSTR) as long
 2808 declare function OpenFile(byval lpFileName as LPCSTR, byval lpReOpenBuff as LPOFSTRUCT, byval uStyle as UINT) as HFILE
 2809 declare function _lopen(byval lpPathName as LPCSTR, byval iReadWrite as long) as HFILE
 2810 declare function _lcreat(byval lpPathName as LPCSTR, byval iAttribute as long) as HFILE
 2811 declare function _lread(byval hFile as HFILE, byval lpBuffer as LPVOID, byval uBytes as UINT) as UINT
 2812 declare function _lwrite(byval hFile as HFILE, byval lpBuffer as LPCCH, byval uBytes as UINT) as UINT
 2813 declare function _hread(byval hFile as HFILE, byval lpBuffer as LPVOID, byval lBytes as long) as long
 2814 declare function _hwrite(byval hFile as HFILE, byval lpBuffer as LPCCH, byval lBytes as long) as long
 2815 declare function _lclose(byval hFile as HFILE) as HFILE
 2816 declare function _llseek(byval hFile as HFILE, byval lOffset as LONG, byval iOrigin as long) as LONG
 2817 declare function IsTextUnicode(byval lpv as const any ptr, byval iSize as long, byval lpiResult as LPINT) as WINBOOL
 2818 declare function BackupRead(byval hFile as HANDLE, byval lpBuffer as LPBYTE, byval nNumberOfBytesToRead as DWORD, byval lpNumberOfBytesRead as LPDWORD, byval bAbort as WINBOOL, byval bProcessSecurity as WINBOOL, byval lpContext as LPVOID ptr) as WINBOOL
 2819 declare function BackupSeek(byval hFile as HANDLE, byval dwLowBytesToSeek as DWORD, byval dwHighBytesToSeek as DWORD, byval lpdwLowByteSeeked as LPDWORD, byval lpdwHighByteSeeked as LPDWORD, byval lpContext as LPVOID ptr) as WINBOOL
 2820 declare function BackupWrite(byval hFile as HANDLE, byval lpBuffer as LPBYTE, byval nNumberOfBytesToWrite as DWORD, byval lpNumberOfBytesWritten as LPDWORD, byval bAbort as WINBOOL, byval bProcessSecurity as WINBOOL, byval lpContext as LPVOID ptr) as WINBOOL
 2821 
 2822 #ifdef UNICODE
 2823     declare function CreateMailslot alias "CreateMailslotW"(byval lpName as LPCWSTR, byval nMaxMessageSize as DWORD, byval lReadTimeout as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as HANDLE
 2824     declare function EncryptFile alias "EncryptFileW"(byval lpFileName as LPCWSTR) as WINBOOL
 2825     declare function DecryptFile alias "DecryptFileW"(byval lpFileName as LPCWSTR, byval dwReserved as DWORD) as WINBOOL
 2826     declare function FileEncryptionStatus alias "FileEncryptionStatusW"(byval lpFileName as LPCWSTR, byval lpStatus as LPDWORD) as WINBOOL
 2827     declare function OpenEncryptedFileRaw alias "OpenEncryptedFileRawW"(byval lpFileName as LPCWSTR, byval ulFlags as ULONG, byval pvContext as PVOID ptr) as DWORD
 2828     declare function lstrcmp alias "lstrcmpW"(byval lpString1 as LPCWSTR, byval lpString2 as LPCWSTR) as long
 2829     declare function lstrcmpi alias "lstrcmpiW"(byval lpString1 as LPCWSTR, byval lpString2 as LPCWSTR) as long
 2830     declare function lstrcpyn alias "lstrcpynW"(byval lpString1 as LPWSTR, byval lpString2 as LPCWSTR, byval iMaxLength as long) as LPWSTR
 2831     #define lstrcpy lstrcpyW
 2832     #define lstrcat lstrcatW
 2833     declare function lstrlen alias "lstrlenW"(byval lpString as LPCWSTR) as long
 2834 #else
 2835     declare function CreateMailslot alias "CreateMailslotA"(byval lpName as LPCSTR, byval nMaxMessageSize as DWORD, byval lReadTimeout as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as HANDLE
 2836     declare function EncryptFile alias "EncryptFileA"(byval lpFileName as LPCSTR) as WINBOOL
 2837     declare function DecryptFile alias "DecryptFileA"(byval lpFileName as LPCSTR, byval dwReserved as DWORD) as WINBOOL
 2838     declare function FileEncryptionStatus alias "FileEncryptionStatusA"(byval lpFileName as LPCSTR, byval lpStatus as LPDWORD) as WINBOOL
 2839     declare function OpenEncryptedFileRaw alias "OpenEncryptedFileRawA"(byval lpFileName as LPCSTR, byval ulFlags as ULONG, byval pvContext as PVOID ptr) as DWORD
 2840     declare function lstrcmp alias "lstrcmpA"(byval lpString1 as LPCSTR, byval lpString2 as LPCSTR) as long
 2841     declare function lstrcmpi alias "lstrcmpiA"(byval lpString1 as LPCSTR, byval lpString2 as LPCSTR) as long
 2842     declare function lstrcpyn alias "lstrcpynA"(byval lpString1 as LPSTR, byval lpString2 as LPCSTR, byval iMaxLength as long) as LPSTR
 2843     #define lstrcpy lstrcpyA
 2844     #define lstrcat lstrcatA
 2845     declare function lstrlen alias "lstrlenA"(byval lpString as LPCSTR) as long
 2846 #endif
 2847 
 2848 type _WIN32_STREAM_ID
 2849     dwStreamId as DWORD
 2850     dwStreamAttributes as DWORD
 2851     Size as LARGE_INTEGER
 2852     dwStreamNameSize as DWORD
 2853     cStreamName as wstring * 1
 2854 end type
 2855 
 2856 type WIN32_STREAM_ID as _WIN32_STREAM_ID
 2857 type LPWIN32_STREAM_ID as _WIN32_STREAM_ID ptr
 2858 const BACKUP_INVALID = &h00000000
 2859 const BACKUP_DATA = &h00000001
 2860 const BACKUP_EA_DATA = &h00000002
 2861 const BACKUP_SECURITY_DATA = &h00000003
 2862 const BACKUP_ALTERNATE_DATA = &h00000004
 2863 const BACKUP_LINK = &h00000005
 2864 const BACKUP_PROPERTY_DATA = &h00000006
 2865 const BACKUP_OBJECT_ID = &h00000007
 2866 const BACKUP_REPARSE_DATA = &h00000008
 2867 const BACKUP_SPARSE_BLOCK = &h00000009
 2868 const BACKUP_TXFS_DATA = &h0000000a
 2869 const STREAM_NORMAL_ATTRIBUTE = &h00000000
 2870 const STREAM_MODIFIED_WHEN_READ = &h00000001
 2871 const STREAM_CONTAINS_SECURITY = &h00000002
 2872 const STREAM_CONTAINS_PROPERTIES = &h00000004
 2873 const STREAM_SPARSE_ATTRIBUTE = &h00000008
 2874 const STARTF_USESHOWWINDOW = &h00000001
 2875 const STARTF_USESIZE = &h00000002
 2876 const STARTF_USEPOSITION = &h00000004
 2877 const STARTF_USECOUNTCHARS = &h00000008
 2878 const STARTF_USEFILLATTRIBUTE = &h00000010
 2879 const STARTF_RUNFULLSCREEN = &h00000020
 2880 const STARTF_FORCEONFEEDBACK = &h00000040
 2881 const STARTF_FORCEOFFFEEDBACK = &h00000080
 2882 const STARTF_USESTDHANDLES = &h00000100
 2883 const STARTF_USEHOTKEY = &h00000200
 2884 const STARTF_TITLEISLINKNAME = &h00000800
 2885 const STARTF_TITLEISAPPID = &h00001000
 2886 const STARTF_PREVENTPINNING = &h00002000
 2887 
 2888 #if _WIN32_WINNT >= &h0600
 2889     type _STARTUPINFOEXA
 2890         StartupInfo as STARTUPINFOA
 2891         lpAttributeList as LPPROC_THREAD_ATTRIBUTE_LIST
 2892     end type
 2893 
 2894     type STARTUPINFOEXA as _STARTUPINFOEXA
 2895     type LPSTARTUPINFOEXA as _STARTUPINFOEXA ptr
 2896 
 2897     type _STARTUPINFOEXW
 2898         StartupInfo as STARTUPINFOW
 2899         lpAttributeList as LPPROC_THREAD_ATTRIBUTE_LIST
 2900     end type
 2901 
 2902     type STARTUPINFOEXW as _STARTUPINFOEXW
 2903     type LPSTARTUPINFOEXW as _STARTUPINFOEXW ptr
 2904 #endif
 2905 
 2906 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 2907     type STARTUPINFOEX as STARTUPINFOEXW
 2908     type LPSTARTUPINFOEX as LPSTARTUPINFOEXW
 2909 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 2910     type STARTUPINFOEX as STARTUPINFOEXA
 2911     type LPSTARTUPINFOEX as LPSTARTUPINFOEXA
 2912 #endif
 2913 
 2914 const SHUTDOWN_NORETRY = &h1
 2915 declare function CreateSemaphoreW(byval lpSemaphoreAttributes as LPSECURITY_ATTRIBUTES, byval lInitialCount as LONG, byval lMaximumCount as LONG, byval lpName as LPCWSTR) as HANDLE
 2916 
 2917 #ifdef UNICODE
 2918     declare function CreateSemaphore alias "CreateSemaphoreW"(byval lpSemaphoreAttributes as LPSECURITY_ATTRIBUTES, byval lInitialCount as LONG, byval lMaximumCount as LONG, byval lpName as LPCWSTR) as HANDLE
 2919 #endif
 2920 
 2921 declare function LoadLibraryW(byval lpLibFileName as LPCWSTR) as HMODULE
 2922 declare function OpenMutexA(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 2923 declare function CreateSemaphoreA(byval lpSemaphoreAttributes as LPSECURITY_ATTRIBUTES, byval lInitialCount as LONG, byval lMaximumCount as LONG, byval lpName as LPCSTR) as HANDLE
 2924 
 2925 #ifndef UNICODE
 2926     declare function CreateSemaphore alias "CreateSemaphoreA"(byval lpSemaphoreAttributes as LPSECURITY_ATTRIBUTES, byval lInitialCount as LONG, byval lMaximumCount as LONG, byval lpName as LPCSTR) as HANDLE
 2927 #endif
 2928 
 2929 declare function OpenSemaphoreA(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 2930 declare function CreateWaitableTimerA(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval lpTimerName as LPCSTR) as HANDLE
 2931 declare function CreateWaitableTimerW(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval lpTimerName as LPCWSTR) as HANDLE
 2932 declare function OpenWaitableTimerA(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpTimerName as LPCSTR) as HANDLE
 2933 declare function CreateFileMappingA(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCSTR) as HANDLE
 2934 
 2935 #if _WIN32_WINNT >= &h0600
 2936     declare function CreateSemaphoreExA(byval lpSemaphoreAttributes as LPSECURITY_ATTRIBUTES, byval lInitialCount as LONG, byval lMaximumCount as LONG, byval lpName as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 2937     declare function CreateWaitableTimerExA(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval lpTimerName as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 2938     declare function CreateFileMappingNumaA(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCSTR, byval nndPreferred as DWORD) as HANDLE
 2939 #endif
 2940 
 2941 declare function OpenFileMappingA(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 2942 declare function GetLogicalDriveStringsA(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 2943 declare function LoadLibraryA(byval lpLibFileName as LPCSTR) as HMODULE
 2944 
 2945 #ifdef UNICODE
 2946     declare function CreateWaitableTimer alias "CreateWaitableTimerW"(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval lpTimerName as LPCWSTR) as HANDLE
 2947     declare function LoadLibrary alias "LoadLibraryW"(byval lpLibFileName as LPCWSTR) as HMODULE
 2948 #endif
 2949 
 2950 #if defined(UNICODE) and (_WIN32_WINNT = &h0602)
 2951     declare function LoadPackagedLibrary(byval lpwLibFileName as LPCWSTR, byval Reserved as DWORD) as HMODULE
 2952 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 2953     declare function OpenMutex alias "OpenMutexA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 2954     declare function OpenSemaphore alias "OpenSemaphoreA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 2955     declare function OpenWaitableTimer alias "OpenWaitableTimerA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpTimerName as LPCSTR) as HANDLE
 2956     declare function CreateFileMapping alias "CreateFileMappingA"(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCSTR) as HANDLE
 2957     declare function OpenFileMapping alias "OpenFileMappingA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 2958     declare function GetLogicalDriveStrings alias "GetLogicalDriveStringsA"(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 2959     declare function CreateWaitableTimer alias "CreateWaitableTimerA"(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval lpTimerName as LPCSTR) as HANDLE
 2960     declare function LoadLibrary alias "LoadLibraryA"(byval lpLibFileName as LPCSTR) as HMODULE
 2961     declare function CreateSemaphoreEx alias "CreateSemaphoreExA"(byval lpSemaphoreAttributes as LPSECURITY_ATTRIBUTES, byval lInitialCount as LONG, byval lMaximumCount as LONG, byval lpName as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 2962     declare function CreateWaitableTimerEx alias "CreateWaitableTimerExA"(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval lpTimerName as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as DWORD) as HANDLE
 2963     declare function CreateFileMappingNuma alias "CreateFileMappingNumaA"(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCSTR, byval nndPreferred as DWORD) as HANDLE
 2964 #endif
 2965 
 2966 #if (not defined(UNICODE)) and (_WIN32_WINNT = &h0602)
 2967     declare function LoadPackagedLibrary(byval lpwLibFileName as LPCWSTR, byval Reserved as DWORD) as HMODULE
 2968 #endif
 2969 
 2970 #if _WIN32_WINNT >= &h0600
 2971     const PROCESS_NAME_NATIVE = &h00000001
 2972     declare function QueryFullProcessImageNameA(byval hProcess as HANDLE, byval dwFlags as DWORD, byval lpExeName as LPSTR, byval lpdwSize as PDWORD) as WINBOOL
 2973     declare function QueryFullProcessImageNameW(byval hProcess as HANDLE, byval dwFlags as DWORD, byval lpExeName as LPWSTR, byval lpdwSize as PDWORD) as WINBOOL
 2974 #endif
 2975 
 2976 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 2977     declare function QueryFullProcessImageName alias "QueryFullProcessImageNameW"(byval hProcess as HANDLE, byval dwFlags as DWORD, byval lpExeName as LPWSTR, byval lpdwSize as PDWORD) as WINBOOL
 2978 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 2979     declare function QueryFullProcessImageName alias "QueryFullProcessImageNameA"(byval hProcess as HANDLE, byval dwFlags as DWORD, byval lpExeName as LPSTR, byval lpdwSize as PDWORD) as WINBOOL
 2980 #endif
 2981 
 2982 #if _WIN32_WINNT >= &h0600
 2983     const PROC_THREAD_ATTRIBUTE_NUMBER = &h0000ffff
 2984     const PROC_THREAD_ATTRIBUTE_THREAD = &h00010000
 2985     const PROC_THREAD_ATTRIBUTE_INPUT = &h00020000
 2986     const PROC_THREAD_ATTRIBUTE_ADDITIVE = &h00040000
 2987 
 2988     type _PROC_THREAD_ATTRIBUTE_NUM as long
 2989     enum
 2990         ProcThreadAttributeParentProcess = 0
 2991         ProcThreadAttributeHandleList = 2
 2992 
 2993         #if _WIN32_WINNT >= &h0601
 2994             ProcThreadAttributeGroupAffinity = 3
 2995             ProcThreadAttributePreferredNode = 4
 2996             ProcThreadAttributeIdealProcessor = 5
 2997             ProcThreadAttributeUmsThread = 6
 2998             ProcThreadAttributeMitigationPolicy = 7
 2999         #endif
 3000 
 3001         #if _WIN32_WINNT = &h0602
 3002             ProcThreadAttributeSecurityCapabilities = 9
 3003         #endif
 3004     end enum
 3005 
 3006     type PROC_THREAD_ATTRIBUTE_NUM as _PROC_THREAD_ATTRIBUTE_NUM
 3007     #define ProcThreadAttributeValue(Number, Thread, Input, Additive) (((((Number) and PROC_THREAD_ATTRIBUTE_NUMBER) or iif(Thread <> FALSE, PROC_THREAD_ATTRIBUTE_THREAD, 0)) or iif(Input <> FALSE, PROC_THREAD_ATTRIBUTE_INPUT, 0)) or iif(Additive <> FALSE, PROC_THREAD_ATTRIBUTE_ADDITIVE, 0))
 3008     #define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS ProcThreadAttributeValue(ProcThreadAttributeParentProcess, FALSE, CTRUE, FALSE)
 3009     #define PROC_THREAD_ATTRIBUTE_HANDLE_LIST ProcThreadAttributeValue(ProcThreadAttributeHandleList, FALSE, CTRUE, FALSE)
 3010 #endif
 3011 
 3012 #if _WIN32_WINNT >= &h0601
 3013     #define PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY ProcThreadAttributeValue(ProcThreadAttributeGroupAffinity, CTRUE, CTRUE, FALSE)
 3014     #define PROC_THREAD_ATTRIBUTE_PREFERRED_NODE ProcThreadAttributeValue(ProcThreadAttributePreferredNode, FALSE, CTRUE, FALSE)
 3015     #define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR ProcThreadAttributeValue(ProcThreadAttributeIdealProcessor, CTRUE, CTRUE, FALSE)
 3016     #define PROC_THREAD_ATTRIBUTE_UMS_THREAD ProcThreadAttributeValue(ProcThreadAttributeUmsThread, CTRUE, CTRUE, FALSE)
 3017     #define PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY ProcThreadAttributeValue(ProcThreadAttributeMitigationPolicy, FALSE, CTRUE, FALSE)
 3018     const PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE = &h01
 3019     const PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE = &h02
 3020     const PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE = &h04
 3021 #endif
 3022 
 3023 #if _WIN32_WINNT = &h0602
 3024     #define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES ProcThreadAttributeValue(ProcThreadAttributeSecurityCapabilities, FALSE, CTRUE, FALSE)
 3025     const PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_MASK = &h00000003 shl 8
 3026     const PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_DEFER = &h00000000 shl 8
 3027     const PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON = &h00000001 shl 8
 3028     const PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_OFF = &h00000002 shl 8
 3029     const PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_RELOCS = &h00000003 shl 8
 3030     const PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_MASK = &h00000003 shl 12
 3031     const PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_DEFER = &h00000000 shl 12
 3032     const PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON = &h00000001 shl 12
 3033     const PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_OFF = &h00000002 shl 12
 3034     const PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_RESERVED = &h00000003 shl 12
 3035     const PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_MASK = &h00000003 shl 16
 3036     const PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_DEFER = &h00000000 shl 16
 3037     const PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_ON = &h00000001 shl 16
 3038     const PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF = &h00000002 shl 16
 3039     const PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_RESERVED = &h00000003 shl 16
 3040     const PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_MASK = &h00000003 shl 20
 3041     const PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_DEFER = &h00000000 shl 20
 3042     const PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON = &h00000001 shl 20
 3043     const PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF = &h00000002 shl 20
 3044     const PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_RESERVED = &h00000003 shl 20
 3045     const PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_MASK = &h00000003 shl 24
 3046     const PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_DEFER = &h00000000 shl 24
 3047     const PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON = &h00000001 shl 24
 3048     const PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF = &h00000002 shl 24
 3049     const PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_RESERVED = &h00000003 shl 24
 3050     const PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_MASK = &h00000003 shl 28
 3051     const PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_DEFER = &h00000000 shl 28
 3052     const PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON = &h00000001 shl 28
 3053     const PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF = &h00000002 shl 28
 3054     const PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_RESERVED = &h00000003 shl 28
 3055     const PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_MASK = &h00000003ull shl 32
 3056     const PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_DEFER = &h00000000ull shl 32
 3057     const PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON = &h00000001ull shl 32
 3058     const PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF = &h00000002ull shl 32
 3059     const PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_RESERVED = &h00000003ull shl 32
 3060 #elseif (not defined(UNICODE)) and (_WIN32_WINNT <= &h0502)
 3061     declare function OpenMutex alias "OpenMutexA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 3062     declare function OpenSemaphore alias "OpenSemaphoreA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 3063     declare function OpenWaitableTimer alias "OpenWaitableTimerA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpTimerName as LPCSTR) as HANDLE
 3064     declare function CreateFileMapping alias "CreateFileMappingA"(byval hFile as HANDLE, byval lpFileMappingAttributes as LPSECURITY_ATTRIBUTES, byval flProtect as DWORD, byval dwMaximumSizeHigh as DWORD, byval dwMaximumSizeLow as DWORD, byval lpName as LPCSTR) as HANDLE
 3065     declare function OpenFileMapping alias "OpenFileMappingA"(byval dwDesiredAccess as DWORD, byval bInheritHandle as WINBOOL, byval lpName as LPCSTR) as HANDLE
 3066     declare function GetLogicalDriveStrings alias "GetLogicalDriveStringsA"(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 3067     declare function CreateWaitableTimer alias "CreateWaitableTimerA"(byval lpTimerAttributes as LPSECURITY_ATTRIBUTES, byval bManualReset as WINBOOL, byval lpTimerName as LPCSTR) as HANDLE
 3068     declare function LoadLibrary alias "LoadLibraryA"(byval lpLibFileName as LPCSTR) as HMODULE
 3069 #endif
 3070 
 3071 const ATOM_FLAG_GLOBAL = &h2
 3072 declare function GetProcessShutdownParameters(byval lpdwLevel as LPDWORD, byval lpdwFlags as LPDWORD) as WINBOOL
 3073 declare sub FatalAppExitA(byval uAction as UINT, byval lpMessageText as LPCSTR)
 3074 declare sub FatalAppExitW(byval uAction as UINT, byval lpMessageText as LPCWSTR)
 3075 declare sub GetStartupInfoA(byval lpStartupInfo as LPSTARTUPINFOA)
 3076 declare function GetFirmwareEnvironmentVariableA(byval lpName as LPCSTR, byval lpGuid as LPCSTR, byval pBuffer as PVOID, byval nSize as DWORD) as DWORD
 3077 declare function GetFirmwareEnvironmentVariableW(byval lpName as LPCWSTR, byval lpGuid as LPCWSTR, byval pBuffer as PVOID, byval nSize as DWORD) as DWORD
 3078 declare function SetFirmwareEnvironmentVariableA(byval lpName as LPCSTR, byval lpGuid as LPCSTR, byval pValue as PVOID, byval nSize as DWORD) as WINBOOL
 3079 declare function SetFirmwareEnvironmentVariableW(byval lpName as LPCWSTR, byval lpGuid as LPCWSTR, byval pValue as PVOID, byval nSize as DWORD) as WINBOOL
 3080 declare function FindResourceA(byval hModule as HMODULE, byval lpName as LPCSTR, byval lpType as LPCSTR) as HRSRC
 3081 declare function FindResourceW(byval hModule as HMODULE, byval lpName as LPCWSTR, byval lpType as LPCWSTR) as HRSRC
 3082 declare function FindResourceExA(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpName as LPCSTR, byval wLanguage as WORD) as HRSRC
 3083 declare function EnumResourceTypesA(byval hModule as HMODULE, byval lpEnumFunc as ENUMRESTYPEPROCA, byval lParam as LONG_PTR) as WINBOOL
 3084 declare function EnumResourceTypesW(byval hModule as HMODULE, byval lpEnumFunc as ENUMRESTYPEPROCW, byval lParam as LONG_PTR) as WINBOOL
 3085 declare function EnumResourceNamesA(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpEnumFunc as ENUMRESNAMEPROCA, byval lParam as LONG_PTR) as WINBOOL
 3086 declare function EnumResourceNamesW(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpEnumFunc as ENUMRESNAMEPROCW, byval lParam as LONG_PTR) as WINBOOL
 3087 declare function EnumResourceLanguagesA(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpName as LPCSTR, byval lpEnumFunc as ENUMRESLANGPROCA, byval lParam as LONG_PTR) as WINBOOL
 3088 declare function EnumResourceLanguagesW(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpName as LPCWSTR, byval lpEnumFunc as ENUMRESLANGPROCW, byval lParam as LONG_PTR) as WINBOOL
 3089 declare function BeginUpdateResourceA(byval pFileName as LPCSTR, byval bDeleteExistingResources as WINBOOL) as HANDLE
 3090 declare function BeginUpdateResourceW(byval pFileName as LPCWSTR, byval bDeleteExistingResources as WINBOOL) as HANDLE
 3091 declare function UpdateResourceA(byval hUpdate as HANDLE, byval lpType as LPCSTR, byval lpName as LPCSTR, byval wLanguage as WORD, byval lpData as LPVOID, byval cb as DWORD) as WINBOOL
 3092 declare function UpdateResourceW(byval hUpdate as HANDLE, byval lpType as LPCWSTR, byval lpName as LPCWSTR, byval wLanguage as WORD, byval lpData as LPVOID, byval cb as DWORD) as WINBOOL
 3093 declare function EndUpdateResourceA(byval hUpdate as HANDLE, byval fDiscard as WINBOOL) as WINBOOL
 3094 declare function EndUpdateResourceW(byval hUpdate as HANDLE, byval fDiscard as WINBOOL) as WINBOOL
 3095 
 3096 #if _WIN32_WINNT = &h0602
 3097     declare function GetFirmwareEnvironmentVariableExA(byval lpName as LPCSTR, byval lpGuid as LPCSTR, byval pBuffer as PVOID, byval nSize as DWORD, byval pdwAttribubutes as PDWORD) as DWORD
 3098     declare function GetFirmwareEnvironmentVariableExW(byval lpName as LPCWSTR, byval lpGuid as LPCWSTR, byval pBuffer as PVOID, byval nSize as DWORD, byval pdwAttribubutes as PDWORD) as DWORD
 3099     declare function SetFirmwareEnvironmentVariableExA(byval lpName as LPCSTR, byval lpGuid as LPCSTR, byval pValue as PVOID, byval nSize as DWORD, byval dwAttributes as DWORD) as WINBOOL
 3100     declare function SetFirmwareEnvironmentVariableExW(byval lpName as LPCWSTR, byval lpGuid as LPCWSTR, byval pValue as PVOID, byval nSize as DWORD, byval dwAttributes as DWORD) as WINBOOL
 3101     declare function GetFirmwareType(byval FirmwareType as PFIRMWARE_TYPE) as WINBOOL
 3102     declare function IsNativeVhdBoot(byval NativeVhdBoot as PBOOL) as WINBOOL
 3103 #endif
 3104 
 3105 declare function GlobalAddAtomA(byval lpString as LPCSTR) as ATOM
 3106 declare function GlobalAddAtomW(byval lpString as LPCWSTR) as ATOM
 3107 declare function GlobalAddAtomExA(byval lpString as LPCSTR, byval Flags as DWORD) as ATOM
 3108 declare function GlobalAddAtomExW(byval lpString as LPCWSTR, byval Flags as DWORD) as ATOM
 3109 declare function GlobalFindAtomA(byval lpString as LPCSTR) as ATOM
 3110 declare function GlobalFindAtomW(byval lpString as LPCWSTR) as ATOM
 3111 declare function GlobalGetAtomNameA(byval nAtom as ATOM, byval lpBuffer as LPSTR, byval nSize as long) as UINT
 3112 declare function GlobalGetAtomNameW(byval nAtom as ATOM, byval lpBuffer as LPWSTR, byval nSize as long) as UINT
 3113 declare function AddAtomA(byval lpString as LPCSTR) as ATOM
 3114 declare function AddAtomW(byval lpString as LPCWSTR) as ATOM
 3115 declare function FindAtomA(byval lpString as LPCSTR) as ATOM
 3116 declare function FindAtomW(byval lpString as LPCWSTR) as ATOM
 3117 declare function GetAtomNameA(byval nAtom as ATOM, byval lpBuffer as LPSTR, byval nSize as long) as UINT
 3118 declare function GetAtomNameW(byval nAtom as ATOM, byval lpBuffer as LPWSTR, byval nSize as long) as UINT
 3119 declare function GetProfileIntA(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval nDefault as INT_) as UINT
 3120 declare function GetProfileIntW(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval nDefault as INT_) as UINT
 3121 declare function GetProfileStringA(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval lpDefault as LPCSTR, byval lpReturnedString as LPSTR, byval nSize as DWORD) as DWORD
 3122 declare function GetProfileStringW(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval lpDefault as LPCWSTR, byval lpReturnedString as LPWSTR, byval nSize as DWORD) as DWORD
 3123 declare function WriteProfileStringA(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval lpString as LPCSTR) as WINBOOL
 3124 declare function WriteProfileStringW(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval lpString as LPCWSTR) as WINBOOL
 3125 declare function GetProfileSectionA(byval lpAppName as LPCSTR, byval lpReturnedString as LPSTR, byval nSize as DWORD) as DWORD
 3126 declare function GetProfileSectionW(byval lpAppName as LPCWSTR, byval lpReturnedString as LPWSTR, byval nSize as DWORD) as DWORD
 3127 declare function WriteProfileSectionA(byval lpAppName as LPCSTR, byval lpString as LPCSTR) as WINBOOL
 3128 declare function WriteProfileSectionW(byval lpAppName as LPCWSTR, byval lpString as LPCWSTR) as WINBOOL
 3129 declare function GetPrivateProfileIntA(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval nDefault as INT_, byval lpFileName as LPCSTR) as UINT
 3130 declare function GetPrivateProfileIntW(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval nDefault as INT_, byval lpFileName as LPCWSTR) as UINT
 3131 declare function GetPrivateProfileStringA(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval lpDefault as LPCSTR, byval lpReturnedString as LPSTR, byval nSize as DWORD, byval lpFileName as LPCSTR) as DWORD
 3132 declare function GetPrivateProfileStringW(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval lpDefault as LPCWSTR, byval lpReturnedString as LPWSTR, byval nSize as DWORD, byval lpFileName as LPCWSTR) as DWORD
 3133 declare function WritePrivateProfileStringA(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval lpString as LPCSTR, byval lpFileName as LPCSTR) as WINBOOL
 3134 declare function WritePrivateProfileStringW(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval lpString as LPCWSTR, byval lpFileName as LPCWSTR) as WINBOOL
 3135 declare function GetPrivateProfileSectionA(byval lpAppName as LPCSTR, byval lpReturnedString as LPSTR, byval nSize as DWORD, byval lpFileName as LPCSTR) as DWORD
 3136 declare function GetPrivateProfileSectionW(byval lpAppName as LPCWSTR, byval lpReturnedString as LPWSTR, byval nSize as DWORD, byval lpFileName as LPCWSTR) as DWORD
 3137 declare function WritePrivateProfileSectionA(byval lpAppName as LPCSTR, byval lpString as LPCSTR, byval lpFileName as LPCSTR) as WINBOOL
 3138 declare function WritePrivateProfileSectionW(byval lpAppName as LPCWSTR, byval lpString as LPCWSTR, byval lpFileName as LPCWSTR) as WINBOOL
 3139 declare function GetPrivateProfileSectionNamesA(byval lpszReturnBuffer as LPSTR, byval nSize as DWORD, byval lpFileName as LPCSTR) as DWORD
 3140 declare function GetPrivateProfileSectionNamesW(byval lpszReturnBuffer as LPWSTR, byval nSize as DWORD, byval lpFileName as LPCWSTR) as DWORD
 3141 declare function GetPrivateProfileStructA(byval lpszSection as LPCSTR, byval lpszKey as LPCSTR, byval lpStruct as LPVOID, byval uSizeStruct as UINT, byval szFile as LPCSTR) as WINBOOL
 3142 declare function GetPrivateProfileStructW(byval lpszSection as LPCWSTR, byval lpszKey as LPCWSTR, byval lpStruct as LPVOID, byval uSizeStruct as UINT, byval szFile as LPCWSTR) as WINBOOL
 3143 declare function WritePrivateProfileStructA(byval lpszSection as LPCSTR, byval lpszKey as LPCSTR, byval lpStruct as LPVOID, byval uSizeStruct as UINT, byval szFile as LPCSTR) as WINBOOL
 3144 declare function WritePrivateProfileStructW(byval lpszSection as LPCWSTR, byval lpszKey as LPCWSTR, byval lpStruct as LPVOID, byval uSizeStruct as UINT, byval szFile as LPCWSTR) as WINBOOL
 3145 declare function GetTempPathA(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 3146 declare function GetTempFileNameA(byval lpPathName as LPCSTR, byval lpPrefixString as LPCSTR, byval uUnique as UINT, byval lpTempFileName as LPSTR) as UINT
 3147 
 3148 #ifdef UNICODE
 3149     declare sub FatalAppExit alias "FatalAppExitW"(byval uAction as UINT, byval lpMessageText as LPCWSTR)
 3150     declare function GetFirmwareEnvironmentVariable alias "GetFirmwareEnvironmentVariableW"(byval lpName as LPCWSTR, byval lpGuid as LPCWSTR, byval pBuffer as PVOID, byval nSize as DWORD) as DWORD
 3151     declare function SetFirmwareEnvironmentVariable alias "SetFirmwareEnvironmentVariableW"(byval lpName as LPCWSTR, byval lpGuid as LPCWSTR, byval pValue as PVOID, byval nSize as DWORD) as WINBOOL
 3152     declare function FindResource alias "FindResourceW"(byval hModule as HMODULE, byval lpName as LPCWSTR, byval lpType as LPCWSTR) as HRSRC
 3153     declare function EnumResourceTypes alias "EnumResourceTypesW"(byval hModule as HMODULE, byval lpEnumFunc as ENUMRESTYPEPROCW, byval lParam as LONG_PTR) as WINBOOL
 3154     declare function EnumResourceNames alias "EnumResourceNamesW"(byval hModule as HMODULE, byval lpType as LPCWSTR, byval lpEnumFunc as ENUMRESNAMEPROCW, byval lParam as LONG_PTR) as WINBOOL
 3155     #define EnumResourceLanguages EnumResourceLanguagesW
 3156     declare function BeginUpdateResource alias "BeginUpdateResourceW"(byval pFileName as LPCWSTR, byval bDeleteExistingResources as WINBOOL) as HANDLE
 3157     declare function UpdateResource alias "UpdateResourceW"(byval hUpdate as HANDLE, byval lpType as LPCWSTR, byval lpName as LPCWSTR, byval wLanguage as WORD, byval lpData as LPVOID, byval cb as DWORD) as WINBOOL
 3158     declare function EndUpdateResource alias "EndUpdateResourceW"(byval hUpdate as HANDLE, byval fDiscard as WINBOOL) as WINBOOL
 3159     declare function GlobalAddAtom alias "GlobalAddAtomW"(byval lpString as LPCWSTR) as ATOM
 3160     declare function GlobalAddAtomEx alias "GlobalAddAtomExW"(byval lpString as LPCWSTR, byval Flags as DWORD) as ATOM
 3161     declare function GlobalFindAtom alias "GlobalFindAtomW"(byval lpString as LPCWSTR) as ATOM
 3162     declare function GlobalGetAtomName alias "GlobalGetAtomNameW"(byval nAtom as ATOM, byval lpBuffer as LPWSTR, byval nSize as long) as UINT
 3163     declare function AddAtom alias "AddAtomW"(byval lpString as LPCWSTR) as ATOM
 3164     declare function FindAtom alias "FindAtomW"(byval lpString as LPCWSTR) as ATOM
 3165     declare function GetAtomName alias "GetAtomNameW"(byval nAtom as ATOM, byval lpBuffer as LPWSTR, byval nSize as long) as UINT
 3166     declare function GetProfileInt alias "GetProfileIntW"(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval nDefault as INT_) as UINT
 3167     declare function GetProfileString alias "GetProfileStringW"(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval lpDefault as LPCWSTR, byval lpReturnedString as LPWSTR, byval nSize as DWORD) as DWORD
 3168     declare function WriteProfileString alias "WriteProfileStringW"(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval lpString as LPCWSTR) as WINBOOL
 3169     declare function GetProfileSection alias "GetProfileSectionW"(byval lpAppName as LPCWSTR, byval lpReturnedString as LPWSTR, byval nSize as DWORD) as DWORD
 3170     declare function WriteProfileSection alias "WriteProfileSectionW"(byval lpAppName as LPCWSTR, byval lpString as LPCWSTR) as WINBOOL
 3171     declare function GetPrivateProfileInt alias "GetPrivateProfileIntW"(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval nDefault as INT_, byval lpFileName as LPCWSTR) as UINT
 3172     declare function GetPrivateProfileString alias "GetPrivateProfileStringW"(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval lpDefault as LPCWSTR, byval lpReturnedString as LPWSTR, byval nSize as DWORD, byval lpFileName as LPCWSTR) as DWORD
 3173     declare function WritePrivateProfileString alias "WritePrivateProfileStringW"(byval lpAppName as LPCWSTR, byval lpKeyName as LPCWSTR, byval lpString as LPCWSTR, byval lpFileName as LPCWSTR) as WINBOOL
 3174     declare function GetPrivateProfileSection alias "GetPrivateProfileSectionW"(byval lpAppName as LPCWSTR, byval lpReturnedString as LPWSTR, byval nSize as DWORD, byval lpFileName as LPCWSTR) as DWORD
 3175     declare function WritePrivateProfileSection alias "WritePrivateProfileSectionW"(byval lpAppName as LPCWSTR, byval lpString as LPCWSTR, byval lpFileName as LPCWSTR) as WINBOOL
 3176     declare function GetPrivateProfileSectionNames alias "GetPrivateProfileSectionNamesW"(byval lpszReturnBuffer as LPWSTR, byval nSize as DWORD, byval lpFileName as LPCWSTR) as DWORD
 3177     declare function GetPrivateProfileStruct alias "GetPrivateProfileStructW"(byval lpszSection as LPCWSTR, byval lpszKey as LPCWSTR, byval lpStruct as LPVOID, byval uSizeStruct as UINT, byval szFile as LPCWSTR) as WINBOOL
 3178     declare function WritePrivateProfileStruct alias "WritePrivateProfileStructW"(byval lpszSection as LPCWSTR, byval lpszKey as LPCWSTR, byval lpStruct as LPVOID, byval uSizeStruct as UINT, byval szFile as LPCWSTR) as WINBOOL
 3179 #endif
 3180 
 3181 #if defined(UNICODE) and (_WIN32_WINNT = &h0602)
 3182     declare function GetFirmwareEnvironmentVariableEx alias "GetFirmwareEnvironmentVariableExW"(byval lpName as LPCWSTR, byval lpGuid as LPCWSTR, byval pBuffer as PVOID, byval nSize as DWORD, byval pdwAttribubutes as PDWORD) as DWORD
 3183     declare function SetFirmwareEnvironmentVariableEx alias "SetFirmwareEnvironmentVariableExW"(byval lpName as LPCWSTR, byval lpGuid as LPCWSTR, byval pValue as PVOID, byval nSize as DWORD, byval dwAttributes as DWORD) as WINBOOL
 3184 #elseif not defined(UNICODE)
 3185     declare sub GetStartupInfo alias "GetStartupInfoA"(byval lpStartupInfo as LPSTARTUPINFOA)
 3186     declare function FindResourceEx alias "FindResourceExA"(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpName as LPCSTR, byval wLanguage as WORD) as HRSRC
 3187     declare function GetTempPath alias "GetTempPathA"(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 3188     declare function GetTempFileName alias "GetTempFileNameA"(byval lpPathName as LPCSTR, byval lpPrefixString as LPCSTR, byval uUnique as UINT, byval lpTempFileName as LPSTR) as UINT
 3189     declare sub FatalAppExit alias "FatalAppExitA"(byval uAction as UINT, byval lpMessageText as LPCSTR)
 3190     declare function GetFirmwareEnvironmentVariable alias "GetFirmwareEnvironmentVariableA"(byval lpName as LPCSTR, byval lpGuid as LPCSTR, byval pBuffer as PVOID, byval nSize as DWORD) as DWORD
 3191     declare function SetFirmwareEnvironmentVariable alias "SetFirmwareEnvironmentVariableA"(byval lpName as LPCSTR, byval lpGuid as LPCSTR, byval pValue as PVOID, byval nSize as DWORD) as WINBOOL
 3192     declare function FindResource alias "FindResourceA"(byval hModule as HMODULE, byval lpName as LPCSTR, byval lpType as LPCSTR) as HRSRC
 3193     declare function EnumResourceTypes alias "EnumResourceTypesA"(byval hModule as HMODULE, byval lpEnumFunc as ENUMRESTYPEPROCA, byval lParam as LONG_PTR) as WINBOOL
 3194     declare function EnumResourceNames alias "EnumResourceNamesA"(byval hModule as HMODULE, byval lpType as LPCSTR, byval lpEnumFunc as ENUMRESNAMEPROCA, byval lParam as LONG_PTR) as WINBOOL
 3195     #define EnumResourceLanguages EnumResourceLanguagesA
 3196     declare function BeginUpdateResource alias "BeginUpdateResourceA"(byval pFileName as LPCSTR, byval bDeleteExistingResources as WINBOOL) as HANDLE
 3197     declare function UpdateResource alias "UpdateResourceA"(byval hUpdate as HANDLE, byval lpType as LPCSTR, byval lpName as LPCSTR, byval wLanguage as WORD, byval lpData as LPVOID, byval cb as DWORD) as WINBOOL
 3198     declare function EndUpdateResource alias "EndUpdateResourceA"(byval hUpdate as HANDLE, byval fDiscard as WINBOOL) as WINBOOL
 3199     declare function GlobalAddAtom alias "GlobalAddAtomA"(byval lpString as LPCSTR) as ATOM
 3200     declare function GlobalAddAtomEx alias "GlobalAddAtomExA"(byval lpString as LPCSTR, byval Flags as DWORD) as ATOM
 3201     declare function GlobalFindAtom alias "GlobalFindAtomA"(byval lpString as LPCSTR) as ATOM
 3202     declare function GlobalGetAtomName alias "GlobalGetAtomNameA"(byval nAtom as ATOM, byval lpBuffer as LPSTR, byval nSize as long) as UINT
 3203     declare function AddAtom alias "AddAtomA"(byval lpString as LPCSTR) as ATOM
 3204     declare function FindAtom alias "FindAtomA"(byval lpString as LPCSTR) as ATOM
 3205     declare function GetAtomName alias "GetAtomNameA"(byval nAtom as ATOM, byval lpBuffer as LPSTR, byval nSize as long) as UINT
 3206     declare function GetProfileInt alias "GetProfileIntA"(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval nDefault as INT_) as UINT
 3207     declare function GetProfileString alias "GetProfileStringA"(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval lpDefault as LPCSTR, byval lpReturnedString as LPSTR, byval nSize as DWORD) as DWORD
 3208     declare function WriteProfileString alias "WriteProfileStringA"(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval lpString as LPCSTR) as WINBOOL
 3209     declare function GetProfileSection alias "GetProfileSectionA"(byval lpAppName as LPCSTR, byval lpReturnedString as LPSTR, byval nSize as DWORD) as DWORD
 3210     declare function WriteProfileSection alias "WriteProfileSectionA"(byval lpAppName as LPCSTR, byval lpString as LPCSTR) as WINBOOL
 3211     declare function GetPrivateProfileInt alias "GetPrivateProfileIntA"(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval nDefault as INT_, byval lpFileName as LPCSTR) as UINT
 3212     declare function GetPrivateProfileString alias "GetPrivateProfileStringA"(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval lpDefault as LPCSTR, byval lpReturnedString as LPSTR, byval nSize as DWORD, byval lpFileName as LPCSTR) as DWORD
 3213     declare function WritePrivateProfileString alias "WritePrivateProfileStringA"(byval lpAppName as LPCSTR, byval lpKeyName as LPCSTR, byval lpString as LPCSTR, byval lpFileName as LPCSTR) as WINBOOL
 3214     declare function GetPrivateProfileSection alias "GetPrivateProfileSectionA"(byval lpAppName as LPCSTR, byval lpReturnedString as LPSTR, byval nSize as DWORD, byval lpFileName as LPCSTR) as DWORD
 3215     declare function WritePrivateProfileSection alias "WritePrivateProfileSectionA"(byval lpAppName as LPCSTR, byval lpString as LPCSTR, byval lpFileName as LPCSTR) as WINBOOL
 3216     declare function GetPrivateProfileSectionNames alias "GetPrivateProfileSectionNamesA"(byval lpszReturnBuffer as LPSTR, byval nSize as DWORD, byval lpFileName as LPCSTR) as DWORD
 3217     declare function GetPrivateProfileStruct alias "GetPrivateProfileStructA"(byval lpszSection as LPCSTR, byval lpszKey as LPCSTR, byval lpStruct as LPVOID, byval uSizeStruct as UINT, byval szFile as LPCSTR) as WINBOOL
 3218     declare function WritePrivateProfileStruct alias "WritePrivateProfileStructA"(byval lpszSection as LPCSTR, byval lpszKey as LPCSTR, byval lpStruct as LPVOID, byval uSizeStruct as UINT, byval szFile as LPCSTR) as WINBOOL
 3219 #endif
 3220 
 3221 #if (not defined(UNICODE)) and (_WIN32_WINNT = &h0602)
 3222     declare function GetFirmwareEnvironmentVariableEx alias "GetFirmwareEnvironmentVariableExA"(byval lpName as LPCSTR, byval lpGuid as LPCSTR, byval pBuffer as PVOID, byval nSize as DWORD, byval pdwAttribubutes as PDWORD) as DWORD
 3223     declare function SetFirmwareEnvironmentVariableEx alias "SetFirmwareEnvironmentVariableExA"(byval lpName as LPCSTR, byval lpGuid as LPCSTR, byval pValue as PVOID, byval nSize as DWORD, byval dwAttributes as DWORD) as WINBOOL
 3224 #endif
 3225 
 3226 declare function GetSystemWow64DirectoryA(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 3227 declare function GetSystemWow64DirectoryW(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 3228 
 3229 #ifdef UNICODE
 3230     declare function GetSystemWow64Directory alias "GetSystemWow64DirectoryW"(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 3231 #else
 3232     declare function GetSystemWow64Directory alias "GetSystemWow64DirectoryA"(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 3233 #endif
 3234 
 3235 declare function Wow64EnableWow64FsRedirection(byval Wow64FsEnableRedirection as WINBOOLEAN) as WINBOOLEAN
 3236 type PGET_SYSTEM_WOW64_DIRECTORY_A as function(byval lpBuffer as LPSTR, byval uSize as UINT) as UINT
 3237 type PGET_SYSTEM_WOW64_DIRECTORY_W as function(byval lpBuffer as LPWSTR, byval uSize as UINT) as UINT
 3238 #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A "GetSystemWow64DirectoryA"
 3239 #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W wstr("GetSystemWow64DirectoryA")
 3240 #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T __TEXT("GetSystemWow64DirectoryA")
 3241 #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A "GetSystemWow64DirectoryW"
 3242 #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W wstr("GetSystemWow64DirectoryW")
 3243 #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T __TEXT("GetSystemWow64DirectoryW")
 3244 
 3245 #ifdef UNICODE
 3246     #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A
 3247     #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W
 3248     #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T
 3249 #else
 3250     #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A
 3251     #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W
 3252     #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T
 3253 #endif
 3254 
 3255 declare function SetDllDirectoryA(byval lpPathName as LPCSTR) as WINBOOL
 3256 declare function SetDllDirectoryW(byval lpPathName as LPCWSTR) as WINBOOL
 3257 declare function GetDllDirectoryA(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 3258 declare function GetDllDirectoryW(byval nBufferLength as DWORD, byval lpBuffer as LPWSTR) as DWORD
 3259 
 3260 #ifdef UNICODE
 3261     declare function SetDllDirectory alias "SetDllDirectoryW"(byval lpPathName as LPCWSTR) as WINBOOL
 3262     declare function GetDllDirectory alias "GetDllDirectoryW"(byval nBufferLength as DWORD, byval lpBuffer as LPWSTR) as DWORD
 3263 #else
 3264     declare function SetDllDirectory alias "SetDllDirectoryA"(byval lpPathName as LPCSTR) as WINBOOL
 3265     declare function GetDllDirectory alias "GetDllDirectoryA"(byval nBufferLength as DWORD, byval lpBuffer as LPSTR) as DWORD
 3266 #endif
 3267 
 3268 const BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE = &h1
 3269 const BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE = &h10000
 3270 const BASE_SEARCH_PATH_PERMANENT = &h8000
 3271 const BASE_SEARCH_PATH_INVALID_FLAGS = not &h18001
 3272 
 3273 declare function SetSearchPathMode(byval Flags as DWORD) as WINBOOL
 3274 declare function CreateDirectoryExA(byval lpTemplateDirectory as LPCSTR, byval lpNewDirectory as LPCSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
 3275 declare function CreateDirectoryExW(byval lpTemplateDirectory as LPCWSTR, byval lpNewDirectory as LPCWSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
 3276 
 3277 #ifdef UNICODE
 3278     declare function CreateDirectoryEx alias "CreateDirectoryExW"(byval lpTemplateDirectory as LPCWSTR, byval lpNewDirectory as LPCWSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
 3279 #elseif (not defined(UNICODE)) and (defined(__FB_64BIT__) or ((not defined(__FB_64BIT__)) and (_WIN32_WINNT >= &h0600)))
 3280     declare function CreateDirectoryEx alias "CreateDirectoryExA"(byval lpTemplateDirectory as LPCSTR, byval lpNewDirectory as LPCSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
 3281 #endif
 3282 
 3283 #if _WIN32_WINNT >= &h0600
 3284     declare function CreateDirectoryTransactedA(byval lpTemplateDirectory as LPCSTR, byval lpNewDirectory as LPCSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval hTransaction as HANDLE) as WINBOOL
 3285     declare function CreateDirectoryTransactedW(byval lpTemplateDirectory as LPCWSTR, byval lpNewDirectory as LPCWSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval hTransaction as HANDLE) as WINBOOL
 3286     declare function RemoveDirectoryTransactedA(byval lpPathName as LPCSTR, byval hTransaction as HANDLE) as WINBOOL
 3287     declare function RemoveDirectoryTransactedW(byval lpPathName as LPCWSTR, byval hTransaction as HANDLE) as WINBOOL
 3288     declare function GetFullPathNameTransactedA(byval lpFileName as LPCSTR, byval nBufferLength as DWORD, byval lpBuffer as LPSTR, byval lpFilePart as LPSTR ptr, byval hTransaction as HANDLE) as DWORD
 3289     declare function GetFullPathNameTransactedW(byval lpFileName as LPCWSTR, byval nBufferLength as DWORD, byval lpBuffer as LPWSTR, byval lpFilePart as LPWSTR ptr, byval hTransaction as HANDLE) as DWORD
 3290 #endif
 3291 
 3292 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 3293     declare function CreateDirectoryTransacted alias "CreateDirectoryTransactedW"(byval lpTemplateDirectory as LPCWSTR, byval lpNewDirectory as LPCWSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval hTransaction as HANDLE) as WINBOOL
 3294     declare function RemoveDirectoryTransacted alias "RemoveDirectoryTransactedW"(byval lpPathName as LPCWSTR, byval hTransaction as HANDLE) as WINBOOL
 3295     declare function GetFullPathNameTransacted alias "GetFullPathNameTransactedW"(byval lpFileName as LPCWSTR, byval nBufferLength as DWORD, byval lpBuffer as LPWSTR, byval lpFilePart as LPWSTR ptr, byval hTransaction as HANDLE) as DWORD
 3296 #elseif (not defined(__FB_64BIT__)) and (not defined(UNICODE)) and (_WIN32_WINNT <= &h0502)
 3297     declare function CreateDirectoryEx alias "CreateDirectoryExA"(byval lpTemplateDirectory as LPCSTR, byval lpNewDirectory as LPCSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES) as WINBOOL
 3298 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 3299     declare function CreateDirectoryTransacted alias "CreateDirectoryTransactedA"(byval lpTemplateDirectory as LPCSTR, byval lpNewDirectory as LPCSTR, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval hTransaction as HANDLE) as WINBOOL
 3300     declare function RemoveDirectoryTransacted alias "RemoveDirectoryTransactedA"(byval lpPathName as LPCSTR, byval hTransaction as HANDLE) as WINBOOL
 3301     declare function GetFullPathNameTransacted alias "GetFullPathNameTransactedA"(byval lpFileName as LPCSTR, byval nBufferLength as DWORD, byval lpBuffer as LPSTR, byval lpFilePart as LPSTR ptr, byval hTransaction as HANDLE) as DWORD
 3302 #endif
 3303 
 3304 const DDD_RAW_TARGET_PATH = &h00000001
 3305 const DDD_REMOVE_DEFINITION = &h00000002
 3306 const DDD_EXACT_MATCH_ON_REMOVE = &h00000004
 3307 const DDD_NO_BROADCAST_SYSTEM = &h00000008
 3308 const DDD_LUID_BROADCAST_DRIVE = &h00000010
 3309 declare function DefineDosDeviceA(byval dwFlags as DWORD, byval lpDeviceName as LPCSTR, byval lpTargetPath as LPCSTR) as WINBOOL
 3310 declare function QueryDosDeviceA(byval lpDeviceName as LPCSTR, byval lpTargetPath as LPSTR, byval ucchMax as DWORD) as DWORD
 3311 
 3312 #ifndef UNICODE
 3313     declare function DefineDosDevice alias "DefineDosDeviceA"(byval dwFlags as DWORD, byval lpDeviceName as LPCSTR, byval lpTargetPath as LPCSTR) as WINBOOL
 3314     declare function QueryDosDevice alias "QueryDosDeviceA"(byval lpDeviceName as LPCSTR, byval lpTargetPath as LPSTR, byval ucchMax as DWORD) as DWORD
 3315 #endif
 3316 
 3317 #define EXPAND_LOCAL_DRIVES
 3318 
 3319 #if _WIN32_WINNT >= &h0600
 3320     declare function CreateFileTransactedA(byval lpFileName as LPCSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval dwCreationDisposition as DWORD, byval dwFlagsAndAttributes as DWORD, byval hTemplateFile as HANDLE, byval hTransaction as HANDLE, byval pusMiniVersion as PUSHORT, byval lpExtendedParameter as PVOID) as HANDLE
 3321     declare function CreateFileTransactedW(byval lpFileName as LPCWSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval dwCreationDisposition as DWORD, byval dwFlagsAndAttributes as DWORD, byval hTemplateFile as HANDLE, byval hTransaction as HANDLE, byval pusMiniVersion as PUSHORT, byval lpExtendedParameter as PVOID) as HANDLE
 3322 #endif
 3323 
 3324 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 3325     declare function CreateFileTransacted alias "CreateFileTransactedW"(byval lpFileName as LPCWSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval dwCreationDisposition as DWORD, byval dwFlagsAndAttributes as DWORD, byval hTemplateFile as HANDLE, byval hTransaction as HANDLE, byval pusMiniVersion as PUSHORT, byval lpExtendedParameter as PVOID) as HANDLE
 3326 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 3327     declare function CreateFileTransacted alias "CreateFileTransactedA"(byval lpFileName as LPCSTR, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval lpSecurityAttributes as LPSECURITY_ATTRIBUTES, byval dwCreationDisposition as DWORD, byval dwFlagsAndAttributes as DWORD, byval hTemplateFile as HANDLE, byval hTransaction as HANDLE, byval pusMiniVersion as PUSHORT, byval lpExtendedParameter as PVOID) as HANDLE
 3328 #endif
 3329 
 3330 declare function ReOpenFile(byval hOriginalFile as HANDLE, byval dwDesiredAccess as DWORD, byval dwShareMode as DWORD, byval dwFlagsAndAttributes as DWORD) as HANDLE
 3331 
 3332 #if _WIN32_WINNT >= &h0600
 3333     declare function SetFileAttributesTransactedA(byval lpFileName as LPCSTR, byval dwFileAttributes as DWORD, byval hTransaction as HANDLE) as WINBOOL
 3334     declare function SetFileAttributesTransactedW(byval lpFileName as LPCWSTR, byval dwFileAttributes as DWORD, byval hTransaction as HANDLE) as WINBOOL
 3335     declare function GetFileAttributesTransactedA(byval lpFileName as LPCSTR, byval fInfoLevelId as GET_FILEEX_INFO_LEVELS, byval lpFileInformation as LPVOID, byval hTransaction as HANDLE) as WINBOOL
 3336     declare function GetFileAttributesTransactedW(byval lpFileName as LPCWSTR, byval fInfoLevelId as GET_FILEEX_INFO_LEVELS, byval lpFileInformation as LPVOID, byval hTransaction as HANDLE) as WINBOOL
 3337 #endif
 3338 
 3339 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 3340     declare function SetFileAttributesTransacted alias "SetFileAttributesTransactedW"(byval lpFileName as LPCWSTR, byval dwFileAttributes as DWORD, byval hTransaction as HANDLE) as WINBOOL
 3341     declare function GetFileAttributesTransacted alias "GetFileAttributesTransactedW"(byval lpFileName as LPCWSTR, byval fInfoLevelId as GET_FILEEX_INFO_LEVELS, byval lpFileInformation as LPVOID, byval hTransaction as HANDLE) as WINBOOL
 3342 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 3343     declare function SetFileAttributesTransacted alias "SetFileAttributesTransactedA"(byval lpFileName as LPCSTR, byval dwFileAttributes as DWORD, byval hTransaction as HANDLE) as WINBOOL
 3344     declare function GetFileAttributesTransacted alias "GetFileAttributesTransactedA"(byval lpFileName as LPCSTR, byval fInfoLevelId as GET_FILEEX_INFO_LEVELS, byval lpFileInformation as LPVOID, byval hTransaction as HANDLE) as WINBOOL
 3345 #endif
 3346 
 3347 declare function GetCompressedFileSizeA(byval lpFileName as LPCSTR, byval lpFileSizeHigh as LPDWORD) as DWORD
 3348 declare function GetCompressedFileSizeW(byval lpFileName as LPCWSTR, byval lpFileSizeHigh as LPDWORD) as DWORD
 3349 
 3350 #ifdef UNICODE
 3351     declare function GetCompressedFileSize alias "GetCompressedFileSizeW"(byval lpFileName as LPCWSTR, byval lpFileSizeHigh as LPDWORD) as DWORD
 3352 #elseif (not defined(UNICODE)) and (defined(__FB_64BIT__) or ((not defined(__FB_64BIT__)) and (_WIN32_WINNT >= &h0600)))
 3353     declare function GetCompressedFileSize alias "GetCompressedFileSizeA"(byval lpFileName as LPCSTR, byval lpFileSizeHigh as LPDWORD) as DWORD
 3354 #endif
 3355 
 3356 #if _WIN32_WINNT >= &h0600
 3357     declare function GetCompressedFileSizeTransactedA(byval lpFileName as LPCSTR, byval lpFileSizeHigh as LPDWORD, byval hTransaction as HANDLE) as DWORD
 3358     declare function GetCompressedFileSizeTransactedW(byval lpFileName as LPCWSTR, byval lpFileSizeHigh as LPDWORD, byval hTransaction as HANDLE) as DWORD
 3359     declare function DeleteFileTransactedA(byval lpFileName as LPCSTR, byval hTransaction as HANDLE) as WINBOOL
 3360     declare function DeleteFileTransactedW(byval lpFileName as LPCWSTR, byval hTransaction as HANDLE) as WINBOOL
 3361 #endif
 3362 
 3363 #if defined(UNICODE) and (_WIN32_WINNT >= &h0600)
 3364     declare function DeleteFileTransacted alias "DeleteFileTransactedW"(byval lpFileName as LPCWSTR, byval hTransaction as HANDLE) as WINBOOL
 3365     declare function GetCompressedFileSizeTransacted alias "GetCompressedFileSizeTransactedW"(byval lpFileName as LPCWSTR, byval lpFileSizeHigh as LPDWORD, byval hTransaction as HANDLE) as DWORD
 3366 #elseif (not defined(__FB_64BIT__)) and (not defined(UNICODE)) and (_WIN32_WINNT <= &h0502)
 3367     declare function GetCompressedFileSize alias "GetCompressedFileSizeA"(byval lpFileName as LPCSTR, byval lpFileSizeHigh as LPDWORD) as DWORD
 3368 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0600)
 3369     declare function DeleteFileTransacted alias "DeleteFileTransactedA"(byval lpFileName as LPCSTR, byval hTransaction as HANDLE) as WINBOOL
 3370     declare function GetCompressedFileSizeTransacted alias "GetCompressedFileSizeTransactedA"(byval lpFileName as LPCSTR, byval lpFileSizeHigh as LPDWORD, byval hTransaction as HANDLE) as DWORD
 3371 #endif
 3372 
 3373 type LPPROGRESS_ROUTINE as function(byval TotalFileSize as LARGE_INTEGER, byval TotalBytesTransferred as LARGE_INTEGER, byval StreamSize as LARGE_INTEGER, byval StreamBytesTransferred as LARGE_INTEGER, byval dwStreamNumber as DWORD, byval dwCallbackReason as DWORD, byval hSourceFile as HANDLE, byval hDestinationFile as HANDLE, byval lpData as LPVOID) as DWORD
 3374 declare function CheckNameLegalDOS8Dot3A(byval lpName as LPCSTR, byval lpOemName as LPSTR, byval OemNameSize as DWORD, byval pbNameContainsSpaces as PBOOL, byval pbNameLegal as PBOOL) as WINBOOL
 3375 declare function CheckNameLegalDOS8Dot3W(byval lpName as LPCWSTR, byval lpOemName as LPSTR, byval OemNameSize as DWORD, byval pbNameContainsSpaces as PBOOL, byval pbNameLegal as PBOOL) as WINBOOL
 3376 declare function CopyFileA(byval lpExistingFileName as LPCSTR, byval lpNewFileName as LPCSTR, byval bFailIfExists as WINBOOL) as WINBOOL
 3377 declare function CopyFileW(byval lpExistingFileName as LPCWSTR, byval lpNewFileName as LPCWSTR, byval bFailIfExists as WINBOOL) as WINBOOL
 3378 declare function CopyFileExA(byval lpExistingFileName as LPCSTR, byval lpNewFileName as LPCSTR, byval lpProgressRoutine as LPPROGRESS_ROUTINE, byval lpData as LPVOID, byval pbCancel as LPBOOL, byval dwCopyFlags as DWORD) as WINBOOL
 3379 declare function CopyFileExW(byval lpExistingFileName as LPCWSTR, byval lpNewFileName as LPCWSTR, byval lpProgressRoutine as LPPROGRESS_ROUTINE, byval lpData as LPVOID, byval pbCancel as LPBOOL, byval dwCopyFlags as DWORD) as WINBOOL
 3380 
 3381 #if _WIN32_WINNT >= &h0600
 3382     declare function FindFirstFileTransactedA(byval lpFileName as LPCSTR, byval fInfoLevelId as FINDEX_INFO_LEVELS, byval lpFindFileData as LPVOID, byval fSearchOp as FINDEX_SEARCH_OPS, byval lpSearchFilter as LPVOID, byval dwAdditionalFlags as DWORD, byval hTransaction as HANDLE) as HANDLE
 3383     declare function FindFirstFileTransactedW(byval lpFileName as LPCWSTR, byval fInfoLevelId as FINDEX_INFO_LEVELS, byval lpFindFileData as LPVOID, byval fSearchOp as FINDEX_SEARCH_OPS, byval lpSearchFilter as LPVOID, byval dwAdditionalFlags as DWORD, byval hTransaction as HANDLE) as HANDLE
 3384     declare function CopyFileTransactedA(byval lpExistingFileName as LPCSTR, byval lpNewFileName as LPCSTR, byval lpProgressRoutine as LPPROGRESS_ROUTINE, byval lpData as LPVOID, byval pbCancel as LPBOOL, byval dwCopyFlags as DWORD, byval hTransaction as HANDLE) as WINBOOL
 3385     declare function CopyFileTransactedW(byval lpExistingFileName as LPCWSTR, byval lpNewFileName as LPCWSTR, byval lpProgressRoutine as LPPROGRESS_ROUTINE, byval lpData as LPVOID, byval pbCancel as LPBOOL, byval dwCopyFlags as DWORD, byval hTransaction as HANDLE) as WINBOOL
 3386 #endif
 3387 
 3388 #ifdef UNICODE
 3389     #if _WIN32_WINNT >= &h0600
 3390         declare function FindFirstFileTransacted alias "FindFirstFileTransactedW"(byval lpFileName as LPCWSTR, byval fInfoLevelId as FINDEX_INFO_LEVELS, byval lpFindFileData as LPVOID, byval fSearchOp as FINDEX_SEARCH_OPS, byval lpSearchFilter as LPVOID, byval dwAdditionalFlags as DWORD, byval hTransaction as HANDLE) as HANDLE
 3391         declare function CopyFileTransacted alias "CopyFileTransactedW"(byval lpExistingFileName as LPCWSTR, byval lpNewFileName as LPCWSTR, byval lpProgressRoutine as LPPROGRESS_ROUTINE, byval lpData as LPVOID, byval pbCancel as LPBOOL, byval dwCopyFlags as DWORD, byval hTransaction as HANDLE) as WINBOOL
 3392     #endif
 3393 
 3394     declare function CheckNameLegalDOS8Dot3 alias "CheckNameLegalDOS8Dot3W"(byval lpName as LPCWSTR, byval lpOemName as LPSTR, byval OemNameSize as DWORD, byval pbNameContainsSpaces as PBOOL, byval pbNameLegal as PBOOL) as WINBOOL
 3395     declare function CopyFile alias "CopyFileW"(byval lpExistingFileName as LPCWSTR, byval lpNewFileName as LPCWSTR, byval bFailIfExists as WINBOOL) as WINBOOL
 3396     declare function CopyFileEx alias "CopyFileExW"(byval lpExistingFileName as LPCWSTR, byval lpNewFileName as LPCWSTR, byval lpProgressRoutine as LPPROGRESS_ROUTINE, byval lpData as LPVOID, byval pbCancel as LPBOOL, byval dwCopyFlags as DWORD) as WINBOOL
 3397 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0601)
 3398     declare function FindFirstFileTransacted alias "FindFirstFileTransactedA"(byval lpFileName as LPCSTR, byval fInfoLevelId as FINDEX_INFO_LEVELS, byval lpFindFileData as LPVOID, byval fSearchOp as FINDEX_SEARCH_OPS, byval lpSearchFilter as LPVOID, byval dwAdditionalFlags as DWORD, byval hTransaction as HANDLE) as HANDLE
 3399     declare function CopyFileTransacted alias "CopyFileTransactedA"(byval lpExistingFileName as LPCSTR, byval lpNewFileName