* 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.
/* 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\
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\
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\
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 (AuthzAccessCheck, 36, authz)
-LoadDLLfunc (AuthzFreeContext, 4, authz)
-LoadDLLfunc (AuthzInitializeContextFromSid, 32, authz)
-LoadDLLfunc (AuthzInitializeContextFromToken, 32, authz)
-LoadDLLfunc (AuthzInitializeResourceManager, 24, authz)
-
-LoadDLLfunc (DnsQuery_A, 24, dnsapi)
-LoadDLLfunc (DnsFree, 8, 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)
-
-LoadDLLfuncEx (ClosePseudoConsole, 4, kernel32, 1)
-LoadDLLfuncEx (CreatePseudoConsole, 20, kernel32, 1)
-LoadDLLfuncEx (IsWow64Process2, 12, kernel32, 1)
-LoadDLLfuncEx (ResizePseudoConsole, 8, kernel32, 1)
+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, authz)
+LoadDLLfunc (AuthzFreeContext, authz)
+LoadDLLfunc (AuthzInitializeContextFromSid, authz)
+LoadDLLfunc (AuthzInitializeContextFromToken, authz)
+LoadDLLfunc (AuthzInitializeResourceManager, authz)
+
+LoadDLLfunc (DnsQuery_A, dnsapi)
+LoadDLLfunc (DnsFree, dnsapi)
+
+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, 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 (NtMapViewOfSectionEx, 36, 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 (WNetCloseEnum, 4, mpr)
-LoadDLLfunc (WNetEnumResourceW, 16, mpr)
-LoadDLLfunc (WNetGetLastErrorW, 20, mpr)
-LoadDLLfunc (WNetGetProviderNameW, 12, mpr)
-LoadDLLfunc (WNetGetResourceInformationW, 16, mpr)
-LoadDLLfunc (WNetOpenEnumW, 20, 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 (CoTaskMemFree, 4, 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 (SHGetDesktopFolder, 4, shell32)
-
-LoadDLLfunc (CreateFontW, 56, gdi32)
-LoadDLLfunc (DeleteObject, 4, gdi32)
-LoadDLLfunc (EnumFontFamiliesExW, 20, gdi32)
-LoadDLLfunc (GetGlyphIndicesW, 20, gdi32)
-LoadDLLfunc (SelectObject, 8, 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)
-
-LoadDLLfuncEx (CreateEnvironmentBlock, 12, userenv, 1)
-LoadDLLfuncEx2 (CreateProfile, 16, userenv, 1, 1)
-LoadDLLfunc (DestroyEnvironmentBlock, 4, userenv)
-LoadDLLfunc (LoadUserProfileW, 8, 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)
-
-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 (PdhAddEnglishCounterW, 16, pdh)
-LoadDLLfunc (PdhCollectQueryData, 4, pdh)
-LoadDLLfunc (PdhGetFormattedCounterValue, 16, pdh)
-LoadDLLfunc (PdhOpenQueryW, 12, pdh)
+LoadDLLfunc (QueryInterruptTime, KernelBase)
+LoadDLLfunc (QueryInterruptTimePrecise, KernelBase)
+LoadDLLfunc (QueryUnbiasedInterruptTimePrecise, KernelBase)
+LoadDLLfuncEx (SetThreadDescription, KernelBase, 1)
+LoadDLLfunc (VirtualAlloc2, KernelBase)
+
+LoadDLLfunc (NtMapViewOfSectionEx, ntdll)
+
+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, mpr)
+LoadDLLfunc (WNetEnumResourceW, mpr)
+LoadDLLfunc (WNetGetLastErrorW, mpr)
+LoadDLLfunc (WNetGetProviderNameW, mpr)
+LoadDLLfunc (WNetGetResourceInformationW, mpr)
+LoadDLLfunc (WNetOpenEnumW, mpr)
+
+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, ole32)
+
+LoadDLLfunc (LsaConnectUntrusted, secur32)
+LoadDLLfunc (LsaDeregisterLogonProcess, secur32)
+LoadDLLfunc (LsaFreeReturnBuffer, secur32)
+LoadDLLfunc (LsaLogonUser, secur32)
+LoadDLLfunc (LsaLookupAuthenticationPackage, secur32)
+LoadDLLfunc (LsaRegisterLogonProcess, secur32)
+LoadDLLfunc (TranslateNameW, secur32)
+
+LoadDLLfunc (SHGetDesktopFolder, shell32)
+
+LoadDLLfunc (CreateFontW, gdi32)
+LoadDLLfunc (DeleteObject, gdi32)
+LoadDLLfunc (EnumFontFamiliesExW, gdi32)
+LoadDLLfunc (GetGlyphIndicesW, gdi32)
+LoadDLLfunc (SelectObject, gdi32)
+
+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, userenv, 1)
+LoadDLLfuncEx2 (CreateProfile, userenv, 1, 1)
+LoadDLLfunc (DestroyEnvironmentBlock, userenv)
+LoadDLLfunc (LoadUserProfileW, userenv)
+
+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, 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, pdh)
+LoadDLLfunc (PdhCollectQueryData, pdh)
+LoadDLLfunc (PdhGetFormattedCounterValue, pdh)
+LoadDLLfunc (PdhOpenQueryW, pdh)
}