396 lines
30 KiB
Markdown
Raw Normal View History

2024-02-07 20:59:24 +08:00
# YY-Thunks Thunks 清单
此表展示了YY-Thunks鸭船可以解决的函数不存在问题欢迎大家扩充
> 开头带`*`的函数并不建议使用,仅用于编译通过处理,如果使用可能导致老版本系统无法充分发挥性能。
## api-ms-win-core-path-l1-1-0.dll
| 函数 | Fallback
| ---- | -----------
| 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。
## api-ms-win-core-winrt-l1-1-0.dll
| 函数 | Fallback
| ---- | -----------
| RoInitialize | 不存在时,调用 CoInitializeEx。
| RoUninitialize | 不存在时,调用 CoUninitialize。
| RoActivateInstance | 不存在时,返回 E_NOTIMPL。
| RoRegisterActivationFactories | 不存在时,返回 E_NOTIMPL。
| RoRevokeActivationFactories | 不存在时,什么也不做。
| RoGetActivationFactory | 不存在时,返回 E_NOTIMPL。
| RoRegisterForApartmentShutdown | 不存在时,返回 E_NOTIMPL。
| RoUnregisterForApartmentShutdown | 不存在时,返回 E_NOTIMPL。
| RoGetApartmentIdentifier | 不存在时,返回 E_NOTIMPL。
## api-ms-win-core-winrt-error-l1-1-0.dll
| 函数 | Fallback
| ---- | -----------
| RoOriginateError | 不存在时,返回 FALSE.
| RoOriginateErrorW | 不存在时,返回 FALSE.
## api-ms-win-core-winrt-string-l1-1-0.dll
| 函数 | Fallback
| ---- | -----------
| WindowsCreateString | 不存在时,返回 E_NOTIMPL。
| WindowsCreateStringReference | 不存在时,返回 E_NOTIMPL。
| WindowsDeleteString | 不存在时,返回 E_NOTIMPL。
| WindowsDuplicateString | 不存在时,返回 E_NOTIMPL。
| WindowsGetStringLen | 不存在时,返回 E_NOTIMPL。
| WindowsGetStringRawBuffer | 不存在时,返回 E_NOTIMPL。
| WindowsIsStringEmpty | 不存在时,返回 E_NOTIMPL。
| WindowsStringHasEmbeddedNull | 不存在时,返回 E_NOTIMPL。
| WindowsCompareStringOrdinal | 不存在时,返回 E_NOTIMPL。
## advapi32.dll
| 函数 | Fallback
| ---- | -----------
| RegDeleteKeyExW(A) | 不存在时调用RegDeleteKeyW(A)。
| RegSetKeyValueW(A) | 调用RegCreateKeyExW(A)以及RegSetValueExW(A)。
| RegDeleteKeyValueW(A) | 调用RegOpenKeyExW(A)以及RegDeleteValueW(A)。
| RegDeleteTreeW(A) | 调用SHDeleteKeyW(A)。
| RegGetValueW(A) | 不存在时调用RegQueryValueExW(A)。
| RegCopyTreeW(A) | 不存在时调用SHCopyKeyW(A)。
| EventSetInformation | 不存在时返回ERROR_NOT_SUPPORTED。
## bcrypt.dll
| 函数 | Fallback
| ---- | -----------
| BCryptOpenAlgorithmProvider | 内部实现。
| BCryptCloseAlgorithmProvider | 内部实现。
| BCryptGenRandom | 不存在时调用RtlGenRandom。
## bluetoothapis.dll
| 函数 | Fallback
| ---- | -----------
| BluetoothGATTGetCharacteristicValue | 不存在时返回ERROR_NOT_SUPPORTED。
| BluetoothGATTGetCharacteristics | 不存在时返回ERROR_NOT_SUPPORTED。
| BluetoothGATTGetDescriptors | 不存在时返回ERROR_NOT_SUPPORTED。
| BluetoothGATTGetServices | 不存在时返回ERROR_NOT_SUPPORTED。
| BluetoothGATTRegisterEvent | 不存在时返回ERROR_NOT_SUPPORTED。
| BluetoothGATTSetCharacteristicValue | 不存在时返回ERROR_NOT_SUPPORTED。
| BluetoothGATTSetDescriptorValue | 不存在时返回ERROR_NOT_SUPPORTED。
## iphlpapi.dll
| 函数 | Fallback
| ---- | -----------
| GetIfTable2 | 不存在时调用GetIfTable并使用HeapAlloc申请内存。
| GetIfTable2Ex | 不存在时调用GetIfTable并使用HeapAlloc申请内存。
| GetIfEntry2 | 不存在时调用GetIfEntry。
| GetIfEntry2Ex | 不存在时调用GetIfEntry2。
| FreeMibTable | 不存在时调用HeapFree。
## kernel32.dll
| 函数 | Fallback
| ---- | -----------
| DecodePointer | 不存在时,返回指针本身。
| EncodePointer | 不存在时,返回指针本身。
| Wow64DisableWow64FsRedirection | 不存在时返回FALSE并设置 LastError = ERROR_INVALID_FUNCTION。
| Wow64RevertWow64FsRedirection | 不存在时返回FALSE并设置 LastError = ERROR_INVALID_FUNCTION。
| Wow64EnableWow64FsRedirection | 不存在时返回FALSE并设置 LastError = ERROR_INVALID_FUNCTION。
| 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。
| 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)。
| QueryFullProcessImageNameW(A) | 不存在时调用GetProcessImageFileNameW(A) 或者 GetModuleFileNameExW(A)。
| CreateFile2 | 不存在时调用CreateFileW。
| CreateEventExW(A) | 不存在时调用CreateEventW(A)。
| CreateMutexExW(A) | 不存在时调用CreateMutexW(A)。
| CreateSemaphoreExW | 不存在时调用CreateSemaphoreW。
| CreateWaitableTimerExW | 不存在时调用CreateWaitableTimerW。
| 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操作取消掉
| OpenFileById | 不存在时调用NtCreateFile。
| CreateSymbolicLinkW(A) | 不存在时返回FALSE并设置 LastError = ERROR_INVALID_FUNCTION。
| ReOpenFile | 不存在时调用NtCreateFile。
| CompareStringEx | 不存在时调用CompareStringW。
| CompareStringOrdinal | 不存在时使用内置UnicodeCaseTableData实现。
| SetFilePointerEx | 不存在时调用SetFilePointer。
| GetModuleHandleExW(A) | 不存在时调用GetModuleHandleW(A)。
| WTSGetActiveConsoleSessionId | 不存在时,直接返回 0。
| GetNativeSystemInfo | 不存在时调用GetSystemInfo。
| InitializeSListHead | 直接初始化为 0。
| InterlockedFlushSList | 不存在时调用lock cmpxchg8b指令。
| QueryDepthSList | 不存在时直接返回Depth。
| InterlockedPushEntrySList | 不存在时调用lock cmpxchg8b指令。
| InterlockedPopEntrySList | 不存在时调用lock cmpxchg8b指令。
| GetNumaProximityNodeEx | 不存在时调用GetNumaProximityNode。
| GetNumaProcessorNode | 不存在时假定所有CPU都在节点 0。
| GetNumaNodeNumberFromHandle | 不存在时假定所有CPU都在节点 0。
| GetNumaProcessorNodeEx | 不存在时,调用 GetNumaProcessorNode 。
| GetNumaAvailableMemoryNode | 不存在时假定所有内存都属于节点0 。
| GetNumaAvailableMemoryNodeEx | 不存在时,调用 GetNumaAvailableMemoryNode 。
| GetNumaProximityNode | 不存在时假定都是节点0 。
| AllocateUserPhysicalPagesNuma | 不存在时,调用 AllocateUserPhysicalPages 。
| MapViewOfFileExNuma | 不存在时,调用 MapViewOfFileEx。
| 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。
| 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特性会被忽略处理。
| GetLargePageMinimum | 不存在时假定为0 。
| SetThreadStackGuarantee | 不存在时调用VirtualAlloc。
| SetCoalescableTimer | 不存在时调用SetTimer。
| EnumResourceLanguagesExW(A) | 不存在时调用EnumResourceLanguagesW(A)。
| DiscardVirtualMemory | 不存在时调用VirtualAlloc MEM_RESET。
| OfferVirtualMemory | 不存在时返回ERROR_SUCCESS。
| ReclaimVirtualMemory | 不存在时返回ERROR_SUCCESS。
| PrefetchVirtualMemory | 不存在时返回ERROR_SUCCESS。
| GetProcessMitigationPolicy | 不存在时调用NtQueryInformationProcess。
| SetProcessMitigationPolicy | 不存在时调用NtSetInformationProcess。
| SetProcessInformation | 不存在时调用NtSetInformationProcess。
| SetThreadInformation | 不存在时调用NtSetInformationThread。
| PowerCreateRequest | 不存在时,内部实现。
| PowerSetRequest | 不存在时,调用 SetThreadExecutionState。
| PowerClearRequest | 不存在时,调用 SetThreadExecutionState。
## mfplat.dll
| 函数 | Fallback
| ---- | -----------
| MFCreateDXGIDeviceManager | 不存在时返回E_NOTIMPL。
| MFCreateDXGISurfaceBuffer | 不存在时返回E_NOTIMPL。
| MFLockDXGIDeviceManager | 不存在时返回E_NOTIMPL。
| MFUnlockDXGIDeviceManager | 不存在时返回E_NOTIMPL。
## netapi32.dll
| 函数 | Fallback
| ---- | -----------
| NetGetAadJoinInformation | 不存在时,始终认为没有加入 Azure AD 帐户 账号。
| NetFreeAadJoinInformation | 不存在时,什么也不做。
## ole32.dll
| 函数 | Fallback
| ---- | -----------
| CoGetApartmentType | 不存在时调用IComThreadingInfo。
## pdh.dll
| 函数 | Fallback
| ---- | -----------
| PdhAddEnglishCounterW(A) | 不存在时调用PdhAddCounterW(A)。
## powrprof.dll
| 函数 | Fallback
| ---- | -----------
| PowerDeterminePlatformRole | 不存在时返回PlatformRoleDesktop。
| PowerDeterminePlatformRoleEx | 不存在时调用PlatformRoleDesktop。
| PowerRegisterSuspendResumeNotification | 不存在时,使用窗口模拟。
| PowerUnregisterSuspendResumeNotification | 内部实现。
## psapi.dll
| 函数 | Fallback
| ---- | -----------
| EnumProcessModulesEx | 不存在时调用EnumProcessModules。
| GetWsChangesEx | 不存在时调用GetWsChanges。
| *QueryWorkingSetEx | 不存在时返回FALSE并设置 LastError = ERROR_INVALID_FUNCTION。
## setupapi.dll
| 函数 | Fallback
| ---- | -----------
| SetupDiGetDevicePropertyW | 不存在时调用SetupDiGetDeviceRegistryPropertyW。
| SetupDiSetDevicePropertyW | 不存在时调用SetupDiSetDeviceRegistryPropertyW。
| SetupDiGetClassPropertyW | 不存在时调用SetupDiGetClassRegistryPropertyW。
| SetupDiGetClassPropertyExW | 不存在时调用SetupDiGetClassRegistryPropertyW。
| SetupDiSetClassPropertyW | 不存在时调用SetupDiSetClassRegistryPropertyW。
| SetupDiSetClassPropertyExW | 不存在时调用SetupDiSetClassRegistryPropertyW。
## shcore.dll
| 函数 | Fallback
| ---- | -----------
| GetDpiForMonitor | 不存在时调用GetDeviceCaps。
| SetProcessDpiAwareness | 不存在时调用SetProcessDPIAware。
| SetProcessDPIAware | 不存在时,直接返回 TRUE。
## shell32.dll
| 函数 | Fallback
| ---- | -----------
| SHGetKnownFolderPath | 不存在时调用SHGetFolderPathW。
| SHSetKnownFolderPath | 不存在时调用SHSetFolderPathW。
| SHGetKnownFolderIDList | 不存在时调用SHGetFolderLocation。
| SHBindToFolderIDListParent | 不存在时调用IShellFolder。
| SHBindToFolderIDListParentEx | 不存在时调用IShellFolder。
| SHBindToObject | 不存在时调用IShellFolder。
| SHCreateItemFromIDList | 不存在时调用IShellItem。
| SHCreateItemWithParent | 不存在时调用IShellItem。
| SHCreateItemFromRelativeName | 不存在时调用IShellItem。
| SHGetNameFromIDList | 不存在时调用IShellItem。
| SHCreateShellItem | 不存在时调用IShellItem。
| SHCreateItemFromParsingName | 不存在时调用SHParseDisplayName。
## shlwapi.dll
| 函数 | Fallback
| ---- | -----------
| StrToInt64ExW(A) | 不存在时,手工解析字符串。
## user32.dll
| 函数 | Fallback
| ---- | -----------
| IsWow64Process | 不存在时返回TRUE并设置 `*Wow64Process = FALSE`
| SetProcessDpiAwarenessContext | 不存在时调用SetProcessDpiAwareness。
| GetDpiForSystem | 不存在时调用GetDeviceCaps。
| GetDpiForWindow | 不存在时调用GetDpiForMonitor。
| GetSystemMetricsForDpi | 不存在时调用GetSystemMetrics。
| AdjustWindowRectExForDpi | 不存在时调用AdjustWindowRectEx。
| SystemParametersInfoForDpi | 不存在时调用SystemParametersInfoW。
| RegisterSuspendResumeNotification | 不存在时,使用窗口模拟。
| UnregisterSuspendResumeNotification | 不存在时,内部实现。
## userenv.dll
| 函数 | Fallback
| ---- | -----------
| CreateAppContainerProfile | 不存在时返回E_NOTIMPL。
| DeleteAppContainerProfile | 不存在时返回E_NOTIMPL。
| DeriveAppContainerSidFromAppContainerName | 不存在时返回E_NOTIMPL。
| GetAppContainerFolderPath | 不存在时返回E_NOTIMPL。
| GetAppContainerRegistryLocation | 不存在时返回E_NOTIMPL。
## version.dll
| 函数 | Fallback
| ---- | -----------
| GetFileVersionInfoExW(A) | 不存在时调用GetFileVersionInfoW(A)。
| GetFileVersionInfoSizeExW(A) | 不存在时调用GetFileVersionInfoSizeW(A)。
## ws2_32.dll
| 函数 | Fallback
| ---- | -----------
| InetPtonW(inet_pton) | 不存在时类似于sscanf手工分析字符串。
| InetNtopW(inet_ntop) | 不存在时类似于sprintf手工生成字符串。
| WSAPoll | 不存在时调用select。