mirror of
https://github.com/Chuyu-Team/YY-Thunks.git
synced 2026-10-29 14:19:48 +08:00
60 KiB
60 KiB
YY-Thunks Thunks 清单
此表展示了YY-Thunks(鸭船)可以解决的函数不存在问题,欢迎大家扩充!
开头带
*的函数并不建议使用,存在一些较大负面影响,仅用于编译通过处理,具体负面影响可参考注释内容。
api-ms-win-core-handle-l1-1-0.dll
| 函数 | Fallback |
|---|---|
| CompareObjectHandles | 不存在时,调用NtQueryObject以及DuplicateHandle。 |
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-realtime-l1-1-1.dll
| 函数 | Fallback |
|---|---|
| QueryUnbiasedInterruptTimePrecise | 不存在时,调用QueryUnbiasedInterruptTime。 |
| QueryInterruptTime | 不存在时,读取KUSER_SHARED_DATA::InterruptTime值。 |
| QueryInterruptTimePrecise | 不存在时,读取KUSER_SHARED_DATA::InterruptTime值。 |
api-ms-win-core-threadpool-l1-2-0.dll
| 函数 | Fallback |
|---|---|
| CreateThreadpoolWork | 不存在时,内部实现。 |
| CloseThreadpoolWork | 不存在时,内部实现。 |
| TrySubmitThreadpoolCallback | 不存在时,调用QueueUserWorkItem。 |
| SubmitThreadpoolWork | 不存在时,调用QueueUserWorkItem。 |
| WaitForThreadpoolWorkCallbacks | 不存在时,内部实现。 |
| CreateThreadpoolTimer | 不存在时,内部实现。 |
| CloseThreadpoolTimer | 不存在时,调用DeleteTimerQueueTimer。 |
| SetThreadpoolTimer | 不存在时,调用CreateTimerQueueTimer。 |
| WaitForThreadpoolTimerCallbacks | 不存在时,调用WaitForSingleObject。 |
| SetEventWhenCallbackReturns | 不存在时,内部实现。 |
| ReleaseSemaphoreWhenCallbackReturns | 不存在时,内部实现。 |
| ReleaseMutexWhenCallbackReturns | 不存在时,内部实现。 |
| LeaveCriticalSectionWhenCallbackReturns | 不存在时,内部实现。 |
| FreeLibraryWhenCallbackReturns | 不存在时,内部实现。 |
| CreateThreadpoolWait | 不存在时,内部实现。 |
| CloseThreadpoolWait | 不存在时,调用UnregisterWait。 |
| SetThreadpoolWait | 不存在时,调用RegisterWaitForSingleObject。 |
| WaitForThreadpoolWaitCallbacks | 不存在时,调用WaitForSingleObject。 |
| CreateThreadpoolIo | 不存在时,调用BindIoCompletionCallback。 |
| CloseThreadpoolIo | 不存在时,内部实现。 |
| StartThreadpoolIo | 不存在时,内部实现。 |
| CancelThreadpoolIo | 不存在时,内部实现。 |
| WaitForThreadpoolIoCallbacks | 不存在时,调用WaitForSingleObject。 |
| CreateThreadpool | 不存在时,内部实现。 |
| CloseThreadpool | 不存在时,内部实现。 |
| SetThreadpoolThreadMaximum | 不存在时,内部实现,自己控制最大并行数量。 |
| SetThreadpoolThreadMinimum | 不存在时,忽略,并总是返回成功。 |
| CallbackMayRunLong | 不存在时,自己估算系统剩余可用线程数。 |
api-ms-win-core-winrt-l1-1-0.dll
| 函数 | Fallback |
|---|---|
| RoInitialize | 不存在时,调用 CoInitializeEx。 |
| RoUninitialize | 不存在时,调用 CoUninitialize。 |
| RoActivateInstance | 不存在时,返回 E_NOTIMPL。 |
| RoRegisterActivationFactories | 不存在时,返回 E_NOTIMPL。 |
| RoRevokeActivationFactories | 不存在时,什么也不做。 |
| RoGetActivationFactory | 不存在时,返回 CLASS_E_CLASSNOTAVAILABLE |
| RoRegisterForApartmentShutdown | 不存在时,返回 E_NOTIMPL。 |
| RoUnregisterForApartmentShutdown | 不存在时,返回 E_NOTIMPL。 |
| RoGetApartmentIdentifier | 不存在时,返回 E_NOTIMPL。 |
api-ms-win-core-winrt-error-l1-1-0.dll
| 函数 | Fallback |
|---|---|
| RoOriginateError | 不存在时,返回 TRUE. |
| RoOriginateErrorW | 不存在时,返回 TRUE. |
api-ms-win-core-winrt-string-l1-1-0.dll
| 函数 | Fallback |
|---|---|
| WindowsCreateString | 不存在时,内部实现。 |
| WindowsCreateStringReference | 不存在时,内部实现。 |
| WindowsDeleteString | 不存在时,内部实现。 |
| WindowsDuplicateString | 不存在时,内部实现。 |
| WindowsGetStringLen | 不存在时,内部实现。 |
| WindowsGetStringRawBuffer | 不存在时,内部实现。 |
| WindowsIsStringEmpty | 不存在时,内部实现。 |
| WindowsStringHasEmbeddedNull | 不存在时,内部实现。 |
| WindowsCompareStringOrdinal | 不存在时,内部实现。 |
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。 |
| EventActivityIdControl | 不存在时,返回ERROR_NOT_SUPPORTED。 |
| EventRegister | 不存在时,返回ERROR_NOT_SUPPORTED。 |
| EventUnregister | 不存在时,返回ERROR_NOT_SUPPORTED。 |
| EnumerateTraceGuidsEx | 不存在时,返回ERROR_NOT_SUPPORTED。 |
| EventEnabled | 不存在时,返回ERROR_NOT_SUPPORTED。 |
| EventWrite | 不存在时,返回ERROR_NOT_SUPPORTED。 |
| EventWriteTransfer | 不存在时,返回ERROR_NOT_SUPPORTED。 |
| EventWriteEx | 不存在时,调用EventWriteTransfer。 |
| EventWriteString | 不存在时,返回ERROR_NOT_SUPPORTED。 |
| GetDynamicTimeZoneInformationEffectiveYears | 不存在时,直接读取Time Zones注册表。 |
| AddMandatoryAce | 不存在时,调用RtlCopySid。 |
bcrypt.dll
| 函数 | Fallback |
|---|---|
| BCryptOpenAlgorithmProvider | 不存在时,调用CryptAcquireContextW。目前支持的算法有:RC2、RC4、AES、DES、3DES、3DES-112、MD2、MD4、MD5、SHA1、SHA256、SHA384、SHA512、RNG、FIPS186DSARNG、DUALECRNG。 |
| BCryptCloseAlgorithmProvider | 不存在时,调用CryptReleaseContext。 |
| BCryptGenRandom | 不存在时,调用RtlGenRandom。 |
| BCryptGetProperty | 不存在时,调用CryptGetKeyParam。 |
| BCryptSetProperty | 不存在时,调用CryptSetKeyParam。 |
| BCryptCreateHash | 不存在时,调用CryptCreateHash。 |
| BCryptDestroyHash | 不存在时,调用CryptDestroyHash。 |
| BCryptHashData | 不存在时,调用CryptHashData。 |
| BCryptFinishHash | 不存在时,调用CryptGetHashParam。 |
| BCryptDeriveKeyPBKDF2 | 不存在时,调用BCryptHashData。 |
| BCryptDeriveKeyCapi | 不存在时,调用BCryptHashData。 |
| BCryptEncrypt | 不存在时,调用CryptEncrypt。 |
| BCryptDecrypt | 不存在时,调用CryptDecrypt。 |
| BCryptGenerateSymmetricKey | 不存在时,调用CryptImportKey。 |
| BCryptDestroyKey | 不存在时,调用CryptDestroyKey。 |
| BCryptExportKey | 不存在时,调用CryptExportKey。 |
| BCryptImportKey | 不存在时,调用CryptImportKey。 |
bcryptprimitives.dll
| 函数 | Fallback |
|---|---|
| ProcessPrng | 不存在时调用,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。 |
CfgMgr32.dll
| 函数 | Fallback |
|---|---|
| CM_Get_DevNode_Property_ExW | 不存在时,调用CM_Get_DevNode_Registry_PropertyW。 |
| CM_Set_DevNode_Property_ExW | 不存在时,调用CM_Set_DevNode_Registry_PropertyW。 |
| CM_Get_DevNode_PropertyW | 不存在时,调用CM_Get_DevNode_Property_ExW。 |
| CM_Set_DevNode_PropertyW | 不存在时,调用CM_Set_DevNode_Property_ExW。 |
Crypt32.dll
| 函数 | Fallback |
|---|---|
| CryptProtectMemory | 不存在时,返回TRUE。 |
| CryptUnprotectMemory | 不存在时,返回TRUE。 |
| CryptBinaryToStringW(A) | 为Windows XP模拟 CRYPT_STRING_NOCRLF。 |
d3d9.dll
| 函数 | Fallback |
|---|---|
| Direct3DCreate9Ex | 不存在时,返回 D3DERR_NOTAVAILABLE。 |
d3d11.dll
| 函数 | Fallback |
|---|---|
| D3D11CreateDevice | 不存在时,返回 E_NOINTERFACE。 |
d3d12.dll
| 函数 | Fallback |
|---|---|
| D3D12CreateDevice | 不存在时,返回 E_NOINTERFACE。 |
DbgHelp.dll
| 函数 | Fallback |
|---|---|
| SymSetSearchPathW | 不存在时,调用SymSetSearchPath。 |
| SymGetSearchPathW | 不存在时,调用SymGetSearchPath。 |
dwmapi.dll
| 函数 | Fallback |
|---|---|
| DwmEnableBlurBehindWindow | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
| DwmIsCompositionEnabled | 不存在时,总是返回组合层已关闭。 |
| DwmEnableComposition | 不存在时,如果尝试开启组合,那么返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用),其他情况返回 S_OK_。 |
| DwmExtendFrameIntoClientArea | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
| DwmDefWindowProc | 不存在时,返回 FALSE。 |
| DwmGetColorizationColor | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
| DwmGetWindowAttribute | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
| DwmSetWindowAttribute | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
| DwmFlush | 不存在时,返回 S_OK_。 |
| DwmGetCompositionTimingInfo | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
| DwmInvalidateIconicBitmaps | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
| DwmSetIconicLivePreviewBitmap | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
| DwmSetIconicThumbnail | 不存在时,返回 DWM_E_COMPOSITIONDISABLED(表示DWM已禁用)。 |
dwrite.dll
| 函数 | Fallback |
|---|---|
| DWriteCreateFactory | 不存在时,返回 E_NOINTERFACE。此外NT6或者更高版本提供IDWriteFactory3模拟。 |
dxgi.dll
| 函数 | Fallback |
|---|---|
| CreateDXGIFactory | 返回 DXGI_ERROR_UNSUPPORTED。 |
| CreateDXGIFactory1 | 调用 CreateDXGIFactory。 |
| CreateDXGIFactory2 | 调用 CreateDXGIFactory1。 |
dxva2.dll
| 函数 | Fallback |
|---|---|
| DXVA2CreateVideoService | 不存在时,返回 E_NOINTERFACE。 |
esent.dll
| 函数 | Fallback |
|---|---|
| JetAddColumnA | 调用JetAddColumn。 |
| JetAddColumnA | 调用JetAddColumn。 |
| JetAttachDatabaseA | 调用JetAttachDatabase。 |
| JetAttachDatabase2A | 调用JetAttachDatabase2。 |
| JetAttachDatabaseWithStreamingA | 调用JetAttachDatabaseWithStreaming。 |
| JetBackupA | 调用JetBackup。 |
| JetBackupInstanceA | 调用JetBackupInstance。 |
| JetBeginSessionA | 调用JetBeginSession。 |
| JetCompactA | 调用JetCompact。 |
| JetConvertDDLA | 调用JetConvertDDL。 |
| JetCreateDatabaseA | 调用JetCreateDatabase。 |
| JetCreateDatabase2A | 调用JetCreateDatabase2。 |
| JetCreateDatabaseWithStreamingA | 调用JetCreateDatabaseWithStreaming。 |
| JetCreateIndexA | 调用JetCreateIndex。 |
| JetCreateIndex2A | 调用JetCreateIndex2。 |
| JetCreateInstanceA | 调用JetCreateInstance。 |
| JetCreateInstance2A | 调用JetCreateInstance2。 |
| JetCreateTableA | 调用JetCreateTable。 |
| JetCreateTableColumnIndexA | 调用JetCreateTableColumnIndex。 |
| JetCreateTableColumnIndex2A | 调用JetCreateTableColumnIndex2。 |
| JetDBUtilitiesA | 调用JetDBUtilities。 |
| JetDefragmentA | 调用JetDefragment。 |
| JetDefragment2A | 调用JetDefragment2。 |
| JetDeleteColumnA | 调用JetDeleteColumn。 |
| JetDeleteColumn2A | 调用JetDeleteColumn2。 |
| JetDeleteIndexA | 调用JetDeleteIndex。 |
| JetDeleteTableA | 调用JetDeleteTable。 |
| JetDetachDatabaseA | 调用JetDetachDatabase。 |
| JetDetachDatabase2A | 调用JetDetachDatabase2。 |
| JetEnableMultiInstanceA | 调用JetEnableMultiInstance。 |
| JetExternalRestoreA | 调用JetExternalRestore。 |
| JetExternalRestore2A | 调用JetExternalRestore2。 |
| JetGetAttachInfoA | 调用JetGetAttachInfo。 |
| JetGetAttachInfoInstanceA | 调用JetGetAttachInfoInstance。 |
| JetGetColumnInfoA | 调用JetGetColumnInfo。 |
| JetGetCurrentIndexA | 调用JetGetCurrentIndex。 |
| JetGetDatabaseFileInfoA | 调用JetGetDatabaseFileInfo。 |
| JetGetDatabaseInfoA | 调用JetGetDatabaseInfo。 |
| JetGetIndexInfoA | 调用JetGetIndexInfo。 |
| JetGetInstanceInfoA | 调用JetGetInstanceInfo。 |
| JetGetLogInfoA | 调用JetGetLogInfo。 |
| JetGetLogInfoInstanceA | 调用JetGetLogInfoInstance。 |
| JetGetLogInfoInstance2A | 调用JetGetLogInfoInstance2。 |
| JetGetObjectInfoA | 调用JetGetObjectInfo。 |
| JetGetSystemParameterA | 调用JetGetSystemParameter。 |
| JetGetTableColumnInfoA | 调用JetGetTableColumnInfo。 |
| JetGetTableIndexInfoA | 调用JetGetTableIndexInfo。 |
| JetGetTableInfoA | 调用JetGetTableInfo。 |
| JetGetTruncateLogInfoInstanceA | 调用JetGetTruncateLogInfoInstance。 |
| JetInit3A | 调用JetInit3。 |
| JetOpenDatabaseA | 调用JetOpenDatabase。 |
| JetOpenFileA | 调用JetOpenFile。 |
| JetOpenFileInstanceA | 调用JetOpenFileInstance。 |
| JetOpenFileSectionInstanceA | 调用JetOpenFileSectionInstance。 |
| JetOpenTableA | 调用JetOpenTable。 |
| JetOSSnapshotFreezeA | 调用JetOSSnapshotFreeze。 |
| JetRenameColumnA | 调用JetRenameColumn。 |
| JetRenameTableA | 调用JetRenameTable。 |
| JetRestoreA | 调用JetRestore。 |
| JetRestore2A | 调用JetRestore2。 |
| JetRestoreInstanceA | 调用JetRestoreInstance。 |
| JetSetColumnDefaultValueA | 调用JetSetColumnDefaultValue。 |
| JetSetCurrentIndexA | 调用JetSetCurrentIndex。 |
| JetSetCurrentIndex2A | 调用JetSetCurrentIndex2。 |
| JetSetCurrentIndex3A | 调用JetSetCurrentIndex3。 |
| JetSetCurrentIndex4A | 调用JetSetCurrentIndex4。 |
| JetSetDatabaseSizeA | 调用JetSetDatabaseSize。 |
| JetSetSystemParameterA | 调用JetSetSystemParameter。 |
| JetSnapshotStartA | 调用JetSnapshotStart。 |
| JetUpgradeDatabaseA | 调用JetUpgradeDatabase。 |
| JetAttachDatabase2W | 不存在时,调用JetAttachDatabase2A。 |
| JetBeginSessionW | 不存在时,调用JetBeginSessionA。 |
| JetCreateInstanceW | 不存在时,调用JetCreateInstanceA。 |
| JetGetTableColumnInfoW | 不存在时,调用JetGetTableColumnInfoA。 |
| JetOpenDatabaseW | 不存在时,调用JetOpenDatabaseA。 |
| JetOpenTableW | 不存在时,调用JetOpenTableA。 |
| JetSetSystemParameterW | 不存在时,调用JetSetSystemParameterA。 |
| JetGetSystemParameterW | 不存在时,调用JetGetSystemParameterA。 |
iphlpapi.dll
| 函数 | Fallback |
|---|---|
| GetIfTable2 | 不存在时,调用GetIfTable,并使用HeapAlloc申请内存。 |
| GetIfTable2Ex | 不存在时,调用GetIfTable,并使用HeapAlloc申请内存。 |
| GetIfEntry2 | 不存在时,调用GetIfEntry。 |
| GetIfEntry2Ex | 不存在时,调用GetIfEntry2。 |
| FreeMibTable | 不存在时,调用HeapFree。 |
| ConvertInterfaceIndexToLuid | 不存在时,调用GetIfEntry。 |
| ConvertInterfaceLuidToNameW(A) | 不存在时,内部实现。 |
| ConvertInterfaceNameToLuidW(A) | 不存在时,内部实现。 |
| if_nametoindex | 不存在时,调用GetIfEntry。 |
| if_indextoname | 不存在时,调用ConvertInterfaceIndexToLuid、ConvertInterfaceLuidToNameA。 |
| ConvertInterfaceLuidToGuid | 不存在时,调用GetIfEntry。 |
| ConvertInterfaceLuidToIndex | 不存在时,内部实现。 |
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)。 |
| K32GetProcessMemoryInfo | 调用GetProcessMemoryInfo。 |
| K32EnumProcesses | 调用EnumProcesses。 |
| K32GetModuleInformation | 调用GetModuleInformation。 |
| 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 | 不存在时,调用cpuid。 |
| 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 。 |
| 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参数。 |
| GetProcessGroupAffinity | 不存在时,始终认为只有一组CPU。 |
| QueryUnbiasedInterruptTime | 不存在时,读取KUSER_SHARED_DATA::InterruptTime值模拟UnbiasedInterruptTime。 |
| FindStringOrdinal | 不存在时,调用CompareStringOrdinal。 |
| GetEnabledXStateFeatures | 不存在时,调用IsProcessorFeaturePresent。 |
| SetXStateFeaturesMask | 不存在时,内部实现。 |
| InitializeContext | 不存在时,内部实现。 |
| InitializeContext2 | 不存在时,调用InitializeContext。 |
| LocateXStateFeature | 不存在时,内部实现。 |
| CopyContext | 不存在时,内部实现。 |
| QueryIdleProcessorCycleTimeEx | 不存在时,调用QueryIdleProcessorCycleTime。 |
| QueryIdleProcessorCycleTime | 不存在时,随便返回一组数字代表当前进程空闲时间。 |
| SetThreadIdealProcessorEx | 不存在时,调用SetThreadIdealProcessor。 |
| GetThreadIdealProcessorEx | 不存在时,调用SetThreadIdealProcessor。 |
| GetUserPreferredUILanguages | 不存在时,调用GetThreadPreferredUILanguages。 |
| EnumTimeFormatsEx | 不存在时,调用EnumTimeFormatsW。 |
| GetCalendarInfoEx | 不存在时,调用GetCalendarInfoW。 |
| GetNLSVersionEx | 不存在时,返回一个假版本。 |
| IsNLSDefinedString | 不存在时,调用GetStringTypeW。 |
| FindNLSStringEx | 调用 CompareStringW。 |
| SetProcessWorkingSetSizeEx | 不存在时,调用SetProcessWorkingSetSize。 |
| GetProcessWorkingSetSizeEx | 不存在时,调用GetProcessWorkingSetSize。 |
| GetTimeZoneInformationForYear | 不存在时,直接读取Time Zones注册表。 |
| SetProcessDEPPolicy | 不存在时,调用NtSetInformationProcess。 |
| GetSystemDEPPolicy | 不存在时,返回总是关闭。 |
| DisableThreadLibraryCalls | 不存在时,始终返回成功。 |
| CreateRemoteThreadEx | 不存在时,调用CreateRemoteThread。 |
| WerRegisterRuntimeExceptionModule | 不存在时,返回S_OK。 |
| WerUnregisterRuntimeExceptionModule | 不存在时,返回S_OK。 |
| Wow64GetThreadContext | 不存在时,调用GetThreadContext或者返回ERROR_INVALID_PARAMETER。 |
| SetDefaultDllDirectories | 不存在时,手工控制LoadLibrary加载顺序。 |
| GetCurrentPackageFullName | 返回 APPMODEL_ERROR_NO_PACKAGE。 |
mfplat.dll
| 函数 | Fallback |
|---|---|
| MFCreateDeviceSource | 不存在时,返回E_NOTIMPL。 |
| MFEnumDeviceSources | 不存在时,返回E_NOTIMPL。 |
mfplat.dll
| 函数 | Fallback |
|---|---|
| MFCreateDXGIDeviceManager | 不存在时,返回E_NOTIMPL。 |
| MFCreateDXGISurfaceBuffer | 不存在时,返回E_NOTIMPL。 |
| MFLockDXGIDeviceManager | 不存在时,返回E_NOTIMPL。 |
| MFUnlockDXGIDeviceManager | 不存在时,返回E_NOTIMPL。 |
| MFCreateAlignedMemoryBuffer | 不存在时,返回E_NOTIMPL。 |
| MFCreateAsyncResult | 不存在时,返回E_NOTIMPL。 |
| MFCreateAttributes | 不存在时,返回E_NOTIMPL。 |
| MFCreateEventQueue | 不存在时,返回E_NOTIMPL。 |
| MFCreateMediaBufferWrapper | 不存在时,返回E_NOTIMPL。 |
| MFCreateMediaEvent | 不存在时,返回E_NOTIMPL。 |
| MFCreateMediaType | 不存在时,返回E_NOTIMPL。 |
| MFCreateMemoryBuffer | 不存在时,返回E_NOTIMPL。 |
| MFCreatePresentationDescriptor | 不存在时,返回E_NOTIMPL。 |
| MFCreateSample | 不存在时,返回E_NOTIMPL。 |
| MFCreateStreamDescriptor | 不存在时,返回E_NOTIMPL。 |
| MFCreateWaveFormatExFromMFMediaType | 不存在时,返回E_NOTIMPL。 |
| MFFrameRateToAverageTimePerFrame | 不存在时,返回E_NOTIMPL。 |
| MFGetSystemTime | 不存在时,调用GetSystemTimeAsFileTime。 |
| MFInitMediaTypeFromWaveFormatEx | 不存在时,返回E_NOTIMPL。 |
| MFShutdown | 不存在时,返回E_NOTIMPL。 |
| MFStartup | 不存在时,返回E_NOTIMPL。 |
| MFTEnumEx | 不存在时,返回E_NOTIMPL。 |
mfreadwrite.dll
| 函数 | Fallback |
|---|---|
| MFCreateSourceReaderFromMediaSource | 不存在时,返回E_NOTIMPL。 |
ndfapi.dll
| 函数 | Fallback |
|---|---|
| NdfCreateWebIncident | 不存在时,返回一个伪句柄假装成功。 |
| NdfCloseIncident | 不存在时,假装成功关闭句柄。 |
| NdfExecuteDiagnosis | 不存在时,假装什么问题也没有发现。 |
netapi32.dll
| 函数 | Fallback |
|---|---|
| NetGetAadJoinInformation | 不存在时,始终认为没有加入 Azure AD 帐户 账号。 |
| NetFreeAadJoinInformation | 不存在时,什么也不做。 |
ntdll.dll
| 函数 | Fallback |
|---|---|
| NtCancelIoFileEx | 不存在时,调用 NtCancelIoFile。注意:将取消此文件的所有IO请求。 |
| NtOpenKeyEx | 不存在时,调用 NtOpenKey 或者 NtCreateKey。 |
ole32.dll
| 函数 | Fallback |
|---|---|
| CoGetApartmentType | 不存在时,调用IComThreadingInfo。 |
pdh.dll
| 函数 | Fallback |
|---|---|
| PdhAddEnglishCounterW(A) | 不存在时,调用PdhAddCounterW(A)。 |
powrprof.dll
| 函数 | Fallback |
|---|---|
| PowerDeterminePlatformRole | 不存在时,返回PlatformRoleDesktop。 |
| PowerDeterminePlatformRoleEx | 不存在时,调用PowerDeterminePlatformRole。 |
| PowerRegisterSuspendResumeNotification | 不存在时,使用窗口模拟。 |
| PowerUnregisterSuspendResumeNotification | 内部实现。 |
| PowerGetActiveScheme | 不存在时,始终认为是平衡模式。 |
| PowerReadACValue | 不存在时,读取注册表。(目前仅支持ConsoleLock) |
| PowerReadDCValue | 不存在时,读取注册表。(目前仅支持ConsoleLock) |
PropSys.dll
| 函数 | Fallback |
|---|---|
| InitPropVariantFromCLSID | 不存在时,CoTaskMemAlloc分配内存。 |
| PSGetPropertyKeyFromName | 不存在时,返回 TYPE_E_ELEMENTNOTFOUND(属性不存在)。 |
| PSCreateMemoryPropertyStore | 不存在时,返回 E_NOTIMPL。 |
| VariantCompare | 不存在时,内部实现。 |
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。 |
| GetProcessDpiAwareness | 调用 IsProcessDPIAware。 |
| 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。 |
| Shell_NotifyIconGetRect | 不存在时,调用SendMessageW(可能不适用于Vista系统)。 |
| SHGetStockIconInfo | 不存在时,调用LoadImageW。 |
| SHGetPropertyStoreForWindow | 不存在时,报告错误 E_NOTIMPL。 |
| SHOpenWithDialog | 不存在时,报告错误 E_NOTIMPL。 |
shlwapi.dll
| 函数 | Fallback |
|---|---|
| StrToInt64ExW(A) | 不存在时,手工解析字符串。 |
UIAutomationCore.dll
| 函数 | Fallback |
|---|---|
| UiaClientsAreListening | 不存在时,假装没有人在监听。 |
| UiaHostProviderFromHwnd | 不存在时,报告错误 E_NOTIMPL。 |
| UiaRaiseAutomationEvent | 不存在时,报告错误 E_NOTIMPL。 |
| UiaRaiseAutomationPropertyChangedEvent | 不存在时,报告错误 E_NOTIMPL。 |
| UiaReturnRawElementProvider | 不存在时,报告错误 E_NOTIMPL。 |
| UiaGetReservedMixedAttributeValue | 不存在时,报告错误 E_NOTIMPL。 |
| UiaGetReservedNotSupportedValue | 不存在时,报告错误 E_NOTIMPL。 |
| UiaRaiseStructureChangedEvent | 不存在时,报告错误 E_NOTIMPL。 |
| UiaRaiseNotificationEvent | 不存在时,假装成功。 |
user32.dll
| 函数 | Fallback |
|---|---|
| IsWow64Process | 不存在时,返回TRUE,并设置 *Wow64Process = FALSE。 |
| SetProcessDpiAwarenessContext | 不存在时,调用SetProcessDpiAwareness。 |
| GetDpiForSystem | 不存在时,调用GetDeviceCaps。 |
| GetDpiForWindow | 不存在时,调用GetDpiForMonitor。 |
| GetSystemMetricsForDpi | 不存在时,调用GetSystemMetrics。 |
| AdjustWindowRectExForDpi | 不存在时,调用AdjustWindowRectEx。 |
| SystemParametersInfoW(A) | SPI_GETNONCLIENTMETRICS修正。 |
| SystemParametersInfoForDpi | 不存在时,调用SystemParametersInfoW。 |
| RegisterSuspendResumeNotification | 不存在时,使用窗口模拟。 |
| UnregisterSuspendResumeNotification | 不存在时,内部实现。 |
| IsProcessDPIAware | 不存在时,返回 FALSE。 |
| SetProcessDPIAware | 不存在时,什么都不做,假装成功。 |
| GetWindowDisplayAffinity | 不存在时,TRUE,并报告窗口没有任何保护WDA_NONE。 |
| SetWindowDisplayAffinity | 不存在时,什么都不做,假装成功。 |
| RegisterTouchWindow | 不存在时,什么都不做,假装成功。 |
| UnregisterTouchWindow | 不存在时,什么都不做,假装成功。 |
| IsTouchWindow | 不存在时,始终报告非触摸窗口。 |
| GetTouchInputInfo | 不存在时,报告错误 ERROR_INVALID_HANDLE。 |
| CloseTouchInputHandle | 不存在时,报告错误 ERROR_INVALID_HANDLE。 |
| *ChangeWindowMessageFilterEx | 不存在时,调用ChangeWindowMessageFilter。温馨提示:将影响该进程的所有窗口。 |
| ChangeWindowMessageFilter | 不存在时,什么都不做,假装成功。 |
| UpdateLayeredWindowIndirect | 不存在时,调用UpdateLayeredWindow。 |
| AddClipboardFormatListener | 不存在时,什么都不做,假装成功。 |
| RemoveClipboardFormatListener | 不存在时,什么都不做,假装成功。 |
| RegisterPowerSettingNotification | 不存在时,什么都不做,假装成功。 |
| UnregisterPowerSettingNotification | 不存在时,什么都不做,假装成功。 |
| DisplayConfigGetDeviceInfo | 不存在时,报告没有安装驱动。 |
| GetDisplayConfigBufferSizes | 不存在时,报告没有安装驱动。 |
| QueryDisplayConfig | 不存在时,报告没有安装驱动。 |
| RegisterPointerDeviceNotifications | 不存在时,假装成功。 |
| GetPointerDevices | 不存在时,假装没有触摸设备。 |
| GetPointerDevice | 不存在时,假装没有触摸设备。 |
| GetPointerPenInfo | 不存在时,假装没有触摸设备。 |
| GetPointerType | 不存在时,假装没有触摸设备。 |
| InitializeTouchInjection | 报告错误 ERROR_INVALID_PARAMETER。 |
| InjectTouchInput | 报告错误 ERROR_INVALID_PARAMETER。 |
| GetAwarenessFromDpiAwarenessContext | 内部实现。 |
| AreDpiAwarenessContextsEqual | 内部实现。 |
| EnableNonClientDpiScaling | 假装成功。 |
| GetPointerFrameTouchInfo | 报告错误 ERROR_INVALID_PARAMETER。 |
| GetPointerFrameTouchInfoHistory | 报告错误 ERROR_INVALID_PARAMETER。 |
| GetPointerInfo | 报告错误 ERROR_INVALID_PARAMETER。 |
| GetPointerPenInfoHistory | 报告错误 ERROR_INVALID_PARAMETER。 |
| SkipPointerFrameMessages | 假装成功。 |
| GetThreadDpiAwarenessContext | 调用 GetProcessDpiAwareness。 |
| GetWindowDpiAwarenessContext | 调用 GetProcessDpiAwareness。 |
| GetDisplayAutoRotationPreferences | 返回 ORIENTATION_PREFERENCE_NONE。 |
| SetDisplayAutoRotationPreferences | 假装成功。 |
| GetPointerInfoHistory | 报告错误 ERROR_INVALID_PARAMETER。 |
| GetPointerTouchInfo | 报告错误 ERROR_INVALID_PARAMETER。 |
| GetPointerTouchInfoHistory | 报告错误 ERROR_INVALID_PARAMETER。 |
| IsMouseInPointerEnabled | 返回关闭。 |
| EnableMouseInPointer | 假装处于关闭状态。 |
| GetPointerDeviceRects | 报告错误 ERROR_INVALID_PARAMETER。 |
userenv.dll
| 函数 | Fallback |
|---|---|
| CreateAppContainerProfile | 不存在时,返回E_NOTIMPL。 |
| DeleteAppContainerProfile | 不存在时,返回E_NOTIMPL。 |
| DeriveAppContainerSidFromAppContainerName | 不存在时,返回E_NOTIMPL。 |
| GetAppContainerFolderPath | 不存在时,返回E_NOTIMPL。 |
| GetAppContainerRegistryLocation | 不存在时,返回E_NOTIMPL。 |
uxtheme.dll
| 函数 | Fallback |
|---|---|
| DrawThemeTextEx | 不存在时,尝试获取非导出DrawThemeTextEx。如果任然获取失败则调用DrawThemeText。 |
| GetThemeTransitionDuration | 不存在时,返回E_NOTIMPL。 |
| SetWindowThemeAttribute | 不存在时,返回E_NOTIMPL。 |
version.dll
| 函数 | Fallback |
|---|---|
| GetFileVersionInfoExW(A) | 不存在时,调用GetFileVersionInfoW(A)。 |
| GetFileVersionInfoSizeExW(A) | 不存在时,调用GetFileVersionInfoSizeW(A)。 |
wevtapi.dll
| 函数 | Fallback |
|---|---|
| EvtClose | 不存在时,返回TRUE。 |
| EvtCreateRenderContext | 不存在时,报告ERROR_NOT_SUPPORTED。 |
| EvtNext | 不存在时,报告ERROR_NOT_SUPPORTED。 |
| EvtQuery | 不存在时,报告ERROR_NOT_SUPPORTED。 |
| EvtRender | 不存在时,报告ERROR_NOT_SUPPORTED。 |
WinHttp.dll
| 函数 | Fallback |
|---|---|
| WinHttpCreateProxyResolver | 不存在时,内部实现。 |
| WinHttpGetProxyForUrlEx | 不存在时,异步调用WinHttpGetProxyForUrl。 |
| WinHttpGetProxyResult | 不存在时,内部实现。 |
| WinHttpFreeProxyResult | 不存在时,内部实现。 |
WinUsb.dll
| 函数 | Fallback |
|---|---|
| WinUsb_Free | 不存在时,报告ERROR_INVALID_HANDLE。 |
| WinUsb_GetAssociatedInterface | 不存在时,报告ERROR_INVALID_HANDLE。 |
| WinUsb_GetOverlappedResult | 不存在时,报告ERROR_INVALID_HANDLE。 |
| WinUsb_Initialize | 不存在时,报告ERROR_INVALID_HANDLE。 |
| WinUsb_ReadPipe | 不存在时,报告ERROR_INVALID_HANDLE。 |
| WinUsb_ResetPipe | 不存在时,报告ERROR_INVALID_HANDLE。 |
| WinUsb_SetCurrentAlternateSetting | 不存在时,报告ERROR_INVALID_HANDLE。 |
| WinUsb_WritePipe | 不存在时,报告ERROR_INVALID_HANDLE。 |
ws2_32.dll
| 函数 | Fallback |
|---|---|
| InetPtonW(inet_pton) | 不存在时,类似于sscanf手工分析字符串。 |
| InetNtopW(inet_ntop) | 不存在时,类似于sprintf手工生成字符串。 |
| WSAPoll | 不存在时,调用select。 |
| GetAddrInfoExCancel | 不存在时,使用线程模拟。 |
| GetAddrInfoExW(A) | 不存在时,调用GetAddrInfoW(A)。 |
| GetAddrInfoExOverlappedResult | 不存在时,内部实现。 |
| FreeAddrInfoEx(W) | 不存在时,内部实现。 |
| GetAddrInfoW | 不存在时,调用getaddrinfo。 |
| FreeAddrInfoW | 不存在时,内部实现。 |