Calling Win32 API Routines from HLA

 

by Randy Hyde

 

The win32 libraries are probably second only to the HLA Standard Library it terms of frequency of use in an HLA program. Although the HLA Standard Library shields you from much of the details concerning win32 API calling convensions when writing console applications, the Standard Library does not provide a buffer layer between you and all the possible win32 calls. Furthermore, for GUI and other non-console applications, the HLA Standard Library provides very little help, you will have no choice but to interface directly with the win32 Application Programmer's Interface. This document will describe how this is done from within an HLA program.

 

The first, and perhaps most important point to note is that HLA uses the "Pascal" calling convention while the Windows API uses the "STDCALL" calling convention. Pascal/HLA procedures push the parameters on the stack in the order they are encountered in the actual parameter list; Pascal/HLA procedures automatically pop all parameters off the stack upon return. The "STDCALL" calling convention also pops all actual parameters off the stack upon return; however, the "STDCALL" convention pushes parameters on the stack in the reverse order the compiler encounters them in the actual parameter list. Since both calling mechanisms expect the called procedure to remove all parameters from the stack, HLA is compatible with the STDCALL convention on this point. As for the order of parameters, the win32 API expects the HLA caller to push the parameters in the reverse order than HLA actually pushes them. So the two calling mechanisms are incompatible on this point. Fortunately, it's easy to work around this problem, just specify the @stdcall procedure option when creating the prototype for a Win32 API function.

 

The last difference between the two calling mechanisms is that the Pascal interface simply uses the name of the procedure as the external name while the STDCALL prepends an underscore to the function name and uses that combination as the external name. Fortunately, HLA's external procedure declaration syntax provides an easy solution to this problem.

 

First consider the "C" declaration for the win32 API WriteFile function call:

 

int WriteFile( dword Handle, byte *buffer, dword len, dword *BytesWritten, dword Overlapped );

 

As it turns out, "WriteFile" isn't the true name of this procedure. Microsoft appends "@20" to the end of the name to denote that this procedure has 20 bytes of parameters. Along with the STDCALL convention of prepending an underscore, the actual external name is "_WriteFile@20". Therefore, this is the name we'll have to supply as the HLA external name. Since HLA does not allow at-signs ("@") in the middle of an identifier, we'll have to use the auxiliary external declaration syntax that HLA supports when declaring this function. Specifically, the HLA declaration will look something like:

 

procedure WriteFile( parameters ); @stdcall; external( "_WriteFile@20" );

 

 

 

procedure WriteFile
(
        Handle:       dword
    var buffer:       var;
        len:          dword;
    var BytesWritten: dword;
        overlapped:   dword;
);  external( "_WriteFile@20" );

This declaration will work but there a slight problem with it. The problem with calling the win32 API in this fashion is that it's slightly inefficient; this inefficiency is not specific to HLA, most win32 API calls suffer from this problem, but since this is assembly language it is possible to improve the efficicency of the win32 API call without much effort.

 

One problem that affects all win32 API calls is the actual machine language interface to the DLLs that process the system calls. Whenever you have an external procedure declaration like the one above, HLA emits a CALL machine instruction whose operand field the linker must fill in with the address of the actual subroutine. Unfortunately, win32 API calls are made indirectly through a variable rather than directly to the actual routine. The direct call that HLA (and other languages) emits will not jump indirect through this pointer variable. To solve this problem, external symbols like "_WriteFile@20" in the kernel32.lib file do not hold the address of the actual API routine or even the indirect jump address. Instead, these names specify the address of a JMP instruction that jumps indirectly through the pointer variable. Therefore, your win32 API calls wind up calling a JMP instruction that jumps indirect through the pointer variable.

 

It turns out that with a very small change, you can avoid the overhead of this extra JMP instruction on each win32 API call. In addition to exporting the names of the win32 API entry points (which are the addresses of these JMP instructions), the win32 LIB files also export the names of the pointer variables. These pointer variables have the same name as the API routines except they have "__imp__" prepended to the name rather than a single underscore (by the way, that's two underscores followed by "imp" followed by two more underscores). One really slick feature of HLA is that it uses the same syntax for indirect procedure calls as it does for direct procedure calls. This means that by simply changing the external declaration, we can tell HLA to generate an indirect jump rather than a direct jump to the API routines; nothing else changes. Therefore, to remove all the calls to JMPs, all you need to is declare your API routines as follows:

 

 

static
    win32_WriteFile: procedure
    (
            Handle:       dword
        var buffer:       var;
            len:          dword;
        var BytesWritten: dword;
            overlapped:   dword;
    );  @external( "__imp__WriteFile@20" );

 

This declares win32_WriteFile as a procedure pointer rather than a procedure. The external name is the name of the variable containing the address of the actual WriteFile@20 routine. Whenever HLA encounters a call to win32_WriteFile, it emits an indirect CALL instruction that transfers control directly to the WriteFile routine rather than transferring control to the indirect JMP instruction. This saves a small amount of execution time on each API call.

 

The only real catch is figuring out the API names. Unfortunately, Microsoft's documentation doesn't tell you the (external) name of each API routine. Fortunately, you can use the Microsoft DUMPBIN.EXE utility to extract this information directly from the LIB files. To do this, use the following command syntax:

 

dumpbin /symbols kernel32.lib
 

(Obviously, you should supply the appropriate name of the library whose symbols you want to see).

 

The dumpbin utiltity, with the "/symbols" option displays all the symbols that the specified library module exports. If you're looking for a symbol like "WriteFile" you will probably find a few symbols that have the "WriteFile" substring present. It's a good bet that one of these names (particularly, with the "__imp__" prefix) is the name you want to use in the HLA external declaration.

 

Many Win32 API export names will have two varieties: one form containing an "A" before the at-sign and one containing a "W" before the at-sign. For example, the "CreateFile" function has two forms: "_CreateFileA@28" and "_CreateFileW@28". The difference between functions whose names end in these two characters is that those with an "A" suffix deal with 8-bit ASCII characters (or, more correctly, ANSI characters). Those with a "W" (for wide) suffix deal with 16-bit UNICODE characters. Feel free to call whichever form is appropriate for your application. Do keep in mind, though, that the HLA Standard Library routines always expect ANSI/ASCII characters and generally don't support UNICODE characters. So if you're working with wide characters, you may not be able to use routines in the HLA Standard Library that work with character and string data.

 

The following tables list the names that the "kernel32.lib" file exports. This will give you a basic idea of the symbol types that appear in a typical LIB file. This list only presents those symbols found in the "kernel32.lib" file, there are many hundreds of additional names found in other windows LIB files. Here is a list of some of the LIB files that accompany Microsoft's Visual C++ system that may contain useful API routines you can call:

 

ADVAPI32.LIB

COMCTL32.LIB

COMDLG32.LIB

CRYPT32.LIB

CTL3D32.LIB

CTLFWD32.LIB

CTLFWR32.LIB

DMAPIW32.LIB

FMISTR32.LIB

GDI32.LIB

GLU32.LIB

GTRTST32.LIB

IMM32.LIB

KERNEL32.LIB

LSAPI32.LIB

LZ32.LIB

MAPI32.LIB

MFCUIA32.LIB

MSACM32.LIB

MSIMG32.LIB

MSLSP32.LIB

NETAPI32.LIB

ODBC32.LIB

ODBCCP32.LIB

OLE32.LIB

OLEAUT32.LIB

OLEPRO32.LIB

OPENGL32.LIB

PENWIN32.LIB

PKPD32.LIB

RASAPI32.LIB

RTFLIB32.LIB

SHELL32.LIB

TAPI32.LIB

TH32.LIB

THUNK32.LIB

USER32.LIB

VFW32.LIB

WAPPC32.LIB

WCPIC32.LIB

WINCSV32.LIB

WINRUI32.LIB

WINSLI32.LIB

WLDAP32.LIB

WOW32.LIB

WS2_32.LIB

WSNMP32.LIB

WSOCK32.LIB

 

 

Kernel32.lib API Routine Export Names

_AddAtomA@4

_AddAtomW@4

_AddConsoleAliasA@12

_AddConsoleAliasW@12

_AllocConsole@0

_AreFileApisANSI@0

_BackupRead@28

_BackupSeek@24

_BackupWrite@28

_BaseAttachCompleteThunk@0

_Beep@8

_BeginUpdateResourceA@8

_BeginUpdateResourceW@8

_BuildCommDCBA@8

_BuildCommDCBAndTimeoutsA@12

_BuildCommDCBAndTimeoutsW@12

_BuildCommDCBW@8

_CallNamedPipeA@28

_CallNamedPipeW@28

_CancelIo@4

_CancelWaitableTimer@4

_ClearCommBreak@4

_ClearCommError@12

_CloseConsoleHandle@4

_CloseHandle@4

_CloseProfileUserMapping@0

_CmdBatNotification@4

_CommConfigDialogA@12

_CommConfigDialogW@12

_CompareFileTime@8

_CompareStringA@24

_CompareStringW@24

_ConnectNamedPipe@8

_ConsoleMenuControl@12

_ContinueDebugEvent@12

_ConvertDefaultLocale@4

_ConvertThreadToFiber@4

_CopyFileA@12

_CopyFileExA@24

_CopyFileExW@24

_CopyFileW@12

_CreateConsoleScreenBuffer@20

_CreateDirectoryA@8

_CreateDirectoryExA@12

_CreateDirectoryExW@12

_CreateDirectoryW@8

_CreateEventA@16

_CreateEventW@16

_CreateFiber@12

_CreateFileA@28

_CreateFileMappingA@24

_CreateFileMappingW@24

_CreateFileW@28

_CreateIoCompletionPort@16

_CreateMailslotA@16

_CreateMailslotW@16

_CreateMutexA@12

_CreateMutexW@12

_CreateNamedPipeA@32

_CreateNamedPipeW@32

_CreatePipe@16

_CreateProcessA@40

_CreateProcessW@40

_CreateRemoteThread@28

_CreateSemaphoreA@16

_CreateSemaphoreW@16

_CreateTapePartition@16

_CreateThread@24

_CreateVirtualBuffer@12

_CreateWaitableTimerA@12

_CreateWaitableTimerW@12

_DebugActiveProcess@4

_DebugBreak@0

_DefineDosDeviceA@12

_DefineDosDeviceW@12

_DeleteAtom@4

_DeleteCriticalSection@4

_DeleteFiber@4

_DeleteFileA@4

_DeleteFileW@4

_DeviceIoControl@32

_DisableThreadLibraryCalls@4

_DisconnectNamedPipe@4

_DosDateTimeToFileTime@12

_DuplicateConsoleHandle@16

_DuplicateHandle@28

_EndUpdateResourceA@8

_EndUpdateResourceW@8

_EnterCriticalSection@4

_EnumCalendarInfoA@16

_EnumCalendarInfoW@16

_EnumDateFormatsA@12

_EnumDateFormatsW@12

_EnumResourceLanguagesA@20

_EnumResourceLanguagesW@20

_EnumResourceNamesA@16

_EnumResourceNamesW@16

_EnumResourceTypesA@12

_EnumResourceTypesW@12

_EnumSystemCodePagesA@8

_EnumSystemCodePagesW@8

_EnumSystemLocalesA@8

_EnumSystemLocalesW@8

_EnumTimeFormatsA@12

_EnumTimeFormatsW@12

_EraseTape@12

_EscapeCommFunction@8

_ExitProcess@4

_ExitThread@4

_ExitVDM@8

_ExpandEnvironmentStringsA@12

_ExpandEnvironmentStringsW@12

_ExpungeConsoleCommandHistoryA@4

_ExpungeConsoleCommandHistoryW@4

_ExtendVirtualBuffer@8

_FatalAppExitA@8

_FatalAppExitW@8

_FatalExit@4

_FileTimeToDosDateTime@12

_FileTimeToLocalFileTime@8

_FileTimeToSystemTime@8

_FillConsoleOutputAttribute@20

_FillConsoleOutputCharacterA@20

_FillConsoleOutputCharacterW@20

_FindAtomA@4

_FindAtomW@4

_FindClose@4

_FindCloseChangeNotification@4

_FindFirstChangeNotificationA@12

_FindFirstChangeNotificationW@12

_FindFirstFileA@8

_FindFirstFileExA@24

_FindFirstFileExW@24

_FindFirstFileW@8

_FindNextChangeNotification@4

_FindNextFileA@8

_FindNextFileW@8

_FindResourceA@12

_FindResourceExA@16

_FindResourceExW@16

_FindResourceW@12

_FlushConsoleInputBuffer@4

_FlushFileBuffers@4

_FlushInstructionCache@12

_FlushViewOfFile@8

_FoldStringA@20

_FoldStringW@20

_FormatMessageA@28

_FormatMessageW@28

_FreeConsole@0

_FreeEnvironmentStringsA@4

_FreeEnvironmentStringsW@4

_FreeLibrary@4

_FreeLibraryAndExitThread@8

_FreeResource@4

_FreeVirtualBuffer@4

_GenerateConsoleCtrlEvent@8

_GetACP@0

_GetAtomNameA@12

_GetAtomNameW@12

_GetBinaryType@8

_GetBinaryTypeA@8

_GetBinaryTypeW@8

_GetCPInfo@8

_GetCommConfig@12

_GetCommMask@8

_GetCommModemStatus@8

_GetCommProperties@8

_GetCommState@8

_GetCommTimeouts@8

_GetCommandLineA@0

_GetCommandLineW@0

_GetCompressedFileSizeA@8

_GetCompressedFileSizeW@8

_GetComputerNameA@8

_GetComputerNameW@8

_GetConsoleAliasA@16

_GetConsoleAliasExesA@8

_GetConsoleAliasExesLengthA@0

_GetConsoleAliasExesLengthW@0

_GetConsoleAliasExesW@8

_GetConsoleAliasW@16

_GetConsoleAliasesA@12

_GetConsoleAliasesLengthA@4

_GetConsoleAliasesLengthW@4

_GetConsoleAliasesW@12

_GetConsoleCP@0

_GetConsoleCommandHistoryA@12

_GetConsoleCommandHistoryLengthA@4

_GetConsoleCommandHistoryLengthW@4

_GetConsoleCommandHistoryW@12

_GetConsoleCursorInfo@8

_GetConsoleDisplayMode@4

_GetConsoleFontInfo@16

_GetConsoleFontSize@8

_GetConsoleHardwareState@12

_GetConsoleInputExeNameA@8

_GetConsoleInputExeNameW@8

_GetConsoleInputWaitHandle@0

_GetConsoleKeyboardLayoutNameA@4

_GetConsoleKeyboardLayoutNameW@4

_GetConsoleMode@8

_GetConsoleOutputCP@0

_GetConsoleScreenBufferInfo@8

_GetConsoleTitleA@8

_GetConsoleTitleW@8

_GetCurrencyFormatA@24

_GetCurrencyFormatW@24

_GetCurrentConsoleFont@12

_GetCurrentDirectoryA@8

_GetCurrentDirectoryW@8

_GetCurrentProcess@0

_GetCurrentProcessId@0

_GetCurrentThread@0

_GetCurrentThreadId@0

_GetDateFormatA@24

_GetDateFormatW@24

_GetDefaultCommConfigA@12

_GetDefaultCommConfigW@12

_GetDiskFreeSpaceA@20

_GetDiskFreeSpaceExA@16

_GetDiskFreeSpaceExW@16

_GetDiskFreeSpaceW@20

_GetDriveTypeA@4

_GetDriveTypeW@4

_GetEnvironmentStrings@0

_GetEnvironmentStringsA@0

_GetEnvironmentStringsW@0

_GetEnvironmentVariableA@12

_GetEnvironmentVariableW@12

_GetExitCodeProcess@8

_GetExitCodeThread@8

_GetFileAttributesA@4

_GetFileAttributesExA@12

_GetFileAttributesExW@12

_GetFileAttributesW@4

_GetFileInformationByHandle@8

_GetFileSize@8

_GetFileTime@16

_GetFileType@4

_GetFullPathNameA@16

_GetFullPathNameW@16

_GetHandleInformation@8

_GetLargestConsoleWindowSize@4

_GetLastError@0

_GetLocalTime@4

_GetLocaleInfoA@16

_GetLocaleInfoW@16

_GetLogicalDriveStringsA@8

_GetLogicalDriveStringsW@8

_GetLogicalDrives@0

_GetMailslotInfo@20

_GetModuleFileNameA@12

_GetModuleFileNameW@12

_GetModuleHandleA@4

_GetModuleHandleW@4

_GetNamedPipeHandleStateA@28

_GetNamedPipeHandleStateW@28

_GetNamedPipeInfo@20

_GetNextVDMCommand@4

_GetNumberFormatA@24

_GetNumberFormatW@24

_GetNumberOfConsoleFonts@0

_GetNumberOfConsoleInputEvents@8

_GetNumberOfConsoleMouseButtons@4

_GetOEMCP@0

_GetOverlappedResult@16

_GetPriorityClass@4

_GetPrivateProfileIntA@16

_GetPrivateProfileIntW@16

_GetPrivateProfileSectionA@16

_GetPrivateProfileSectionNamesA@12

_GetPrivateProfileSectionNamesW@12

_GetPrivateProfileSectionW@16

_GetPrivateProfileStringA@24

_GetPrivateProfileStringW@24

_GetPrivateProfileStructA@20

_GetPrivateProfileStructW@20

_GetProcAddress@8

_GetProcessAffinityMask@12

_GetProcessHeap@0

_GetProcessHeaps@8

_GetProcessPriorityBoost@8

_GetProcessShutdownParameters@8

_GetProcessTimes@20

_GetProcessVersion@4

_GetProcessWorkingSetSize@12

_GetProfileIntA@12

_GetProfileIntW@12

_GetProfileSectionA@12

_GetProfileSectionW@12

_GetProfileStringA@20

_GetProfileStringW@20

_GetQueuedCompletionStatus@20

_GetShortPathNameA@12

_GetShortPathNameW@12

_GetStartupInfoA@4

_GetStartupInfoW@4

_GetStdHandle@4

_GetStringTypeA@20

_GetStringTypeExA@20

_GetStringTypeExW@20

_GetStringTypeW@16

_GetSystemDefaultLCID@0

_GetSystemDefaultLangID@0

_GetSystemDirectoryA@8

_GetSystemDirectoryW@8

_GetSystemInfo@4

_GetSystemPowerStatus@4

_GetSystemTime@4

_GetSystemTimeAdjustment@12

_GetSystemTimeAsFileTime@4

_GetTapeParameters@16

_GetTapePosition@20

_GetTapeStatus@4

_GetTempFileNameA@16

_GetTempFileNameW@16

_GetTempPathA@8

_GetTempPathW@8

_GetThreadContext@8

_GetThreadLocale@0

_GetThreadPriority@4

_GetThreadPriorityBoost@8

_GetThreadSelectorEntry@12

_GetThreadTimes@20

_GetTickCount@0

_GetTimeFormatA@24

_GetTimeFormatW@24

_GetTimeZoneInformation@4

_GetUserDefaultLCID@0

_GetUserDefaultLangID@0

_GetVDMCurrentDirectories@8

_GetVersion@0

_GetVersionExA@4

_GetVersionExW@4

_GetVolumeInformationA@32

_GetVolumeInformationW@32

_GetWindowsDirectoryA@8

_GetWindowsDirectoryW@8

_GlobalAddAtomA@4

_GlobalAddAtomW@4

_GlobalAlloc@8

_GlobalCompact@4

_GlobalDeleteAtom@4

_GlobalFindAtomA@4

_GlobalFindAtomW@4

_GlobalFix@4

_GlobalFlags@4

_GlobalFree@4

_GlobalGetAtomNameA@12

_GlobalGetAtomNameW@12

_GlobalHandle@4

_GlobalLock@4

_GlobalMemoryStatus@4

_GlobalReAlloc@12

_GlobalSize@4

_GlobalUnWire@4

_GlobalUnfix@4

_GlobalUnlock@4

_GlobalWire@4

_HeapAlloc@12

_HeapCompact@8

_HeapCreate@12

_HeapCreateTagsW@16

_HeapDestroy@4

_HeapExtend@16

_HeapFree@12

_HeapLock@4

_HeapQueryTagW@20

_HeapReAlloc@16

_HeapSize@12

_HeapSummary@12

_HeapUnlock@4

_HeapUsage@20

_HeapValidate@12

_HeapWalk@8

_InitAtomTable@4

_InitializeCriticalSection@4

_InterlockedCompareExchange@12

_InterlockedDecrement@4

_InterlockedExchange@8

_InterlockedExchangeAdd@8

_InterlockedIncrement@4

_InvalidateConsoleDIBits@8

_IsBadCodePtr@4

_IsBadHugeReadPtr@8

_IsBadHugeWritePtr@8

_IsBadReadPtr@8

_IsBadStringPtrA@8

_IsBadStringPtrW@8

_IsBadWritePtr@8

_IsDBCSLeadByte@4

_IsDBCSLeadByteEx@8

_IsDebuggerPresent@0

_IsProcessorFeaturePresent@4

_IsValidCodePage@4

_IsValidLocale@8

_LCMapStringA@24

_LCMapStringW@24

_LeaveCriticalSection@4

_LoadLibraryA@4

_LoadLibraryExA@12

_LoadLibraryExW@12

_LoadLibraryW@4

_LoadModule@8

_LoadResource@8

_LocalAlloc@8

_LocalCompact@4

_LocalFileTimeToFileTime@8

_LocalFlags@4

_LocalFree@4

_LocalHandle@4

_LocalLock@4

_LocalReAlloc@12

_LocalShrink@8

_LocalSize@4

_LocalUnlock@4

_LockFile@20

_LockFileEx@24

_LockResource@4

_MapViewOfFile@20

_MapViewOfFileEx@24

_MoveFileA@8

_MoveFileExA@12

_MoveFileExW@12

_MoveFileW@8

_MulDiv@12

_MultiByteToWideChar@24

_OpenConsoleW@16

_OpenEventA@12

_OpenEventW@12

_OpenFile@12

_OpenFileMappingA@12

_OpenFileMappingW@12

_OpenMutexA@12

_OpenMutexW@12

_OpenProcess@12

_OpenProfileUserMapping@0

_OpenSemaphoreA@12

_OpenSemaphoreW@12

_OpenWaitableTimerA@12

_OpenWaitableTimerW@12

_OutputDebugStringA@4

_OutputDebugStringW@4

_PeekConsoleInputA@16

_PeekConsoleInputW@16

_PeekNamedPipe@24

_PostQueuedCompletionStatus@16

_PrepareTape@12

_PulseEvent@4

_PurgeComm@8

_QueryDosDeviceA@12

_QueryDosDeviceW@12

_QueryPerformanceCounter@4

_QueryPerformanceFrequency@4

_QueryWin31IniFilesMappedToRegistry@16

_QueueUserAPC@12

_RaiseException@16

_ReadConsoleA@20

_ReadConsoleInputA@16

_ReadConsoleInputExA@20

_ReadConsoleInputExW@20

_ReadConsoleInputW@16

_ReadConsoleOutputA@20

_ReadConsoleOutputAttribute@20

_ReadConsoleOutputCharacterA@20

_ReadConsoleOutputCharacterW@20

_ReadConsoleOutputW@20

_ReadConsoleW@20

_ReadDirectoryChangesW@32

_ReadFile@20

_ReadFileEx@20

_ReadProcessMemory@20

_RegisterConsoleVDM@44

_RegisterWaitForInputIdle@4

_RegisterWowBaseHandlers@4

_RegisterWowExec@4

_ReleaseMutex@4

_ReleaseSemaphore@12

_RemoveDirectoryA@4

_RemoveDirectoryW@4

_ResetEvent@4

_ResumeThread@4

_RtlFillMemory@12

_RtlMoveMemory@12

_RtlUnwind@16

_RtlZeroMemory@8

_ScrollConsoleScreenBufferA@20

_ScrollConsoleScreenBufferW@20

_SearchPathA@24

_SearchPathW@24

_SetCommBreak@4

_SetCommConfig@12

_SetCommMask@8

_SetCommState@8

_SetCommTimeouts@8

_SetComputerNameA@4

_SetComputerNameW@4

_SetConsoleActiveScreenBuffer@4

_SetConsoleCP@4

_SetConsoleCommandHistoryMode@4

_SetConsoleCtrlHandler@8

_SetConsoleCursor@8

_SetConsoleCursorInfo@8

_SetConsoleCursorPosition@8

_SetConsoleDisplayMode@12

_SetConsoleFont@8

_SetConsoleHardwareState@12

_SetConsoleIcon@4

_SetConsoleInputExeNameA@4

_SetConsoleInputExeNameW@4

_SetConsoleKeyShortcuts@16

_SetConsoleMaximumWindowSize@8

_SetConsoleMenuClose@4

_SetConsoleMode@8

_SetConsoleNumberOfCommandsA@8

_SetConsoleNumberOfCommandsW@8

_SetConsoleOutputCP@4

_SetConsolePalette@12

_SetConsoleScreenBufferSize@8

_SetConsoleTextAttribute@8

_SetConsoleTitleA@4

_SetConsoleTitleW@4

_SetConsoleWindowInfo@12

_SetCurrentDirectoryA@4

_SetCurrentDirectoryW@4

_SetDefaultCommConfigA@12

_SetDefaultCommConfigW@12

_SetEndOfFile@4

_SetEnvironmentVariableA@8

_SetEnvironmentVariableW@8

_SetErrorMode@4

_SetEvent@4

_SetFileApisToANSI@0

_SetFileApisToOEM@0

_SetFileAttributesA@8

_SetFileAttributesW@8

_SetFilePointer@16

_SetFileTime@16

_SetHandleCount@4

_SetHandleInformation@12

_SetLastConsoleEventActive@0

_SetLastError@4

_SetLocalTime@4

_SetLocaleInfoA@12

_SetLocaleInfoW@12

_SetMailslotInfo@8

_SetNamedPipeHandleState@16

_SetPriorityClass@8

_SetProcessAffinityMask@8

_SetProcessPriorityBoost@8

_SetProcessShutdownParameters@8

_SetProcessWorkingSetSize@12

_SetStdHandle@8

_SetSystemPowerState@8

_SetSystemTime@4

_SetSystemTimeAdjustment@8

_SetTapeParameters@12

_SetTapePosition@24

_SetThreadAffinityMask@8

_SetThreadContext@8

_SetThreadIdealProcessor@8

_SetThreadLocale@4

_SetThreadPriority@8

_SetThreadPriorityBoost@8

_SetTimeZoneInformation@4

_SetUnhandledExceptionFilter@4

_SetVDMCurrentDirectories@8

_SetVolumeLabelA@8

_SetVolumeLabelW@8

_SetWaitableTimer@24

_SetupComm@12

_ShowConsoleCursor@8

_SignalObjectAndWait@16

_SizeofResource@8

_Sleep@4

_SleepEx@8

_SuspendThread@4

_SwitchToFiber@4

_SwitchToThread@0

_SystemTimeToFileTime@8

_SystemTimeToTzSpecificLocalTime@12

_TerminateProcess@8

_TerminateThread@8

_TlsAlloc@0

_TlsFree@4

_TlsGetValue@4

_TlsSetValue@8

_TransactNamedPipe@28

_TransmitCommChar@8

_TrimVirtualBuffer@4

_TryEnterCriticalSection@4

_UnhandledExceptionFilter@4

_UnlockFile@20

_UnlockFileEx@20

_UnmapViewOfFile@4

_UpdateResourceA@24

_UpdateResourceW@24

_VDMConsoleOperation@8

_VDMOperationStarted@4

_VerLanguageNameA@12

_VerLanguageNameW@12

_VerifyConsoleIoHandle@4

_VirtualAlloc@16

_VirtualAllocEx@20

_VirtualBufferExceptionHandler@12

_VirtualFree@12

_VirtualFreeEx@16

_VirtualLock@8

_VirtualProtect@16

_VirtualProtectEx@20

_VirtualQuery@12

_VirtualQueryEx@16

_VirtualUnlock@8

_WaitCommEvent@12

_WaitForDebugEvent@8

_WaitForMultipleObjects@16

_WaitForMultipleObjectsEx@20

_WaitForSingleObject@8

_WaitForSingleObjectEx@12

_WaitNamedPipeA@8

_WaitNamedPipeW@8

_WideCharToMultiByte@32

_WinExec@8

_WriteConsoleA@20

_WriteConsoleInputA@16

_WriteConsoleInputVDMA@16

_WriteConsoleInputVDMW@16

_WriteConsoleInputW@16

_WriteConsoleOutputA@20

_WriteConsoleOutputAttribute@20

_WriteConsoleOutputCharacterA@20

_WriteConsoleOutputCharacterW@20

_WriteConsoleOutputW@20

_WriteConsoleW@20

_WriteFile@20

_WriteFileEx@20

_WritePrivateProfileSectionA@12

_WritePrivateProfileSectionW@12

_WritePrivateProfileStringA@16

_WritePrivateProfileStringW@16

_WritePrivateProfileStructA@20

_WritePrivateProfileStructW@20

_WriteProcessMemory@20

_WriteProfileSectionA@8

_WriteProfileSectionW@8

_WriteProfileStringA@12

_WriteProfileStringW@12

_WriteTapemark@16

__IMPORT_DESCRIPTOR_KERNEL32

__NULL_IMPORT_DESCRIPTOR

__hread@12

__hwrite@12

__lclose@4

__lcreat@8

__llseek@12

__lopen@8

__lread@12

__lwrite@12

_lstrcat@8

_lstrcatA@8

_lstrcatW@8

_lstrcmp@8

_lstrcmpA@8

_lstrcmpW@8

_lstrcmpi@8

_lstrcmpiA@8

_lstrcmpiW@8

_lstrcpy@8

_lstrcpyA@8

_lstrcpyW@8

_lstrcpyn@12

_lstrcpynA@12

_lstrcpynW@12

_lstrlen@4

_lstrlenA@4

_lstrlenW@4

 

 

Kernel32.lib Pointer Variable Export Names

__imp__AddAtomA@4

__imp__AddAtomW@4

__imp__AddConsoleAliasA@12

__imp__AddConsoleAliasW@12

__imp__AllocConsole@0

__imp__AreFileApisANSI@0

__imp__BackupRead@28

__imp__BackupSeek@24

__imp__BackupWrite@28

__imp__BaseAttachCompleteThunk@0

__imp__Beep@8

__imp__BeginUpdateResourceA@8

__imp__BeginUpdateResourceW@8

__imp__BuildCommDCBA@8

__imp__BuildCommDCBAndTimeoutsA@12

__imp__BuildCommDCBAndTimeoutsW@12

__imp__BuildCommDCBW@8

__imp__CallNamedPipeA@28

__imp__CallNamedPipeW@28

__imp__CancelIo@4

__imp__CancelWaitableTimer@4

__imp__ClearCommBreak@4

__imp__ClearCommError@12

__imp__CloseConsoleHandle@4

__imp__CloseHandle@4

__imp__CloseProfileUserMapping@0

__imp__CmdBatNotification@4

__imp__CommConfigDialogA@12

__imp__CommConfigDialogW@12

__imp__CompareFileTime@8

__imp__CompareStringA@24

__imp__CompareStringW@24

__imp__ConnectNamedPipe@8

__imp__ConsoleMenuControl@12

__imp__ContinueDebugEvent@12

__imp__ConvertDefaultLocale@4

__imp__ConvertThreadToFiber@4

__imp__CopyFileA@12

__imp__CopyFileExA@24

__imp__CopyFileExW@24

__imp__CopyFileW@12

__imp__CreateConsoleScreenBuffer@20

__imp__CreateDirectoryA@8

__imp__CreateDirectoryExA@12

__imp__CreateDirectoryExW@12

__imp__CreateDirectoryW@8

__imp__CreateEventA@16

__imp__CreateEventW@16

__imp__CreateFiber@12

__imp__CreateFileA@28

__imp__CreateFileMappingA@24

__imp__CreateFileMappingW@24

__imp__CreateFileW@28

__imp__CreateIoCompletionPort@16

__imp__CreateMailslotA@16

__imp__CreateMailslotW@16

__imp__CreateMutexA@12

__imp__CreateMutexW@12

__imp__CreateNamedPipeA@32

__imp__CreateNamedPipeW@32

__imp__CreatePipe@16

__imp__CreateProcessA@40

__imp__CreateProcessW@40

__imp__CreateRemoteThread@28

__imp__CreateSemaphoreA@16

__imp__CreateSemaphoreW@16

__imp__CreateTapePartition@16

__imp__CreateThread@24

__imp__CreateVirtualBuffer@12

__imp__CreateWaitableTimerA@12

__imp__CreateWaitableTimerW@12

__imp__DebugActiveProcess@4

__imp__DebugBreak@0

__imp__DefineDosDeviceA@12

__imp__DefineDosDeviceW@12

__imp__DeleteAtom@4

__imp__DeleteCriticalSection@4

__imp__DeleteFiber@4

__imp__DeleteFileA@4

__imp__DeleteFileW@4

__imp__DeviceIoControl@32

__imp__DisableThreadLibraryCalls@4

__imp__DisconnectNamedPipe@4

__imp__DosDateTimeToFileTime@12

__imp__DuplicateConsoleHandle@16

__imp__DuplicateHandle@28

__imp__EndUpdateResourceA@8

__imp__EndUpdateResourceW@8

__imp__EnterCriticalSection@4

__imp__EnumCalendarInfoA@16

__imp__EnumCalendarInfoW@16

__imp__EnumDateFormatsA@12

__imp__EnumDateFormatsW@12

__imp__EnumResourceLanguagesA@20

__imp__EnumResourceLanguagesW@20

__imp__EnumResourceNamesA@16

__imp__EnumResourceNamesW@16

__imp__EnumResourceTypesA@12

__imp__EnumResourceTypesW@12

__imp__EnumSystemCodePagesA@8

__imp__EnumSystemCodePagesW@8

__imp__EnumSystemLocalesA@8

__imp__EnumSystemLocalesW@8

__imp__EnumTimeFormatsA@12

__imp__EnumTimeFormatsW@12

__imp__EraseTape@12

__imp__EscapeCommFunction@8

__imp__ExitProcess@4

__imp__ExitThread@4

__imp__ExitVDM@8

__imp__ExpandEnvironmentStringsA@12

__imp__ExpandEnvironmentStringsW@12

__imp__ExpungeConsoleCommandHistoryA@4

__imp__ExpungeConsoleCommandHistoryW@4

__imp__ExtendVirtualBuffer@8

__imp__FatalAppExitA@8

__imp__FatalAppExitW@8

__imp__FatalExit@4

__imp__FileTimeToDosDateTime@12

__imp__FileTimeToLocalFileTime@8

__imp__FileTimeToSystemTime@8

__imp__FillConsoleOutputAttribute@20

__imp__FillConsoleOutputCharacterA@20

__imp__FillConsoleOutputCharacterW@20

__imp__FindAtomA@4

__imp__FindAtomW@4

__imp__FindClose@4

__imp__FindCloseChangeNotification@4

__imp__FindFirstChangeNotificationA@12

__imp__FindFirstChangeNotificationW@12

__imp__FindFirstFileA@8

__imp__FindFirstFileExA@24

__imp__FindFirstFileExW@24

__imp__FindFirstFileW@8

__imp__FindNextChangeNotification@4

__imp__FindNextFileA@8

__imp__FindNextFileW@8

__imp__FindResourceA@12

__imp__FindResourceExA@16

__imp__FindResourceExW@16

__imp__FindResourceW@12

__imp__FlushConsoleInputBuffer@4

__imp__FlushFileBuffers@4

__imp__FlushInstructionCache@12

__imp__FlushViewOfFile@8

__imp__FoldStringA@20

__imp__FoldStringW@20

__imp__FormatMessageA@28

__imp__FormatMessageW@28

__imp__FreeConsole@0

__imp__FreeEnvironmentStringsA@4

__imp__FreeEnvironmentStringsW@4

__imp__FreeLibrary@4

__imp__FreeLibraryAndExitThread@8

__imp__FreeResource@4

__imp__FreeVirtualBuffer@4

__imp__GenerateConsoleCtrlEvent@8

__imp__GetACP@0

__imp__GetAtomNameA@12

__imp__GetAtomNameW@12

__imp__GetBinaryType@8

__imp__GetBinaryTypeA@8

__imp__GetBinaryTypeW@8

__imp__GetCPInfo@8

__imp__GetCommConfig@12

__imp__GetCommMask@8

__imp__GetCommModemStatus@8

__imp__GetCommProperties@8

__imp__GetCommState@8

__imp__GetCommTimeouts@8

__imp__GetCommandLineA@0

__imp__GetCommandLineW@0

__imp__GetCompressedFileSizeA@8

__imp__GetCompressedFileSizeW@8

__imp__GetComputerNameA@8

__imp__GetComputerNameW@8

__imp__GetConsoleAliasA@16

__imp__GetConsoleAliasExesA@8

__imp__GetConsoleAliasExesLengthA@0

__imp__GetConsoleAliasExesLengthW@0

__imp__GetConsoleAliasExesW@8

__imp__GetConsoleAliasW@16

__imp__GetConsoleAliasesA@12

__imp__GetConsoleAliasesLengthA@4

__imp__GetConsoleAliasesLengthW@4

__imp__GetConsoleAliasesW@12

__imp__GetConsoleCP@0

__imp__GetConsoleCommandHistoryA@12

__imp__GetConsoleCommandHistoryLengthA@4

__imp__GetConsoleCommandHistoryLengthW@4

__imp__GetConsoleCommandHistoryW@12

__imp__GetConsoleCursorInfo@8

__imp__GetConsoleDisplayMode@4

__imp__GetConsoleFontInfo@16

__imp__GetConsoleFontSize@8

__imp__GetConsoleHardwareState@12

__imp__GetConsoleInputExeNameA@8

__imp__GetConsoleInputExeNameW@8

__imp__GetConsoleInputWaitHandle@0

__imp__GetConsoleKeyboardLayoutNameA@4

__imp__GetConsoleKeyboardLayoutNameW@4

__imp__GetConsoleMode@8

__imp__GetConsoleOutputCP@0

__imp__GetConsoleScreenBufferInfo@8

__imp__GetConsoleTitleA@8

__imp__GetConsoleTitleW@8

__imp__GetCurrencyFormatA@24

__imp__GetCurrencyFormatW@24

__imp__GetCurrentConsoleFont@12

__imp__GetCurrentDirectoryA@8

__imp__GetCurrentDirectoryW@8

__imp__GetCurrentProcess@0

__imp__GetCurrentProcessId@0

__imp__GetCurrentThread@0

__imp__GetCurrentThreadId@0

__imp__GetDateFormatA@24

__imp__GetDateFormatW@24

__imp__GetDefaultCommConfigA@12

__imp__GetDefaultCommConfigW@12

__imp__GetDiskFreeSpaceA@20

__imp__GetDiskFreeSpaceExA@16

__imp__GetDiskFreeSpaceExW@16

__imp__GetDiskFreeSpaceW@20

__imp__GetDriveTypeA@4

__imp__GetDriveTypeW@4

__imp__GetEnvironmentStrings@0

__imp__GetEnvironmentStringsA@0

__imp__GetEnvironmentStringsW@0

__imp__GetEnvironmentVariableA@12

__imp__GetEnvironmentVariableW@12

__imp__GetExitCodeProcess@8

__imp__GetExitCodeThread@8

__imp__GetFileAttributesA@4

__imp__GetFileAttributesExA@12

__imp__GetFileAttributesExW@12

__imp__GetFileAttributesW@4

__imp__GetFileInformationByHandle@8

__imp__GetFileSize@8

__imp__GetFileTime@16

__imp__GetFileType@4

__imp__GetFullPathNameA@16

__imp__GetFullPathNameW@16

__imp__GetHandleInformation@8

__imp__GetLargestConsoleWindowSize@4

__imp__GetLastError@0

__imp__GetLocalTime@4

__imp__GetLocaleInfoA@16

__imp__GetLocaleInfoW@16

__imp__GetLogicalDriveStringsA@8

__imp__GetLogicalDriveStringsW@8

__imp__GetLogicalDrives@0

__imp__GetMailslotInfo@20

__imp__GetModuleFileNameA@12

__imp__GetModuleFileNameW@12

__imp__GetModuleHandleA@4

__imp__GetModuleHandleW@4

__imp__GetNamedPipeHandleStateA@28

__imp__GetNamedPipeHandleStateW@28

__imp__GetNamedPipeInfo@20

__imp__GetNextVDMCommand@4

__imp__GetNumberFormatA@24

__imp__GetNumberFormatW@24

__imp__GetNumberOfConsoleFonts@0

__imp__GetNumberOfConsoleInputEvents@8

__imp__GetNumberOfConsoleMouseButtons@4

__imp__GetOEMCP@0

__imp__GetOverlappedResult@16

__imp__GetPriorityClass@4

__imp__GetPrivateProfileIntA@16

__imp__GetPrivateProfileIntW@16

__imp__GetPrivateProfileSectionA@16

__imp__GetPrivateProfileSectionNamesA@12

__imp__GetPrivateProfileSectionNamesW@12

__imp__GetPrivateProfileSectionW@16

__imp__GetPrivateProfileStringA@24

__imp__GetPrivateProfileStringW@24

__imp__GetPrivateProfileStructA@20

__imp__GetPrivateProfileStructW@20

__imp__GetProcAddress@8

__imp__GetProcessAffinityMask@12

__imp__GetProcessHeap@0

__imp__GetProcessHeaps@8

__imp__GetProcessPriorityBoost@8

__imp__GetProcessShutdownParameters@8

__imp__GetProcessTimes@20

__imp__GetProcessVersion@4

__imp__GetProcessWorkingSetSize@12

__imp__GetProfileIntA@12

__imp__GetProfileIntW@12

__imp__GetProfileSectionA@12

__imp__GetProfileSectionW@12

__imp__GetProfileStringA@20

__imp__GetProfileStringW@20

__imp__GetQueuedCompletionStatus@20

__imp__GetShortPathNameA@12

__imp__GetShortPathNameW@12

__imp__GetStartupInfoA@4

__imp__GetStartupInfoW@4

__imp__GetStdHandle@4

__imp__GetStringTypeA@20

__imp__GetStringTypeExA@20

__imp__GetStringTypeExW@20

__imp__GetStringTypeW@16

__imp__GetSystemDefaultLCID@0

__imp__GetSystemDefaultLangID@0

__imp__GetSystemDirectoryA@8

__imp__GetSystemDirectoryW@8

__imp__GetSystemInfo@4

__imp__GetSystemPowerStatus@4

__imp__GetSystemTime@4

__imp__GetSystemTimeAdjustment@12

__imp__GetSystemTimeAsFileTime@4

__imp__GetTapeParameters@16

__imp__GetTapePosition@20

__imp__GetTapeStatus@4

__imp__GetTempFileNameA@16

__imp__GetTempFileNameW@16

__imp__GetTempPathA@8

__imp__GetTempPathW@8

__imp__GetThreadContext@8

__imp__GetThreadLocale@0

__imp__GetThreadPriority@4

__imp__GetThreadPriorityBoost@8

__imp__GetThreadSelectorEntry@12

__imp__GetThreadTimes@20

__imp__GetTickCount@0

__imp__GetTimeFormatA@24

__imp__GetTimeFormatW@24

__imp__GetTimeZoneInformation@4

__imp__GetUserDefaultLCID@0

__imp__GetUserDefaultLangID@0

__imp__GetVDMCurrentDirectories@8

__imp__GetVersion@0

__imp__GetVersionExA@4

__imp__GetVersionExW@4

__imp__GetVolumeInformationA@32

__imp__GetVolumeInformationW@32

__imp__GetWindowsDirectoryA@8

__imp__GetWindowsDirectoryW@8

__imp__GlobalAddAtomA@4

__imp__GlobalAddAtomW@4

__imp__GlobalAlloc@8

__imp__GlobalCompact@4

__imp__GlobalDeleteAtom@4

__imp__GlobalFindAtomA@4

__imp__GlobalFindAtomW@4

__imp__GlobalFix@4

__imp__GlobalFlags@4

__imp__GlobalFree@4

__imp__GlobalGetAtomNameA@12

__imp__GlobalGetAtomNameW@12

__imp__GlobalHandle@4

__imp__GlobalLock@4

__imp__GlobalMemoryStatus@4

__imp__GlobalReAlloc@12

__imp__GlobalSize@4

__imp__GlobalUnWire@4

__imp__GlobalUnfix@4

__imp__GlobalUnlock@4

__imp__GlobalWire@4

__imp__HeapAlloc@12

__imp__HeapCompact@8

__imp__HeapCreate@12

__imp__HeapCreateTagsW@16

__imp__HeapDestroy@4

__imp__HeapExtend@16

__imp__HeapFree@12

__imp__HeapLock@4

__imp__HeapQueryTagW@20

__imp__HeapReAlloc@16

__imp__HeapSize@12

__imp__HeapSummary@12

__imp__HeapUnlock@4

__imp__HeapUsage@20

__imp__HeapValidate@12

__imp__HeapWalk@8

__imp__InitAtomTable@4

__imp__InitializeCriticalSection@4

__imp__InterlockedCompareExchange@12

__imp__InterlockedDecrement@4

__imp__InterlockedExchange@8

__imp__InterlockedExchangeAdd@8

__imp__InterlockedIncrement@4

__imp__InvalidateConsoleDIBits@8

__imp__IsBadCodePtr@4

__imp__IsBadHugeReadPtr@8

__imp__IsBadHugeWritePtr@8

__imp__IsBadReadPtr@8

__imp__IsBadStringPtrA@8

__imp__IsBadStringPtrW@8

__imp__IsBadWritePtr@8

__imp__IsDBCSLeadByte@4

__imp__IsDBCSLeadByteEx@8

__imp__IsDebuggerPresent@0

__imp__IsProcessorFeaturePresent@4

__imp__IsValidCodePage@4

__imp__IsValidLocale@8

__imp__LCMapStringA@24

__imp__LCMapStringW@24

__imp__LeaveCriticalSection@4

__imp__LoadLibraryA@4

__imp__LoadLibraryExA@12

__imp__LoadLibraryExW@12

__imp__LoadLibraryW@4

__imp__LoadModule@8

__imp__LoadResource@8

__imp__LocalAlloc@8

__imp__LocalCompact@4

__imp__LocalFileTimeToFileTime@8

__imp__LocalFlags@4

__imp__LocalFree@4

__imp__LocalHandle@4

__imp__LocalLock@4

__imp__LocalReAlloc@12

__imp__LocalShrink@8

__imp__LocalSize@4

__imp__LocalUnlock@4

__imp__LockFile@20

__imp__LockFileEx@24

__imp__LockResource@4

__imp__MapViewOfFile@20

__imp__MapViewOfFileEx@24

__imp__MoveFileA@8

__imp__MoveFileExA@12

__imp__MoveFileExW@12

__imp__MoveFileW@8

__imp__MulDiv@12

__imp__MultiByteToWideChar@24

__imp__OpenConsoleW@16

__imp__OpenEventA@12

__imp__OpenEventW@12

__imp__OpenFile@12

__imp__OpenFileMappingA@12

__imp__OpenFileMappingW@12

__imp__OpenMutexA@12

__imp__OpenMutexW@12

__imp__OpenProcess@12

__imp__OpenProfileUserMapping@0

__imp__OpenSemaphoreA@12

__imp__OpenSemaphoreW@12

__imp__OpenWaitableTimerA@12

__imp__OpenWaitableTimerW@12

__imp__OutputDebugStringA@4

__imp__OutputDebugStringW@4

__imp__PeekConsoleInputA@16

__imp__PeekConsoleInputW@16

__imp__PeekNamedPipe@24

__imp__PostQueuedCompletionStatus@16

__imp__PrepareTape@12

__imp__PulseEvent@4

__imp__PurgeComm@8

__imp__QueryDosDeviceA@12

__imp__QueryDosDeviceW@12

__imp__QueryPerformanceCounter@4

__imp__QueryPerformanceFrequency@4

__imp__QueryWin31IniFilesMappedToRegistry@16

__imp__QueueUserAPC@12

__imp__RaiseException@16

__imp__ReadConsoleA@20

__imp__ReadConsoleInputA@16

__imp__ReadConsoleInputExA@20

__imp__ReadConsoleInputExW@20

__imp__ReadConsoleInputW@16

__imp__ReadConsoleOutputA@20

__imp__ReadConsoleOutputAttribute@20

__imp__ReadConsoleOutputCharacterA@20

__imp__ReadConsoleOutputCharacterW@20

__imp__ReadConsoleOutputW@20

__imp__ReadConsoleW@20

__imp__ReadDirectoryChangesW@32

__imp__ReadFile@20

__imp__ReadFileEx@20

__imp__ReadProcessMemory@20

__imp__RegisterConsoleVDM@44

__imp__RegisterWaitForInputIdle@4

__imp__RegisterWowBaseHandlers@4

__imp__RegisterWowExec@4

__imp__ReleaseMutex@4

__imp__ReleaseSemaphore@12

__imp__RemoveDirectoryA@4

__imp__RemoveDirectoryW@4

__imp__ResetEvent@4

__imp__ResumeThread@4

__imp__RtlFillMemory@12

__imp__RtlMoveMemory@12

__imp__RtlUnwind@16

__imp__RtlZeroMemory@8

__imp__ScrollConsoleScreenBufferA@20

__imp__ScrollConsoleScreenBufferW@20

__imp__SearchPathA@24

__imp__SearchPathW@24

__imp__SetCommBreak@4

__imp__SetCommConfig@12

__imp__SetCommMask@8

__imp__SetCommState@8

__imp__SetCommTimeouts@8

__imp__SetComputerNameA@4

__imp__SetComputerNameW@4

__imp__SetConsoleActiveScreenBuffer@4

__imp__SetConsoleCP@4

__imp__SetConsoleCommandHistoryMode@4

__imp__SetConsoleCtrlHandler@8

__imp__SetConsoleCursor@8

__imp__SetConsoleCursorInfo@8

__imp__SetConsoleCursorPosition@8

__imp__SetConsoleDisplayMode@12

__imp__SetConsoleFont@8

__imp__SetConsoleHardwareState@12

__imp__SetConsoleIcon@4

__imp__SetConsoleInputExeNameA@4

__imp__SetConsoleInputExeNameW@4

__imp__SetConsoleKeyShortcuts@16

__imp__SetConsoleMaximumWindowSize@8

__imp__SetConsoleMenuClose@4

__imp__SetConsoleMode@8

__imp__SetConsoleNumberOfCommandsA@8

__imp__SetConsoleNumberOfCommandsW@8

__imp__SetConsoleOutputCP@4

__imp__SetConsolePalette@12

__imp__SetConsoleScreenBufferSize@8

__imp__SetConsoleTextAttribute@8

__imp__SetConsoleTitleA@4

__imp__SetConsoleTitleW@4

__imp__SetConsoleWindowInfo@12

__imp__SetCurrentDirectoryA@4

__imp__SetCurrentDirectoryW@4

__imp__SetDefaultCommConfigA@12

__imp__SetDefaultCommConfigW@12

__imp__SetEndOfFile@4

__imp__SetEnvironmentVariableA@8

__imp__SetEnvironmentVariableW@8

__imp__SetErrorMode@4

__imp__SetEvent@4

__imp__SetFileApisToANSI@0

__imp__SetFileApisToOEM@0

__imp__SetFileAttributesA@8

__imp__SetFileAttributesW@8

__imp__SetFilePointer@16

__imp__SetFileTime@16

__imp__SetHandleCount@4

__imp__SetHandleInformation@12

__imp__SetLastConsoleEventActive@0

__imp__SetLastError@4

__imp__SetLocalTime@4

__imp__SetLocaleInfoA@12

__imp__SetLocaleInfoW@12

__imp__SetMailslotInfo@8

__imp__SetNamedPipeHandleState@16

__imp__SetPriorityClass@8

__imp__SetProcessAffinityMask@8

__imp__SetProcessPriorityBoost@8

__imp__SetProcessShutdownParameters@8

__imp__SetProcessWorkingSetSize@12

__imp__SetStdHandle@8

__imp__SetSystemPowerState@8

__imp__SetSystemTime@4

__imp__SetSystemTimeAdjustment@8

__imp__SetTapeParameters@12

__imp__SetTapePosition@24

__imp__SetThreadAffinityMask@8

__imp__SetThreadContext@8

__imp__SetThreadIdealProcessor@8

__imp__SetThreadLocale@4

__imp__SetThreadPriority@8

__imp__SetThreadPriorityBoost@8

__imp__SetTimeZoneInformation@4

__imp__SetUnhandledExceptionFilter@4

__imp__SetVDMCurrentDirectories@8

__imp__SetVolumeLabelA@8

__imp__SetVolumeLabelW@8

__imp__SetWaitableTimer@24

__imp__SetupComm@12

__imp__ShowConsoleCursor@8

__imp__SignalObjectAndWait@16

__imp__SizeofResource@8

__imp__Sleep@4

__imp__SleepEx@8

__imp__SuspendThread@4

__imp__SwitchToFiber@4

__imp__SwitchToThread@0

__imp__SystemTimeToFileTime@8

__imp__SystemTimeToTzSpecificLocalTime@12

__imp__TerminateProcess@8

__imp__TerminateThread@8

__imp__TlsAlloc@0

__imp__TlsFree@4

__imp__TlsGetValue@4

__imp__TlsSetValue@8

__imp__TransactNamedPipe@28

__imp__TransmitCommChar@8

__imp__TrimVirtualBuffer@4

__imp__TryEnterCriticalSection@4

__imp__UnhandledExceptionFilter@4

__imp__UnlockFile@20

__imp__UnlockFileEx@20

__imp__UnmapViewOfFile@4

__imp__UpdateResourceA@24

__imp__UpdateResourceW@24

__imp__VDMConsoleOperation@8

__imp__VDMOperationStarted@4

__imp__VerLanguageNameA@12

__imp__VerLanguageNameW@12

__imp__VerifyConsoleIoHandle@4

__imp__VirtualAlloc@16

__imp__VirtualAllocEx@20

__imp__VirtualBufferExceptionHandler@12

__imp__VirtualFree@12

__imp__VirtualFreeEx@16

__imp__VirtualLock@8

__imp__VirtualProtect@16

__imp__VirtualProtectEx@20

__imp__VirtualQuery@12

__imp__VirtualQueryEx@16

__imp__VirtualUnlock@8

__imp__WaitCommEvent@12

__imp__WaitForDebugEvent@8

__imp__WaitForMultipleObjects@16

__imp__WaitForMultipleObjectsEx@20

__imp__WaitForSingleObject@8

__imp__WaitForSingleObjectEx@12

__imp__WaitNamedPipeA@8

__imp__WaitNamedPipeW@8

__imp__WideCharToMultiByte@32

__imp__WinExec@8

__imp__WriteConsoleA@20

__imp__WriteConsoleInputA@16

__imp__WriteConsoleInputVDMA@16

__imp__WriteConsoleInputVDMW@16

__imp__WriteConsoleInputW@16

__imp__WriteConsoleOutputA@20

__imp__WriteConsoleOutputAttribute@20

__imp__WriteConsoleOutputCharacterA@20

__imp__WriteConsoleOutputCharacterW@20

__imp__WriteConsoleOutputW@20

__imp__WriteConsoleW@20

__imp__WriteFile@20

__imp__WriteFileEx@20

__imp__WritePrivateProfileSectionA@12

__imp__WritePrivateProfileSectionW@12

__imp__WritePrivateProfileStringA@16

__imp__WritePrivateProfileStringW@16

__imp__WritePrivateProfileStructA@20

__imp__WritePrivateProfileStructW@20

__imp__WriteProcessMemory@20

__imp__WriteProfileSectionA@8

__imp__WriteProfileSectionW@8

__imp__WriteProfileStringA@12

__imp__WriteProfileStringW@12

__imp__WriteTapemark@16

__imp___hread@12

__imp___hwrite@12

__imp___lclose@4

__imp___lcreat@8

__imp___llseek@12

__imp___lopen@8

__imp___lread@12

__imp___lwrite@12

__imp__lstrcat@8

__imp__lstrcatA@8

__imp__lstrcatW@8

__imp__lstrcmp@8

__imp__lstrcmpA@8

__imp__lstrcmpW@8

__imp__lstrcmpi@8

__imp__lstrcmpiA@8

__imp__lstrcmpiW@8

__imp__lstrcpy@8

__imp__lstrcpyA@8

__imp__lstrcpyW@8

__imp__lstrcpyn@12

__imp__lstrcpynA@12

__imp__lstrcpynW@12

__imp__lstrlen@4

__imp__lstrlenA@4

__imp__lstrlenW@4