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