Cygwin: autoload: clean up arguments to LoadDllFunc*

The number of args multiplied by 4 was only required for
32 bit x86 to construct the symbol name correctly.  Drop it.

In the assembler code, split the numerical values for "notimp"
and "err" into half words for cleaner layout.

Fix description accordingly.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2023-01-17 16:28:01 +01:00
parent 49b52521f3
commit 77680cac94
1 changed files with 220 additions and 217 deletions

View File

@ -31,10 +31,12 @@ bool NO_COPY wsock_started;
* we have: * we have:
* DLL info (4/8 bytes) Pointer to a block of information concerning * DLL info (4/8 bytes) Pointer to a block of information concerning
* the DLL (see below). * the DLL (see below).
* DLL args (4 bytes) The number of arguments pushed on the stack by * DLL notimp (2 bytes) Bool value flagging that non-existence of this
* the call. If this is an odd value then this * function is not a fatal error.
* is a flag that non-existence of this function * DLL error (2 bytes) Error value returned if function load fails.
* is not a fatal error * Depends on the return type of the function.
* Default is 0 == BOOL FALSE or == HANDLE NULL or
* == Pointer NULL.
* func addr (8 bytes) Address of the actual Win32 function. For the * func addr (8 bytes) Address of the actual Win32 function. For the
* reason why this is necessary, see the below * reason why this is necessary, see the below
* description of the load_state. * description of the load_state.
@ -87,16 +89,16 @@ bool NO_COPY wsock_started;
/* Standard DLL load macro. May invoke a fatal error if the function isn't /* Standard DLL load macro. May invoke a fatal error if the function isn't
found. */ found. */
#define LoadDLLfunc(name, n, dllname) \ #define LoadDLLfunc(name, dllname) \
LoadDLLfuncEx (name, n, dllname, 0) LoadDLLfuncEx (name, dllname, 0)
#define LoadDLLfuncEx(name, n, dllname, notimp) \ #define LoadDLLfuncEx(name, dllname, notimp) \
LoadDLLfuncEx2(name, n, dllname, notimp, 0) LoadDLLfuncEx2(name, dllname, notimp, 0)
#define LoadDLLfuncEx2(name, n, dllname, notimp, err) \ #define LoadDLLfuncEx2(name, dllname, notimp, err) \
LoadDLLfuncEx3(name, n, dllname, notimp, err, 0) LoadDLLfuncEx3(name, dllname, notimp, err, 0)
/* Main DLL setup stuff. */ /* Main DLL setup stuff. */
#ifdef __x86_64__ #ifdef __x86_64__
#define LoadDLLfuncEx3(name, n, dllname, notimp, err, no_resolve_on_fork) \ #define LoadDLLfuncEx3(name, dllname, notimp, err, no_resolve_on_fork) \
LoadDLLprime (dllname, dll_func_load, no_resolve_on_fork) \ LoadDLLprime (dllname, dll_func_load, no_resolve_on_fork) \
__asm__ (" \n\ __asm__ (" \n\
.section ." #dllname "_autoload_text,\"wx\" \n\ .section ." #dllname "_autoload_text,\"wx\" \n\
@ -115,7 +117,8 @@ _win32_" #name ": \n\
push %rcx \n\ push %rcx \n\
call *(%rax) \n\ call *(%rax) \n\
2:.quad ." #dllname "_info \n\ 2:.quad ." #dllname "_info \n\
.long (" #n "+" #notimp ") | (((" #err ") & 0xff) <<16) \n\ .hword " #notimp " \n\
.hword ((" #err ") & 0xffff) \n\
3:.quad 1b \n\ 3:.quad 1b \n\
.asciz \"" #name "\" \n\ .asciz \"" #name "\" \n\
.text \n\ .text \n\
@ -152,11 +155,11 @@ noload: \n\
test $1,%eax # of this function? \n\ test $1,%eax # of this function? \n\
jz 1f # Nope. \n\ jz 1f # Nope. \n\
andl $0xffff0000,%eax# upper word (== desired return value) \n\ andl $0xffff0000,%eax# upper word (== desired return value) \n\
sarl $16,%eax # swap to low order word \n\
movl %eax,32(%rsp) # Save for later (in shadow space) \n\ movl %eax,32(%rsp) # Save for later (in shadow space) \n\
movl $127,%ecx # ERROR_PROC_NOT_FOUND \n\ movl $127,%ecx # ERROR_PROC_NOT_FOUND \n\
call SetLastError # Set it \n\ call SetLastError # Set it \n\
movl 32(%rsp),%eax # Get back return value \n\ movl 32(%rsp),%eax # Get back return value \n\
sarl $16,%eax # swap to low order word \n\
addq $40,%rsp # Revert stack \n\ addq $40,%rsp # Revert stack \n\
pop %r10 # Drop pointer to 'return address' \n\ pop %r10 # Drop pointer to 'return address' \n\
pop %rcx # Restore arg registers \n\ pop %rcx # Restore arg registers \n\
@ -412,229 +415,229 @@ wsock_init (struct func_info *func)
LoadDLLprime (ws2_32, _wsock_init, 0) LoadDLLprime (ws2_32, _wsock_init, 0)
LoadDLLfunc (CheckTokenMembership, 12, advapi32) LoadDLLfunc (CheckTokenMembership, advapi32)
LoadDLLfunc (CreateProcessAsUserW, 44, advapi32) LoadDLLfunc (CreateProcessAsUserW, advapi32)
LoadDLLfunc (DeregisterEventSource, 4, advapi32) LoadDLLfunc (DeregisterEventSource, advapi32)
LoadDLLfunc (DecryptFileW, 8, advapi32) LoadDLLfunc (DecryptFileW, advapi32)
LoadDLLfunc (EncryptFileW, 4, advapi32) LoadDLLfunc (EncryptFileW, advapi32)
LoadDLLfunc (LogonUserW, 24, advapi32) LoadDLLfunc (LogonUserW, advapi32)
LoadDLLfunc (LookupAccountNameW, 28, advapi32) LoadDLLfunc (LookupAccountNameW, advapi32)
LoadDLLfunc (LookupAccountSidW, 28, advapi32) LoadDLLfunc (LookupAccountSidW, advapi32)
LoadDLLfunc (LsaClose, 4, advapi32) LoadDLLfunc (LsaClose, advapi32)
LoadDLLfunc (LsaEnumerateAccountRights, 16, advapi32) LoadDLLfunc (LsaEnumerateAccountRights, advapi32)
LoadDLLfunc (LsaFreeMemory, 4, advapi32) LoadDLLfunc (LsaFreeMemory, advapi32)
LoadDLLfunc (LsaLookupSids, 20, advapi32) LoadDLLfunc (LsaLookupSids, advapi32)
LoadDLLfunc (LsaOpenPolicy, 16, advapi32) LoadDLLfunc (LsaOpenPolicy, advapi32)
LoadDLLfunc (LsaQueryInformationPolicy, 12, advapi32) LoadDLLfunc (LsaQueryInformationPolicy, advapi32)
LoadDLLfunc (LsaRetrievePrivateData, 12, advapi32) LoadDLLfunc (LsaRetrievePrivateData, advapi32)
LoadDLLfunc (LsaStorePrivateData, 12, advapi32) LoadDLLfunc (LsaStorePrivateData, advapi32)
LoadDLLfunc (RegOpenUserClassesRoot, 16, advapi32) LoadDLLfunc (RegOpenUserClassesRoot, advapi32)
LoadDLLfunc (RegOpenCurrentUser, 8, advapi32) LoadDLLfunc (RegOpenCurrentUser, advapi32)
LoadDLLfunc (RegCloseKey, 4, advapi32) LoadDLLfunc (RegCloseKey, advapi32)
LoadDLLfunc (RegCreateKeyExW, 36, advapi32) LoadDLLfunc (RegCreateKeyExW, advapi32)
LoadDLLfunc (RegEnumKeyExW, 32, advapi32) LoadDLLfunc (RegEnumKeyExW, advapi32)
LoadDLLfunc (RegEnumValueW, 32, advapi32) LoadDLLfunc (RegEnumValueW, advapi32)
LoadDLLfunc (RegGetKeySecurity, 16, advapi32) LoadDLLfunc (RegGetKeySecurity, advapi32)
LoadDLLfunc (RegOpenKeyExW, 20, advapi32) LoadDLLfunc (RegOpenKeyExW, advapi32)
LoadDLLfunc (RegQueryInfoKeyW, 48, advapi32) LoadDLLfunc (RegQueryInfoKeyW, advapi32)
LoadDLLfunc (RegQueryValueExW, 24, advapi32) LoadDLLfunc (RegQueryValueExW, advapi32)
LoadDLLfunc (RegisterEventSourceW, 8, advapi32) LoadDLLfunc (RegisterEventSourceW, advapi32)
LoadDLLfunc (ReportEventW, 36, advapi32) LoadDLLfunc (ReportEventW, advapi32)
LoadDLLfunc (SystemFunction036, 8, advapi32) /* Aka "RtlGenRandom" */ LoadDLLfunc (SystemFunction036, advapi32) /* Aka "RtlGenRandom" */
LoadDLLfunc (AuthzAccessCheck, 36, authz) LoadDLLfunc (AuthzAccessCheck, authz)
LoadDLLfunc (AuthzFreeContext, 4, authz) LoadDLLfunc (AuthzFreeContext, authz)
LoadDLLfunc (AuthzInitializeContextFromSid, 32, authz) LoadDLLfunc (AuthzInitializeContextFromSid, authz)
LoadDLLfunc (AuthzInitializeContextFromToken, 32, authz) LoadDLLfunc (AuthzInitializeContextFromToken, authz)
LoadDLLfunc (AuthzInitializeResourceManager, 24, authz) LoadDLLfunc (AuthzInitializeResourceManager, authz)
LoadDLLfunc (DnsQuery_A, 24, dnsapi) LoadDLLfunc (DnsQuery_A, dnsapi)
LoadDLLfunc (DnsFree, 8, dnsapi) LoadDLLfunc (DnsFree, dnsapi)
LoadDLLfunc (GetAdaptersAddresses, 20, iphlpapi) LoadDLLfunc (GetAdaptersAddresses, iphlpapi)
LoadDLLfunc (GetIfEntry, 4, iphlpapi) LoadDLLfunc (GetIfEntry, iphlpapi)
LoadDLLfunc (GetIpAddrTable, 12, iphlpapi) LoadDLLfunc (GetIpAddrTable, iphlpapi)
LoadDLLfunc (GetIpForwardTable, 12, iphlpapi) LoadDLLfunc (GetIpForwardTable, iphlpapi)
LoadDLLfunc (GetNetworkParams, 8, iphlpapi) LoadDLLfunc (GetNetworkParams, iphlpapi)
LoadDLLfunc (GetTcpTable, 12, iphlpapi) LoadDLLfunc (GetTcpTable, iphlpapi)
LoadDLLfunc (GetTcp6Table, 12, iphlpapi) LoadDLLfunc (GetTcp6Table, iphlpapi)
LoadDLLfunc (GetUdpTable, 12, iphlpapi) LoadDLLfunc (GetUdpTable, iphlpapi)
LoadDLLfunc (if_indextoname, 8, iphlpapi) LoadDLLfunc (if_indextoname, iphlpapi)
LoadDLLfunc (if_nametoindex, 4, iphlpapi) LoadDLLfunc (if_nametoindex, iphlpapi)
LoadDLLfuncEx (ClosePseudoConsole, 4, kernel32, 1) LoadDLLfuncEx (ClosePseudoConsole, kernel32, 1)
LoadDLLfuncEx (CreatePseudoConsole, 20, kernel32, 1) LoadDLLfuncEx (CreatePseudoConsole, kernel32, 1)
LoadDLLfuncEx (IsWow64Process2, 12, kernel32, 1) LoadDLLfuncEx (IsWow64Process2, kernel32, 1)
LoadDLLfuncEx (ResizePseudoConsole, 8, kernel32, 1) LoadDLLfuncEx (ResizePseudoConsole, kernel32, 1)
/* MSDN claims these are exported by kernel32.dll, but only /* MSDN claims these are exported by kernel32.dll, but only
QueryUnbiasedInterruptTime actually is. The others are only QueryUnbiasedInterruptTime actually is. The others are only
available via KernelBase.dll. */ available via KernelBase.dll. */
LoadDLLfunc (QueryInterruptTime, 4, KernelBase) LoadDLLfunc (QueryInterruptTime, KernelBase)
LoadDLLfunc (QueryInterruptTimePrecise, 4, KernelBase) LoadDLLfunc (QueryInterruptTimePrecise, KernelBase)
LoadDLLfunc (QueryUnbiasedInterruptTimePrecise, 4, KernelBase) LoadDLLfunc (QueryUnbiasedInterruptTimePrecise, KernelBase)
LoadDLLfuncEx (SetThreadDescription, 8, KernelBase, 1) LoadDLLfuncEx (SetThreadDescription, KernelBase, 1)
LoadDLLfunc (VirtualAlloc2, 28, KernelBase) LoadDLLfunc (VirtualAlloc2, KernelBase)
LoadDLLfunc (NtMapViewOfSectionEx, 36, ntdll) LoadDLLfunc (NtMapViewOfSectionEx, ntdll)
LoadDLLfunc (ldap_bind_s, 0, wldap32) LoadDLLfunc (ldap_bind_s, wldap32)
LoadDLLfunc (ldap_count_entries, 0, wldap32) LoadDLLfunc (ldap_count_entries, wldap32)
LoadDLLfunc (ldap_count_valuesW, 0, wldap32) LoadDLLfunc (ldap_count_valuesW, wldap32)
LoadDLLfunc (ldap_first_entry, 0, wldap32) LoadDLLfunc (ldap_first_entry, wldap32)
LoadDLLfunc (ldap_get_next_page_s, 0, wldap32) LoadDLLfunc (ldap_get_next_page_s, wldap32)
LoadDLLfunc (ldap_get_valuesW, 0, wldap32) LoadDLLfunc (ldap_get_valuesW, wldap32)
LoadDLLfunc (ldap_get_values_lenW, 0, wldap32) LoadDLLfunc (ldap_get_values_lenW, wldap32)
LoadDLLfunc (ldap_initW, 0, wldap32) LoadDLLfunc (ldap_initW, wldap32)
LoadDLLfunc (ldap_msgfree, 0, wldap32) LoadDLLfunc (ldap_msgfree, wldap32)
LoadDLLfunc (ldap_next_entry, 0, wldap32) LoadDLLfunc (ldap_next_entry, wldap32)
LoadDLLfunc (ldap_search_abandon_page, 0, wldap32) LoadDLLfunc (ldap_search_abandon_page, wldap32)
LoadDLLfunc (ldap_search_init_pageW, 0, wldap32) LoadDLLfunc (ldap_search_init_pageW, wldap32)
LoadDLLfunc (ldap_search_sW, 0, wldap32) LoadDLLfunc (ldap_search_sW, wldap32)
LoadDLLfunc (ldap_set_option, 0, wldap32) LoadDLLfunc (ldap_set_option, wldap32)
LoadDLLfunc (ldap_sslinitW, 0, wldap32) LoadDLLfunc (ldap_sslinitW, wldap32)
LoadDLLfunc (ldap_unbind, 0, wldap32) LoadDLLfunc (ldap_unbind, wldap32)
LoadDLLfunc (ldap_value_freeW, 0, wldap32) LoadDLLfunc (ldap_value_freeW, wldap32)
LoadDLLfunc (ldap_value_free_len, 0, wldap32) LoadDLLfunc (ldap_value_free_len, wldap32)
LoadDLLfunc (LdapGetLastError, 0, wldap32) LoadDLLfunc (LdapGetLastError, wldap32)
LoadDLLfunc (LdapMapErrorToWin32, 0, wldap32) LoadDLLfunc (LdapMapErrorToWin32, wldap32)
LoadDLLfunc (WNetCloseEnum, 4, mpr) LoadDLLfunc (WNetCloseEnum, mpr)
LoadDLLfunc (WNetEnumResourceW, 16, mpr) LoadDLLfunc (WNetEnumResourceW, mpr)
LoadDLLfunc (WNetGetLastErrorW, 20, mpr) LoadDLLfunc (WNetGetLastErrorW, mpr)
LoadDLLfunc (WNetGetProviderNameW, 12, mpr) LoadDLLfunc (WNetGetProviderNameW, mpr)
LoadDLLfunc (WNetGetResourceInformationW, 16, mpr) LoadDLLfunc (WNetGetResourceInformationW, mpr)
LoadDLLfunc (WNetOpenEnumW, 20, mpr) LoadDLLfunc (WNetOpenEnumW, mpr)
LoadDLLfunc (DsEnumerateDomainTrustsW, 16, netapi32) LoadDLLfunc (DsEnumerateDomainTrustsW, netapi32)
LoadDLLfunc (DsGetDcNameW, 24, netapi32) LoadDLLfunc (DsGetDcNameW, netapi32)
LoadDLLfunc (NetApiBufferFree, 4, netapi32) LoadDLLfunc (NetApiBufferFree, netapi32)
LoadDLLfunc (NetGroupEnum, 28, netapi32) LoadDLLfunc (NetGroupEnum, netapi32)
LoadDLLfunc (NetLocalGroupEnum, 28, netapi32) LoadDLLfunc (NetLocalGroupEnum, netapi32)
LoadDLLfunc (NetLocalGroupGetInfo, 16, netapi32) LoadDLLfunc (NetLocalGroupGetInfo, netapi32)
LoadDLLfunc (NetUseGetInfo, 16, netapi32) LoadDLLfunc (NetUseGetInfo, netapi32)
LoadDLLfunc (NetUserEnum, 32, netapi32) LoadDLLfunc (NetUserEnum, netapi32)
LoadDLLfunc (NetUserGetGroups, 28, netapi32) LoadDLLfunc (NetUserGetGroups, netapi32)
LoadDLLfunc (NetUserGetInfo, 16, netapi32) LoadDLLfunc (NetUserGetInfo, netapi32)
LoadDLLfunc (NetUserGetLocalGroups, 32, netapi32) LoadDLLfunc (NetUserGetLocalGroups, netapi32)
LoadDLLfunc (CoTaskMemFree, 4, ole32) LoadDLLfunc (CoTaskMemFree, ole32)
LoadDLLfunc (LsaConnectUntrusted, 4, secur32) LoadDLLfunc (LsaConnectUntrusted, secur32)
LoadDLLfunc (LsaDeregisterLogonProcess, 4, secur32) LoadDLLfunc (LsaDeregisterLogonProcess, secur32)
LoadDLLfunc (LsaFreeReturnBuffer, 4, secur32) LoadDLLfunc (LsaFreeReturnBuffer, secur32)
LoadDLLfunc (LsaLogonUser, 56, secur32) LoadDLLfunc (LsaLogonUser, secur32)
LoadDLLfunc (LsaLookupAuthenticationPackage, 12, secur32) LoadDLLfunc (LsaLookupAuthenticationPackage, secur32)
LoadDLLfunc (LsaRegisterLogonProcess, 12, secur32) LoadDLLfunc (LsaRegisterLogonProcess, secur32)
LoadDLLfunc (TranslateNameW, 20, secur32) LoadDLLfunc (TranslateNameW, secur32)
LoadDLLfunc (SHGetDesktopFolder, 4, shell32) LoadDLLfunc (SHGetDesktopFolder, shell32)
LoadDLLfunc (CreateFontW, 56, gdi32) LoadDLLfunc (CreateFontW, gdi32)
LoadDLLfunc (DeleteObject, 4, gdi32) LoadDLLfunc (DeleteObject, gdi32)
LoadDLLfunc (EnumFontFamiliesExW, 20, gdi32) LoadDLLfunc (EnumFontFamiliesExW, gdi32)
LoadDLLfunc (GetGlyphIndicesW, 20, gdi32) LoadDLLfunc (GetGlyphIndicesW, gdi32)
LoadDLLfunc (SelectObject, 8, gdi32) LoadDLLfunc (SelectObject, gdi32)
LoadDLLfunc (CloseClipboard, 0, user32) LoadDLLfunc (CloseClipboard, user32)
LoadDLLfunc (CloseDesktop, 4, user32) LoadDLLfunc (CloseDesktop, user32)
LoadDLLfunc (CloseWindowStation, 4, user32) LoadDLLfunc (CloseWindowStation, user32)
LoadDLLfunc (CreateDesktopW, 24, user32) LoadDLLfunc (CreateDesktopW, user32)
LoadDLLfunc (CreateWindowExW, 48, user32) LoadDLLfunc (CreateWindowExW, user32)
LoadDLLfunc (CreateWindowStationW, 16, user32) LoadDLLfunc (CreateWindowStationW, user32)
LoadDLLfunc (DefWindowProcW, 16, user32) LoadDLLfunc (DefWindowProcW, user32)
LoadDLLfunc (DestroyWindow, 4, user32) LoadDLLfunc (DestroyWindow, user32)
LoadDLLfunc (DispatchMessageW, 4, user32) LoadDLLfunc (DispatchMessageW, user32)
LoadDLLfunc (EmptyClipboard, 0, user32) LoadDLLfunc (EmptyClipboard, user32)
LoadDLLfunc (EnumWindows, 8, user32) LoadDLLfunc (EnumWindows, user32)
LoadDLLfunc (GetClipboardData, 4, user32) LoadDLLfunc (GetClipboardData, user32)
LoadDLLfunc (GetDC, 4, user32) LoadDLLfunc (GetDC, user32)
LoadDLLfunc (GetForegroundWindow, 0, user32) LoadDLLfunc (GetForegroundWindow, user32)
LoadDLLfunc (GetKeyboardLayout, 4, user32) LoadDLLfunc (GetKeyboardLayout, user32)
LoadDLLfunc (GetMessageW, 16, user32) LoadDLLfunc (GetMessageW, user32)
LoadDLLfunc (GetPriorityClipboardFormat, 8, user32) LoadDLLfunc (GetPriorityClipboardFormat, user32)
LoadDLLfunc (GetProcessWindowStation, 0, user32) LoadDLLfunc (GetProcessWindowStation, user32)
LoadDLLfunc (GetThreadDesktop, 4, user32) LoadDLLfunc (GetThreadDesktop, user32)
LoadDLLfunc (GetUserObjectInformationW, 20, user32) LoadDLLfunc (GetUserObjectInformationW, user32)
LoadDLLfunc (GetWindowThreadProcessId, 8, user32) LoadDLLfunc (GetWindowThreadProcessId, user32)
LoadDLLfunc (MessageBeep, 4, user32) LoadDLLfunc (MessageBeep, user32)
LoadDLLfunc (MessageBoxW, 16, user32) LoadDLLfunc (MessageBoxW, user32)
LoadDLLfunc (MsgWaitForMultipleObjectsEx, 20, user32) LoadDLLfunc (MsgWaitForMultipleObjectsEx, user32)
LoadDLLfunc (OpenClipboard, 4, user32) LoadDLLfunc (OpenClipboard, user32)
LoadDLLfunc (PeekMessageW, 20, user32) LoadDLLfunc (PeekMessageW, user32)
LoadDLLfunc (PostMessageW, 16, user32) LoadDLLfunc (PostMessageW, user32)
LoadDLLfunc (PostQuitMessage, 4, user32) LoadDLLfunc (PostQuitMessage, user32)
LoadDLLfunc (RegisterClassW, 4, user32) LoadDLLfunc (RegisterClassW, user32)
LoadDLLfunc (RegisterClipboardFormatW, 4, user32) LoadDLLfunc (RegisterClipboardFormatW, user32)
LoadDLLfunc (SendNotifyMessageW, 16, user32) LoadDLLfunc (SendNotifyMessageW, user32)
LoadDLLfunc (SetClipboardData, 8, user32) LoadDLLfunc (SetClipboardData, user32)
LoadDLLfunc (SetParent, 8, user32) LoadDLLfunc (SetParent, user32)
LoadDLLfunc (SetProcessWindowStation, 4, user32) LoadDLLfunc (SetProcessWindowStation, user32)
LoadDLLfunc (SetThreadDesktop, 4, user32) LoadDLLfunc (SetThreadDesktop, user32)
LoadDLLfunc (UnregisterClassW, 8, user32) LoadDLLfunc (UnregisterClassW, user32)
LoadDLLfuncEx (CreateEnvironmentBlock, 12, userenv, 1) LoadDLLfuncEx (CreateEnvironmentBlock, userenv, 1)
LoadDLLfuncEx2 (CreateProfile, 16, userenv, 1, 1) LoadDLLfuncEx2 (CreateProfile, userenv, 1, 1)
LoadDLLfunc (DestroyEnvironmentBlock, 4, userenv) LoadDLLfunc (DestroyEnvironmentBlock, userenv)
LoadDLLfunc (LoadUserProfileW, 8, userenv) LoadDLLfunc (LoadUserProfileW, userenv)
LoadDLLfuncEx3 (waveInAddBuffer, 12, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInAddBuffer, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveInClose, 4, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInClose, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveInGetNumDevs, 0, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInGetNumDevs, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveInOpen, 24, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInOpen, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveInPrepareHeader, 12, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInPrepareHeader, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveInReset, 4, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInReset, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveInStart, 4, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInStart, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveInUnprepareHeader, 12, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInUnprepareHeader, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutClose, 4, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutClose, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutGetNumDevs, 0, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutGetNumDevs, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutGetVolume, 8, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutGetVolume, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutOpen, 24, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutOpen, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutPrepareHeader, 12, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutPrepareHeader, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutReset, 4, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutReset, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutSetVolume, 8, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutSetVolume, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutUnprepareHeader, 12, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutUnprepareHeader, winmm, 1, 0, 1)
LoadDLLfuncEx3 (waveOutWrite, 12, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutWrite, winmm, 1, 0, 1)
LoadDLLfunc (accept, 12, ws2_32) LoadDLLfunc (accept, ws2_32)
LoadDLLfunc (bind, 12, ws2_32) LoadDLLfunc (bind, ws2_32)
LoadDLLfunc (closesocket, 4, ws2_32) LoadDLLfunc (closesocket, ws2_32)
LoadDLLfunc (connect, 12, ws2_32) LoadDLLfunc (connect, ws2_32)
LoadDLLfunc (FreeAddrInfoW, 4, ws2_32) LoadDLLfunc (FreeAddrInfoW, ws2_32)
LoadDLLfunc (GetAddrInfoW, 16, ws2_32) LoadDLLfunc (GetAddrInfoW, ws2_32)
LoadDLLfunc (GetNameInfoW, 28, ws2_32) LoadDLLfunc (GetNameInfoW, ws2_32)
LoadDLLfunc (gethostbyaddr, 12, ws2_32) LoadDLLfunc (gethostbyaddr, ws2_32)
LoadDLLfunc (gethostbyname, 4, ws2_32) LoadDLLfunc (gethostbyname, ws2_32)
LoadDLLfunc (gethostname, 8, ws2_32) LoadDLLfunc (gethostname, ws2_32)
LoadDLLfunc (getpeername, 12, ws2_32) LoadDLLfunc (getpeername, ws2_32)
LoadDLLfunc (getprotobyname, 4, ws2_32) LoadDLLfunc (getprotobyname, ws2_32)
LoadDLLfunc (getprotobynumber, 4, ws2_32) LoadDLLfunc (getprotobynumber, ws2_32)
LoadDLLfunc (getservbyname, 8, ws2_32) LoadDLLfunc (getservbyname, ws2_32)
LoadDLLfunc (getservbyport, 8, ws2_32) LoadDLLfunc (getservbyport, ws2_32)
LoadDLLfunc (getsockname, 12, ws2_32) LoadDLLfunc (getsockname, ws2_32)
LoadDLLfunc (getsockopt, 20, ws2_32) LoadDLLfunc (getsockopt, ws2_32)
LoadDLLfunc (ioctlsocket, 12, ws2_32) LoadDLLfunc (ioctlsocket, ws2_32)
LoadDLLfunc (listen, 8, ws2_32) LoadDLLfunc (listen, ws2_32)
LoadDLLfunc (setsockopt, 20, ws2_32) LoadDLLfunc (setsockopt, ws2_32)
LoadDLLfunc (shutdown, 8, ws2_32) LoadDLLfunc (shutdown, ws2_32)
LoadDLLfunc (socket, 12, ws2_32) LoadDLLfunc (socket, ws2_32)
LoadDLLfunc (WSAAsyncSelect, 16, ws2_32) LoadDLLfunc (WSAAsyncSelect, ws2_32)
LoadDLLfunc (WSADuplicateSocketW, 12, ws2_32) LoadDLLfunc (WSADuplicateSocketW, ws2_32)
LoadDLLfunc (WSAEnumNetworkEvents, 12, ws2_32) LoadDLLfunc (WSAEnumNetworkEvents, ws2_32)
LoadDLLfunc (WSAEventSelect, 12, ws2_32) LoadDLLfunc (WSAEventSelect, ws2_32)
LoadDLLfunc (WSAGetLastError, 0, ws2_32) LoadDLLfunc (WSAGetLastError, ws2_32)
LoadDLLfunc (WSAIoctl, 36, ws2_32) LoadDLLfunc (WSAIoctl, ws2_32)
LoadDLLfunc (WSARecv, 28, ws2_32) LoadDLLfunc (WSARecv, ws2_32)
LoadDLLfunc (WSARecvFrom, 36, ws2_32) LoadDLLfunc (WSARecvFrom, ws2_32)
LoadDLLfunc (WSASendMsg, 24, ws2_32) LoadDLLfunc (WSASendMsg, ws2_32)
LoadDLLfunc (WSASendTo, 36, ws2_32) LoadDLLfunc (WSASendTo, ws2_32)
LoadDLLfunc (WSASetLastError, 4, ws2_32) LoadDLLfunc (WSASetLastError, ws2_32)
LoadDLLfunc (WSASocketW, 24, ws2_32) LoadDLLfunc (WSASocketW, ws2_32)
// LoadDLLfunc (WSAStartup, 8, ws2_32) // LoadDLLfunc (WSAStartup, ws2_32)
LoadDLLfunc (WSAWaitForMultipleEvents, 20, ws2_32) LoadDLLfunc (WSAWaitForMultipleEvents, ws2_32)
LoadDLLfunc (PdhAddEnglishCounterW, 16, pdh) LoadDLLfunc (PdhAddEnglishCounterW, pdh)
LoadDLLfunc (PdhCollectQueryData, 4, pdh) LoadDLLfunc (PdhCollectQueryData, pdh)
LoadDLLfunc (PdhGetFormattedCounterValue, 16, pdh) LoadDLLfunc (PdhGetFormattedCounterValue, pdh)
LoadDLLfunc (PdhOpenQueryW, 12, pdh) LoadDLLfunc (PdhOpenQueryW, pdh)
} }