mirror of
https://github.com/Chuyu-Team/YY-Thunks.git
synced 2026-10-28 22:08:22 +08:00
26 KiB
26 KiB
YY-Thunks Thunks 清单
此表展示了YY-Thunks(鸭船)可以解决的函数不存在问题,欢迎大家扩充!
开头带
*的函数并不建议使用,仅用于编译通过处理,如果使用可能导致老版本系统无法充分发挥性能。
| 函数 | Fallback |
|---|---|
| DecodePointer | 不存在时,返回指针本身。 |
| EncodePointer | 不存在时,返回指针本身。 |
| RegDeleteKeyExW(A) | 不存在时,调用RegDeleteKeyW(A)。 |
| Wow64DisableWow64FsRedirection | 不存在时,返回FALSE,并设置 LastError = ERROR_INVALID_FUNCTION。 |
| Wow64RevertWow64FsRedirection | 不存在时,返回FALSE,并设置 LastError = ERROR_INVALID_FUNCTION。 |
| Wow64EnableWow64FsRedirection | 不存在时,返回FALSE,并设置 LastError = ERROR_INVALID_FUNCTION。 |
| IsWow64Process | 不存在时,返回TRUE,并设置 *Wow64Process = FALSE。 |
| IsWow64Message | 不存在时,返回FALSE。 |
| RegSetKeyValueW(A) | 调用RegCreateKeyExW(A)以及RegSetValueExW(A)。 |
| RegDeleteKeyValueW(A) | 调用RegOpenKeyExW(A)以及RegDeleteValueW(A)。 |
| RegDeleteTreeW(A) | 调用SHDeleteKeyW(A)。 |
| RegGetValueW(A) | 不存在时,调用RegQueryValueExW(A)。 |
| RegCopyTreeW(A) | 不存在时,调用SHCopyKeyW(A)。 |
| IsWow64Process2 | 不存在时,调用IsWow64Process。 |
| IsWow64GuestMachineSupported | 不存在时,调用GetNativeSystemInfo。 |
| GetTickCount64 | 不存在时,调用GetTickCount。 |
| GetSystemTimePreciseAsFileTime | 不存在时,调用GetSystemTimeAsFileTime。 |
| InitializeCriticalSectionEx | 不存在时,调用InitializeCriticalSectionAndSpinCount。 |
| InitOnceInitialize | 初始化为 INIT_ONCE_STATIC_INIT。 |
| InitOnceBeginInitialize | 不存在时,调用NtWaitForKeyedEvent。 |
| InitOnceComplete | 不存在时,调用NtReleaseKeyedEvent。 |
| InitOnceExecuteOnce | 不存在时,调用NtWaitForKeyedEvent以及NtReleaseKeyedEvent。 |
| LocaleNameToLCID | 不存在时,查LocaleNameToLcidTable。 |
| LCIDToLocaleName | 不存在时,查LcidToLocaleNameTable。 |
| GetLocaleInfoEx | 不存在时,调用GetLocaleInfoW。 |
| GetDateFormatEx | 不存在时,调用GetDateFormatW。 |
| GetTimeFormatEx | 不存在时,调用GetTimeFormatW。 |
| GetNumberFormatEx | 不存在时,调用GetNumberFormatW。 |
| GetCurrencyFormatEx | 不存在时,调用GetCurrencyFormatW。 |
| GetUserDefaultLocaleName | 不存在时,调用LCIDToLocaleName。 |
| GetSystemDefaultLocaleName | 不存在时,调用LCIDToLocaleName。 |
| EnumCalendarInfoExEx | 不存在时,调用EnumCalendarInfoExW。 |
| EnumDateFormatsExEx | 不存在时,调用EnumDateFormatsExW。 |
| GetFileInformationByHandleEx | 不存在时,调用NtQueryInformationFile 或者 NtQueryDirectoryFile。 |
| SetFileInformationByHandle | 不存在时,调用NtSetInformationFile。 |
| GetFinalPathNameByHandleW(A) | 不存在时,调用NtQueryObject以及NtQueryInformationFile。 |
| GetLogicalProcessorInformation | 不存在时,返回FALSE,并设置 LastError = ERROR_INVALID_FUNCTION。 |
| GetLogicalProcessorInformationEx | 不存在时,调用GetLogicalProcessorInformation。 |
| InetPtonW(inet_pton) | 不存在时,类似于sscanf手工分析字符串。 |
| InetNtopW(inet_ntop) | 不存在时,类似于sprintf手工生成字符串。 |
| WSAPoll | 不存在时,调用select。 |
| GetNumaHighestNodeNumber | 不存在时,返回0。 |
| RaiseFailFastException | 不存在时,调用TerminateProcess。 |
| GetThreadId | 不存在时,调用NtQueryInformationThread。 |
| GetProcessIdOfThread | 不存在时,调用NtQueryInformationThread。 |
| GetProcessId | 不存在时,调用NtQueryInformationProcess。 |
| QueryThreadCycleTime | 不存在时,调用GetThreadTimes。 |
| QueryProcessCycleTime | 不存在时,调用GetProcessTimes。 |
| K32EnumProcessModules | 调用EnumProcessModules。 |
| K32EnumProcessModulesEx | 调用EnumProcessModulesEx。 |
| K32GetModuleBaseNameW(A) | 调用GetModuleBaseNameW(A)。 |
| K32GetModuleFileNameExW(A) | 调用K32GetModuleFileNameExW(A)。 |
| K32EmptyWorkingSet | 调用EmptyWorkingSet。 |
| K32QueryWorkingSet | 调用QueryWorkingSet。 |
| K32QueryWorkingSetEx | 调用QueryWorkingSetEx。 |
| K32InitializeProcessForWsWatch | 调用InitializeProcessForWsWatch。 |
| K32GetWsChanges | 调用GetWsChanges。 |
| K32GetWsChangesEx | 调用GetWsChangesEx。 |
| K32GetMappedFileNameW(A) | 调用GetMappedFileNameW(A)。 |
| K32EnumDeviceDrivers | 调用EnumDeviceDrivers。 |
| K32GetDeviceDriverBaseNameW(A) | 调用GetDeviceDriverBaseNameW(A)。 |
| K32GetDeviceDriverFileNameW(A) | 调用GetDeviceDriverFileNameW(A)。 |
| K32GetPerformanceInfo | 调用GetPerformanceInfo。 |
| K32EnumPageFilesW(A) | 调用EnumPageFilesW(A)。 |
| K32GetProcessImageFileNameW(A) | 调用GetProcessImageFileNameW(A)。 |
| EnumProcessModulesEx | 不存在时,调用EnumProcessModules。 |
| GetWsChangesEx | 不存在时,调用GetWsChanges。 |
| QueryFullProcessImageNameW(A) | 不存在时,调用GetProcessImageFileNameW(A) 或者 GetModuleFileNameExW(A)。 |
| CreateFile2 | 不存在时,调用CreateFileW。 |
| CreateEventExW(A) | 不存在时,调用CreateEventW(A)。 |
| CreateMutexExW(A) | 不存在时,调用CreateMutexW(A)。 |
| CreateSemaphoreExW | 不存在时,调用CreateSemaphoreW。 |
| CreateWaitableTimerExW | 不存在时,调用CreateWaitableTimerW。 |
| GetFileVersionInfoExW(A) | 不存在时,调用GetFileVersionInfoW(A)。 |
| GetFileVersionInfoSizeExW(A) | 不存在时,调用GetFileVersionInfoSizeW(A)。 |
| InterlockedCompareExchange64 | 调用内部函数_InterlockedCompareExchange64。 |
| SetThreadErrorMode | 不存在时,调用SetErrorMode。 |
| GetThreadErrorMode | 不存在时,调用GetErrorMode。 |
| GetErrorMode | 不存在时,调用NtQueryInformationProcess。 |
| InitializeSRWLock | 初始化为 RTL_SRWLOCK_INIT。 |
| AcquireSRWLockExclusive | 不存在时,调用NtWaitForKeyedEvent。 |
| TryAcquireSRWLockExclusive | 不存在时,调用InterlockedBitTestAndSet(64)。 |
| ReleaseSRWLockExclusive | 不存在时,调用NtReleaseKeyedEvent。 |
| AcquireSRWLockShared | 不存在时,调用NtWaitForKeyedEvent。 |
| TryAcquireSRWLockShared | 不存在时,调用InterlockedCompareExchange。 |
| ReleaseSRWLockShared | 不存在时,调用NtReleaseKeyedEvent。 |
| InitializeConditionVariable | 初始化为 CONDITION_VARIABLE_INIT。 |
| SleepConditionVariableCS | 不存在时,调用NtWaitForKeyedEvent。 |
| SleepConditionVariableSRW | 不存在时,调用NtWaitForKeyedEvent。 |
| WakeConditionVariable | 不存在时,调用NtReleaseKeyedEvent。 |
| WakeAllConditionVariable | 不存在时,调用NtReleaseKeyedEvent。 |
| InitializeSynchronizationBarrier | 不存在时,调用CreateEvent。 |
| EnterSynchronizationBarrier | 不存在时,调用WaitForSingleObject。 |
| DeleteSynchronizationBarrier | 不存在时,调用CloseHandle。 |
| WaitOnAddress | 不存在时,调用NtWaitForKeyedEvent。警告,此函数请勿跨模块使用!!! |
| WakeByAddressSingle | 不存在时,调用NtReleaseKeyedEvent。警告,此函数请勿跨模块使用!!! |
| WakeByAddressAll | 不存在时,调用NtReleaseKeyedEvent。警告,此函数请勿跨模块使用!!! |
| *GetCurrentProcessorNumber | 不存在时,返回0。 |
| *GetCurrentProcessorNumberEx | 不存在时,调用GetCurrentProcessorNumber。 |
| *GetNumaNodeProcessorMask | 不存在时,返回FALSE,并设置 LastError = ERROR_INVALID_PARAMETER。 |
| *GetNumaNodeProcessorMaskEx | 不存在时,调用GetNumaNodeProcessorMask。 |
| *SetThreadGroupAffinity | 不存在时,调用SetThreadAffinityMask。 |
| *CancelIoEx | 不存在时,调用CancelIo(会把此句柄的所有IO操作取消掉!)。 |
| *QueryWorkingSetEx | 不存在时,返回FALSE,并设置 LastError = ERROR_INVALID_FUNCTION。 |
| SHGetKnownFolderPath | 不存在时,调用SHGetFolderPathW。 |
| SHSetKnownFolderPath | 不存在时,调用SHSetFolderPathW。 |
| SHGetKnownFolderIDList | 不存在时,调用SHGetFolderLocation。 |
| SHBindToFolderIDListParent | 不存在时,调用IShellFolder。 |
| SHBindToFolderIDListParentEx | 不存在时,调用IShellFolder。 |
| SHBindToObject | 不存在时,调用IShellFolder。 |
| SHCreateItemFromIDList | 不存在时,调用IShellItem。 |
| SHCreateItemWithParent | 不存在时,调用IShellItem。 |
| SHCreateItemFromRelativeName | 不存在时,调用IShellItem。 |
| SHGetNameFromIDList | 不存在时,调用IShellItem。 |
| SHCreateShellItem | 不存在时,调用IShellItem。 |
| OpenFileById | 不存在时,调用NtCreateFile。 |
| CreateSymbolicLinkW(A) | 不存在时,返回FALSE,并设置 LastError = ERROR_INVALID_FUNCTION。 |
| ReOpenFile | 不存在时,调用NtCreateFile。 |
| CompareStringEx | 不存在时,调用CompareStringW。 |
| CompareStringOrdinal | 不存在时,使用内置UnicodeCaseTableData实现。 |
| SetFilePointerEx | 不存在时,调用SetFilePointer。 |
| GetModuleHandleExW(A) | 不存在时,调用GetModuleHandleW(A)。 |
| WTSGetActiveConsoleSessionId | 不存在时,直接返回 0。 |
| StrToInt64ExW(A) | 不存在时,手工解析字符串。 |
| GetNativeSystemInfo | 不存在时,调用GetSystemInfo。 |
| InitializeSListHead | 直接初始化为 0。 |
| InterlockedFlushSList | 不存在时,调用lock cmpxchg8b指令。 |
| QueryDepthSList | 不存在时,直接返回Depth。 |
| InterlockedPushEntrySList | 不存在时,调用lock cmpxchg8b指令。 |
| InterlockedPopEntrySList | 不存在时,调用lock cmpxchg8b指令。 |
| SetupDiGetDevicePropertyW | 不存在时,调用SetupDiGetDeviceRegistryPropertyW。 |
| SetupDiSetDevicePropertyW | 不存在时,调用SetupDiSetDeviceRegistryPropertyW。 |
| SetupDiGetClassPropertyW | 不存在时,调用SetupDiGetClassRegistryPropertyW。 |
| SetupDiGetClassPropertyExW | 不存在时,调用SetupDiGetClassRegistryPropertyW。 |
| SetupDiSetClassPropertyW | 不存在时,调用SetupDiSetClassRegistryPropertyW。 |
| SetupDiSetClassPropertyExW | 不存在时,调用SetupDiSetClassRegistryPropertyW。 |
| GetDpiForMonitor | 不存在时,调用GetDeviceCaps。 |
| SetProcessDpiAwareness | 不存在时,调用SetProcessDPIAware。 |
| SetProcessDPIAware | 不存在时,直接返回 TRUE。 |
| SetProcessDpiAwarenessContext | 不存在时,调用SetProcessDpiAwareness。 |
| GetDpiForSystem | 不存在时,调用GetDeviceCaps。 |
| GetDpiForWindow | 不存在时,调用GetDpiForMonitor。 |
| GetSystemMetricsForDpi | 不存在时,调用GetSystemMetrics。 |
| AdjustWindowRectExForDpi | 不存在时,调用AdjustWindowRectEx。 |
| SystemParametersInfoForDpi | 不存在时,调用SystemParametersInfoW。 |