mirror of
https://github.com/Chuyu-Team/YY-Thunks.git
synced 2026-10-28 22:08:22 +08:00
41 KiB
41 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。 |
| LCMapStringEx | 不存在时,调用LCMapStringW。 |
| 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 | 不存在时,假定所有CPU都在当前Numa。 |
| *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。 |
| PathIsUNCEx | 内部实现。 |
| PathCchIsRoot | 内部实现。 |
| PathCchAddBackslashEx | 内部实现。 |
| PathCchAddBackslash | 调用PathCchAddBackslashEx。 |
| PathCchRemoveBackslashEx | 内部实现。 |
| PathCchRemoveBackslash | 调用PathCchRemoveBackslashEx。 |
| PathCchSkipRoot | 内部实现。 |
| PathCchStripToRoot | 内部实现。 |
| PathCchRemoveFileSpec | 内部实现。 |
| PathCchFindExtension | 内部实现。 |
| PathCchAddExtension | 调用PathCchFindExtension。 |
| PathCchRenameExtension | 调用PathCchFindExtension。 |
| PathCchRemoveExtension | 调用PathCchFindExtension。 |
| PathCchCanonicalizeEx | 不存在时,内部实现。 |
| PathCchCanonicalize | 调用PathCchCanonicalizeEx。 |
| PathCchCombineEx | 内部实现。 |
| PathCchCombine | 调用PathCchCombineEx。 |
| PathCchAppendEx | 调用PathCchCombineEx。 |
| PathCchAppend | 调用PathCchAppendEx。 |
| PathCchStripPrefix | 内部实现。 |
| PathAllocCombine | 不存在时,调用PathCchCombineEx。 |
| PathAllocCanonicalize | 不存在时,调用PathCchCanonicalizeEx。 |
| GetNumaProximityNodeEx | 不存在时,调用GetNumaProximityNode。 |
| GetNumaProcessorNode | 不存在时,假定所有CPU都在节点 0。 |
| GetNumaNodeNumberFromHandle | 不存在时,假定所有CPU都在节点 0。 |
| GetNumaProcessorNodeEx | 不存在时,调用 GetNumaProcessorNode 。 |
| GetNumaAvailableMemoryNode | 不存在时,假定所有内存都属于节点0 。 |
| GetNumaAvailableMemoryNodeEx | 不存在时,调用 GetNumaAvailableMemoryNode 。 |
| GetNumaProximityNode | 不存在时,假定都是节点0 。 |
| MapViewOfFileExNuma | 不存在时,调用 MapViewOfFileEx。 |
| AllocateUserPhysicalPagesNuma | 不存在时,调用 AllocateUserPhysicalPages 。 |
| VirtualAllocExNuma | 不存在时,调用 VirtualAllocEx 。 |
| CreateFileMappingNumaW(A) | 不存在时,调用 CreateFileMappingW(A) 。 |
| GetMaximumProcessorCount | 不存在时,调用 GetSystemInfo 。 |
| GetActiveProcessorCount | 不存在时,调用 GetSystemInfo 。 |
| GetActiveProcessorGroupCount | 不存在时,假定为1 。 |
| GetMaximumProcessorGroupCount | 不存在时,假定为1 。 |
| GetMemoryErrorHandlingCapabilities | 不存在时,直接报告不支持任何特性。 |
| VirtualAllocFromApp | 不存在时,调用 VirtualAlloc 。 |
| VirtualAlloc2 | 不存在时,调用 VirtualAllocExNuma 以及 VirtualAllocEx 。 |
| VirtualAlloc2FromApp | 不存在时,调用 VirtualAllocExNuma 以及 VirtualAllocEx 。 |
| CreateFileMappingFromApp | 不存在时,调用 CreateFileMappingW 。 |
| CreateFileMapping2 | 不存在时,调用 CreateFileMappingNumaW 以及 CreateFileMappingW 。 |
| MapViewOfFileFromApp | 不存在时,调用 MapViewOfFile 。 |
| UnmapViewOfFileEx | 不存在时,调用 UnmapViewOfFile 。 |
| VirtualProtectFromApp | 不存在时,调用 VirtualProtect 。 |
| OpenFileMappingFromApp | 不存在时,调用 OpenFileMappingW 。 |
| CreateThreadpoolWork | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| CloseThreadpoolWork | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| SubmitThreadpoolWork | 不存在时,调用QueueUserWorkItem。警告,此函数请勿跨模块使用!!! |
| WaitForThreadpoolWorkCallbacks | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| CreateThreadpoolTimer | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| CloseThreadpoolTimer | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| SetThreadpoolTimer | 不存在时,调用QueueTimer。警告,此函数请勿跨模块使用!!! |
| SetEventWhenCallbackReturns | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| ReleaseSemaphoreWhenCallbackReturns | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| ReleaseMutexWhenCallbackReturns | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| LeaveCriticalSectionWhenCallbackReturns | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| FreeLibraryWhenCallbackReturns | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| WaitForThreadpoolTimerCallbacks | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| TrySubmitThreadpoolCallback | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| CreateThreadpoolWait | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| CloseThreadpoolWait | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| SetThreadpoolWait | 不存在时,调用RegisterWaitForSingleObject。警告,此函数请勿跨模块使用!!! |
| WaitForThreadpoolWaitCallbacks | 不存在时,内部实现。警告,此函数请勿跨模块使用!!! |
| FlushProcessWriteBuffers | 不存在时,调用VirtualProtect。 |
| FlsAlloc | 不存在时,使用Tls实现。警告,此函数请勿跨模块使用!!! |
| FlsFree | 不存在时,使用Tls实现。警告,此函数请勿跨模块使用!!! |
| FlsGetValue | 不存在时,使用Tls实现。警告,此函数请勿跨模块使用!!! |
| FlsSetValue | 不存在时,使用Tls实现。警告,此函数请勿跨模块使用!!! |
| IsThreadAFiber | 不存在时,调用 GetCurrentFiber。 |
| ConvertThreadToFiberEx | 不存在时,调用 ConvertThreadToFiber。 |
| RoInitialize | 不存在时,调用 CoInitializeEx。 |
| RoUninitialize | 不存在时,调用 CoUninitialize。 |
| GetDynamicTimeZoneInformation | 不存在时,调用 GetTimeZoneInformation。 |
| SetDynamicTimeZoneInformation | 不存在时,调用 SetTimeZoneInformation。 |
| GetProductInfo | 不存在时,调用 GetVersionExW。 |
| EnumSystemLocalesEx | 不存在时,调用 EnumSystemLocalesW。 |
| GetThreadPreferredUILanguages | 不存在时,调用 GetThreadLocale、GetUserDefaultLangID以及GetSystemDefaultLangID。 |
| GetThreadUILanguage | 不存在时,调用 GetThreadLocale。 |
| ResolveLocaleName | 不存在时,调用 LocaleNameToLCID以及LCIDToLocaleName。 |
| InitializeProcThreadAttributeList | 不存在时,内部实现。 |
| DeleteProcThreadAttributeList | 不存在时,内部实现。 |
| UpdateProcThreadAttribute | 不存在时,内部实现。PROC_THREAD_ATTRIBUTE_PARENT_PROCESS与PROC_THREAD_ATTRIBUTE_HANDLE_LIST特性会被忽略处理。 |