|
|
@@ -0,0 +1,426 @@
|
|
|
+# 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。
|
|
|
+
|
|
|
+## dwmapi.dll
|
|
|
+| 函数 | Fallback
|
|
|
+| ---- | -----------
|
|
|
+| DwmEnableBlurBehindWindow | 不存在时,返回 `DWM_E_COMPOSITIONDISABLED`(表示DWM已禁用)。
|
|
|
+
|
|
|
+## 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。
|
|
|
+| *GetThreadGroupAffinity | 不存在时,调用NtQueryInformationThread。
|
|
|
+| *SetThreadGroupAffinity | 不存在时,调用SetThreadAffinityMask。
|
|
|
+| *CancelIoEx | 不存在时,调用CancelIo(会把此句柄的所有IO操作取消掉!)。
|
|
|
+| *CancelSynchronousIo | 不存在时,仅返回失败。
|
|
|
+| 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。
|
|
|
+| SetWaitableTimerEx | 不存在时,调用SetWaitableTimer。
|
|
|
+| EnumResourceLanguagesExW(A) | 不存在时,调用EnumResourceLanguagesW(A)。
|
|
|
+| DiscardVirtualMemory | 不存在时,调用VirtualAlloc MEM_RESET。
|
|
|
+| OfferVirtualMemory | 不存在时,返回ERROR_SUCCESS。
|
|
|
+| ReclaimVirtualMemory | 不存在时,返回ERROR_SUCCESS。
|
|
|
+| PrefetchVirtualMemory | 不存在时,返回ERROR_SUCCESS。
|
|
|
+| GetProcessMitigationPolicy | 不存在时,调用NtQueryInformationProcess。
|
|
|
+| SetProcessMitigationPolicy | 不存在时,调用NtSetInformationProcess。
|
|
|
+| SetProcessInformation | 不存在时,调用NtSetInformationProcess。
|
|
|
+| GetThreadInformation | 不存在时,调用NtQueryInformationThread。
|
|
|
+| SetThreadInformation | 不存在时,调用NtSetInformationThread。
|
|
|
+| PowerCreateRequest | 不存在时,内部实现。
|
|
|
+| PowerSetRequest | 不存在时,调用 SetThreadExecutionState。
|
|
|
+| PowerClearRequest | 不存在时,调用 SetThreadExecutionState。
|
|
|
+| TzSpecificLocalTimeToSystemTime | 不存在时,内部实现。
|
|
|
+| TzSpecificLocalTimeToSystemTimeEx | 不存在时,内部实现。
|
|
|
+| GetFirmwareType | 不存在时,调用NtQuerySystemInformation。
|
|
|
+| IsNativeVhdBoot | 不存在时,调用NtQuerySystemInformation。
|
|
|
+| RtlCaptureStackBackTrace | 调用ntdll.RtlCaptureStackBackTrace。
|
|
|
+| SetFileCompletionNotificationModes | 不存在时,什么也不做。
|
|
|
+| GetQueuedCompletionStatusEx | 不存在时,调用 GetQueuedCompletionStatus。
|
|
|
+| FindFirstFileEx(W/A) | Windows XP、Vista兼容 FIND_FIRST_EX_LARGE_FETCH、FindExInfoStandard参数。
|
|
|
+
|
|
|
+## mfplat.dll
|
|
|
+| 函数 | Fallback
|
|
|
+| ---- | -----------
|
|
|
+| MFCreateDXGIDeviceManager | 不存在时,返回E_NOTIMPL。
|
|
|
+| MFCreateDXGISurfaceBuffer | 不存在时,返回E_NOTIMPL。
|
|
|
+| MFLockDXGIDeviceManager | 不存在时,返回E_NOTIMPL。
|
|
|
+| MFUnlockDXGIDeviceManager | 不存在时,返回E_NOTIMPL。
|
|
|
+
|
|
|
+## netapi32.dll
|
|
|
+| 函数 | Fallback
|
|
|
+| ---- | -----------
|
|
|
+| NetGetAadJoinInformation | 不存在时,始终认为没有加入 Azure AD 帐户 账号。
|
|
|
+| NetFreeAadJoinInformation | 不存在时,什么也不做。
|
|
|
+
|
|
|
+## ntdll.dll
|
|
|
+| 函数 | Fallback
|
|
|
+| ---- | -----------
|
|
|
+| NtCancelIoFileEx | 不存在时,调用 NtCancelIoFile。注意:将取消此文件的所有IO请求。
|
|
|
+
|
|
|
+## 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 | 不存在时,内部实现。
|
|
|
+| IsProcessDPIAware | 不存在时,返回 FALSE。
|
|
|
+| SetProcessDPIAware | 不存在时,什么都不做,假装成功。
|
|
|
+| GetWindowDisplayAffinity | 不存在时,TRUE,并报告窗口没有任何保护`WDA_NONE`。
|
|
|
+| SetWindowDisplayAffinity | 不存在时,什么都不做,假装成功。
|
|
|
+| RegisterTouchWindow | 不存在时,什么都不做,假装成功。
|
|
|
+| UnregisterTouchWindow | 不存在时,什么都不做,假装成功。
|
|
|
+| IsTouchWindow | 不存在时,始终报告非触摸窗口。
|
|
|
+| GetTouchInputInfo | 不存在时,报告错误 ERROR_INVALID_HANDLE。
|
|
|
+| CloseTouchInputHandle | 不存在时,报告错误 ERROR_INVALID_HANDLE。
|
|
|
+
|
|
|
+## 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。
|