Skip to content

detect under versioned os first and use WSAIoctl for fallback #365

detect under versioned os first and use WSAIoctl for fallback

detect under versioned os first and use WSAIoctl for fallback #365

GitHub Actions / 单元测试报告 failed Oct 19, 2024 in 0s

337 passed, 6 failed and 0 skipped

Tests failed

Report Passed Failed Skipped Time
TestResults/UnitTestWin32.trx 171✅ 3❌ 105s
TestResults/UnitTestWin64.trx 166✅ 3❌ 78s

❌ TestResults/UnitTestWin32.trx

174 tests were completed in 105s with 171 passed, 3 failed and 0 skipped.

Test suite Passed Failed Skipped Time
api_ms_win_core_fibers.FlsGet_SetValue 4✅ 339ms
api_ms_win_core_handle.CompareObjectHandles 2✅ 564ms
api_ms_win_core_kernel32_legacy.PowerRequest 1✅ 2ms
api_ms_win_core_localization.FindNLSStringEx 4✅ 1ms
api_ms_win_core_localization.GetThreadPreferredUILanguages 4✅ 1ms
api_ms_win_core_localization.LocaleNameToLCID 2✅ 6ms
api_ms_win_core_localization.ResolveLocaleName 6✅ 1ms
api_ms_win_core_path.PathCchAddBackslashEx 2✅ 0ms
api_ms_win_core_path.PathCchAddExtension 5✅ 0ms
api_ms_win_core_path.PathCchAppendEx 2✅ 0ms
api_ms_win_core_path.PathCchCanonicalizeEx 3✅ 0ms
api_ms_win_core_path.PathCchCombineEx 3✅ 0ms
api_ms_win_core_path.PathCchFindExtension 3✅ 0ms
api_ms_win_core_path.PathCchIsRoot 5✅ 0ms
api_ms_win_core_path.PathCchRemoveBackslashEx 3✅ 2ms
api_ms_win_core_path.PathCchRemoveExtension 1✅ 0ms
api_ms_win_core_path.PathCchRemoveFileSpec 4✅ 1ms
api_ms_win_core_path.PathCchRenameExtension 3✅ 0ms
api_ms_win_core_path.PathCchSkipRoot 4✅ 1ms
api_ms_win_core_path.PathCchStripPrefix 2✅ 0ms
api_ms_win_core_path.PathCchStripToRoot 4✅ 1ms
api_ms_win_core_path.PathIsUNCEx 4✅ 0ms
api_ms_win_core_synch.SynchronizationBarrier 2✅ 498ms
api_ms_win_core_synch.TryAcquireSRWLockExclusive 3✅ 512ms
api_ms_win_core_synch.WaitOnAddress 2✅ 493ms
api_ms_win_core_synch.WakeByAddressAll 1✅ 261ms
api_ms_win_core_synch.WakeByAddressSingle 1✅ 461ms
api_ms_win_core_threadpool.CancelThreadpoolIo 2✅ 402ms
api_ms_win_core_threadpool.FreeLibraryWhenCallbackReturns 2✅ 226ms
api_ms_win_core_threadpool.LeaveCriticalSectionWhenCallbackReturns 2✅ 229ms
api_ms_win_core_threadpool.ReleaseMutexWhenCallbackReturns 2✅ 219ms
api_ms_win_core_threadpool.ReleaseSemaphoreWhenCallbackReturns 2✅ 14ms
api_ms_win_core_threadpool.SetEventWhenCallbackReturns 2✅ 0ms
api_ms_win_core_threadpool.SetThreadpoolThreadMaximum 1✅ 537ms
api_ms_win_core_threadpool.SetThreadpoolTimer 6✅ 11s
api_ms_win_core_threadpool.SetThreadpoolWait 4✅ 16s
api_ms_win_core_threadpool.StartThreadpoolIo 3✅ 196ms
api_ms_win_core_threadpool.SubmitThreadpoolWork 1✅ 2s
api_ms_win_core_threadpool.TrySubmitThreadpoolCallback 1✅ 2s
api_ms_win_core_threadpool.WaitForThreadpoolIoCallbacks 2✅ 610ms
api_ms_win_core_threadpool.WaitForThreadpoolTimerCallbacks 1✅ 813ms
api_ms_win_core_threadpool.WaitForThreadpoolWaitCallbacks 1✅ 5s
api_ms_win_core_threadpool.WaitForThreadpoolWorkCallbacks 1✅ 2s
api_ms_win_core_winrt_string.WindowsCompareStringOrdinal 2✅ 1ms
api_ms_win_core_winrt_string.WindowsCreateString 4✅ 0ms
api_ms_win_core_winrt_string.WindowsDuplicateString 1✅ 0ms
api_ms_win_core_winrt_string.WindowsStringHasEmbeddedNull 3✅ 0ms
api_ms_win_power_base.PowerRegisterSuspendResumeNotification 1✅ 507ms
bcrypt.BCryptDecrypt 1✅ 1ms
bcrypt.BCryptDeriveKey 2✅ 0ms
bcrypt.BCryptEncrypt 6✅ 9ms
bcrypt.BCryptExportKey 1✅ 1ms
bcrypt.BCryptGenRandom 2✅ 0ms
bcrypt.BCryptGetProperty 3✅ 3ms
bcrypt.BCryptHash 4✅ 7ms
bcrypt.BCryptImportKey 1✅ 1ms
bcrypt.BCryptSetProperty 1✅ 1ms
Crypt32.CryptBinaryToStringW 1✅ 381ms
Iphlpapi.ConvertInterfaceLuidToGuid 1✅ 0ms
Iphlpapi.ConvertInterfaceLuidToName 2✅ 1ms
Iphlpapi.ConvertInterfaceNameToLuid 3✅ 2ms
Iphlpapi.GetIfTable2 1✅ 2ms
Iphlpapi.if_nametoindex与if_indextoname 1✅ 0ms
Others.可链接性检测 3❌ 12s
Others.通用项检测 1✅ 0ms
PropSys.VariantCompare 1✅ 0ms
shell32.SHGetKnownFolderIDList 1✅ 85ms
shell32.SHGetKnownFolderPath 1✅ 15ms
User32.AdjustWindowRectExForDpi 2✅ 9ms
User32.GetSystemMetricsForDpi 1✅ 7ms
User32.SystemParametersInfoForDpi 1✅ 10ms
WinHppt.WinHttpGetProxyForUrlEx 5✅ 486ms
WS2_32.GetAddrInfoEx 2✅ 3ms
WS2_32.GetAddrInfoExCancel 2✅ 19ms

✅ api_ms_win_core_fibers.FlsGet_SetValue

✅ Fls释放销毁回调验证
✅ 单线程验证
✅ 多线程验证
✅ 线程退出销毁回调验证

✅ api_ms_win_core_handle.CompareObjectHandles

✅ 匿名对象
✅ 常规比较

✅ api_ms_win_core_kernel32_legacy.PowerRequest

✅ Set然后Clear

✅ api_ms_win_core_localization.FindNLSStringEx

✅ FIND_ENDSWITH验证
✅ FIND_FROMEND验证
✅ FIND_FROMSTART验证
✅ FIND_STARTSWITH验证

✅ api_ms_win_core_localization.GetThreadPreferredUILanguages

✅ Languages消重验证
✅ MUI_LANGUAGE_ID验证
✅ MUI_LANGUAGE_NAME验证
✅ 无效参数验证

✅ api_ms_win_core_localization.LocaleNameToLCID

✅ LOCALE_ALLOW_NEUTRAL_NAMES验证
✅ 映射表验证

✅ api_ms_win_core_localization.ResolveLocaleName

✅ 中性语言验证
✅ 仅返回长度验证
✅ 特定区域排序语言验证
✅ 特定区域语言验证
✅ 自动回退验证
✅ 默认值验证

✅ api_ms_win_core_path.PathCchAddBackslashEx

✅ 基础功能测试
✅ 空指针测试

✅ api_ms_win_core_path.PathCchAddExtension

✅ 后缀本身是一个空字符串
✅ 后缀格式错误验证
✅ 向已经存在后缀的路径添加
✅ 常规的添加
✅ 当文件名为空时添加

✅ api_ms_win_core_path.PathCchAppendEx

✅ More参数是一个完整路径
✅ 基础功能验证

✅ api_ms_win_core_path.PathCchCanonicalizeEx

✅ 基础功能验证
✅ 末尾多余点删除验证
✅ 根目录向上跳转验证

✅ api_ms_win_core_path.PathCchCombineEx

✅ More参数以斜杠开头
✅ More参数是一个完整路径
✅ 基础功能验证

✅ api_ms_win_core_path.PathCchFindExtension

✅ 不带任何斜杠情况提取
✅ 后缀带空格情况提取
✅ 常规后缀提取

✅ api_ms_win_core_path.PathCchIsRoot

✅ Dos路径测试
✅ UNC路径测试
✅ VolumeGUID路径测试
✅ 特殊值测试
✅ 相对路径测试

✅ api_ms_win_core_path.PathCchRemoveBackslashEx

✅ Dos路径测试
✅ UNC路径测试
✅ VolumeGUID路径测试

✅ api_ms_win_core_path.PathCchRemoveExtension

✅ 基础功能验证

✅ api_ms_win_core_path.PathCchRemoveFileSpec

✅ Dos路径测试
✅ UNC路径测试
✅ VolumeGUID路径测试
✅ 相对路径目录测试

✅ api_ms_win_core_path.PathCchRenameExtension

✅ 删除后缀
✅ 添加后缀
✅ 重命名后缀

✅ api_ms_win_core_path.PathCchSkipRoot

✅ Dos路径
✅ UNC目录测试
✅ VolumeGUID目录测试
✅ 相对路径目录测试

✅ api_ms_win_core_path.PathCchStripPrefix

✅ Dos路径
✅ UNC路径

✅ api_ms_win_core_path.PathCchStripToRoot

✅ Dos路径测试
✅ UNC路径测试
✅ VolumeGUID路径测试
✅ 相对路径测试

✅ api_ms_win_core_path.PathIsUNCEx

✅ Dos路径容错
✅ 传统UNC路径分割
✅ 空指针测试
✅ 长命名UNC路径分割

✅ api_ms_win_core_synch.SynchronizationBarrier

✅ EnterSynchronizationBarrier阻塞验证
✅ 创建销毁Barrier

✅ api_ms_win_core_synch.TryAcquireSRWLockExclusive

✅ 如果其他线程占用,那么应该失败
✅ 锁定后其他线程会等待
✅ 首次肯定成功

✅ api_ms_win_core_synch.WaitOnAddress

✅ 结果本身不同
✅ 结果本身相同

✅ api_ms_win_core_synch.WakeByAddressAll

✅ 唤醒所有线程

✅ api_ms_win_core_synch.WakeByAddressSingle

✅ 只唤醒了一个线程

✅ api_ms_win_core_threadpool.CancelThreadpoolIo

✅ 彻底取消后不会再触发
✅ 没有彻底取消时任然可以收到特定次数

✅ api_ms_win_core_threadpool.FreeLibraryWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.LeaveCriticalSectionWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.ReleaseMutexWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.ReleaseSemaphoreWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.SetEventWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.SetThreadpoolThreadMaximum

✅ 最大上限测试

✅ api_ms_win_core_threadpool.SetThreadpoolTimer

✅ 一次性定时器
✅ 定时器覆盖
✅ 当DueTime数值为0时
✅ 当DueTime是nullptr
✅ 当DueTime是相对时间
✅ 当DueTime是绝对时间

✅ api_ms_win_core_threadpool.SetThreadpoolWait

✅ 取消等待器
✅ 无限等待
✅ 相对时间等待
✅ 绝对时间等待

✅ api_ms_win_core_threadpool.StartThreadpoolIo

✅ StartThreadpoolIo一次
✅ StartThreadpoolIo二次
✅ 如果不调用StartThreadpoolIo那么Claaback一直不会触发

✅ api_ms_win_core_threadpool.SubmitThreadpoolWork

✅ 一般行为验证

✅ api_ms_win_core_threadpool.TrySubmitThreadpoolCallback

✅ 一般行为验证

✅ api_ms_win_core_threadpool.WaitForThreadpoolIoCallbacks

✅ 任务完成后可以收到信号
✅ 取消任务后回调没有信息

✅ api_ms_win_core_threadpool.WaitForThreadpoolTimerCallbacks

✅ 一般行为验证

✅ api_ms_win_core_threadpool.WaitForThreadpoolWaitCallbacks

✅ 一般行为验证

✅ api_ms_win_core_threadpool.WaitForThreadpoolWorkCallbacks

✅ 一般行为验证

✅ api_ms_win_core_winrt_string.WindowsCompareStringOrdinal

✅ 常规验证
✅ 空值验证

✅ api_ms_win_core_winrt_string.WindowsCreateString

✅ 中途带零的字符串
✅ 中途截断的字符串
✅ 标准C字符串
✅ 结尾多一个零的字符串

✅ api_ms_win_core_winrt_string.WindowsDuplicateString

✅ 标准行为验证

✅ api_ms_win_core_winrt_string.WindowsStringHasEmbeddedNull

✅ 中途带零的字符串
✅ 标准C字符串
✅ 结尾多一个零的字符串

✅ api_ms_win_power_base.PowerRegisterSuspendResumeNotification

✅ 创建然后关闭

✅ bcrypt.BCryptDecrypt

✅ AES解密测试

✅ bcrypt.BCryptDeriveKey

✅ Capi
✅ PBKDF2

✅ bcrypt.BCryptEncrypt

✅ _3DES_112加密测试
✅ _3DES加密测试
✅ AES加密测试
✅ DES加密测试
✅ RC2加密测试
✅ RC4加密测试

✅ bcrypt.BCryptExportKey

✅ AES密钥导出

✅ bcrypt.BCryptGenRandom

✅ BCRYPT_USE_SYSTEM_PREFERRED_RNG模式
✅ BCryptOpen在关闭

✅ bcrypt.BCryptGetProperty

✅ AES加密算法相关属性
✅ Hash
✅ Random

✅ bcrypt.BCryptHash

✅ HMAC_Sha1
✅ MD5
✅ Sha1
✅ Sha256

✅ bcrypt.BCryptImportKey

✅ AES密钥导入

✅ bcrypt.BCryptSetProperty

✅ AES加密算法相关属性

✅ Crypt32.CryptBinaryToStringW

✅ CRYPT_STRING_NOCRLF参数验证

✅ Iphlpapi.ConvertInterfaceLuidToGuid

✅ 交叉验证

✅ Iphlpapi.ConvertInterfaceLuidToName

✅ 畸形输入验证
✅ 输入验证

✅ Iphlpapi.ConvertInterfaceNameToLuid

✅ 大小写验证
✅ 畸形输入写验证
✅ 输入验证

✅ Iphlpapi.GetIfTable2

✅ GetIfTable2简单验证

✅ Iphlpapi.if_nametoindex与if_indextoname

✅ 交叉验证

❌ Others.可链接性检测

❌ lib模式可链接性
	Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\6.0.6000.0\Build.log
❌ obj模式可链接性
	Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\YY_Thunks_for_Vista.obj\Build.log
❌ SDK6可链接性
	Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\YY_Thunks_for_Vista.obj_SDK6\Build.log

✅ Others.通用项检测

✅ 符号Thunks检测

✅ PropSys.VariantCompare

✅ 一般

✅ shell32.SHGetKnownFolderIDList

✅ 基本验证

✅ shell32.SHGetKnownFolderPath

✅ 基本验证

✅ User32.AdjustWindowRectExForDpi

✅ 常规测试
✅ 畸形测试

✅ User32.GetSystemMetricsForDpi

✅ 常规测试

✅ User32.SystemParametersInfoForDpi

✅ 常规测试

✅ WinHppt.WinHttpGetProxyForUrlEx

✅ DIRECT配置
✅ 三条混合配置
✅ 二条HTTP配置
✅ 单条HTTPS配置
✅ 单条HTTP配置

✅ WS2_32.GetAddrInfoEx

✅ Win2003_XPSP3模式
✅ WinXP_RTM模式

✅ WS2_32.GetAddrInfoExCancel

✅ 任务取消测试
✅ 异步不取消

❌ TestResults/UnitTestWin64.trx

169 tests were completed in 78s with 166 passed, 3 failed and 0 skipped.

Test suite Passed Failed Skipped Time
api_ms_win_core_handle.CompareObjectHandles 2✅ 533ms
api_ms_win_core_kernel32_legacy.PowerRequest 1✅ 3ms
api_ms_win_core_localization.FindNLSStringEx 4✅ 1ms
api_ms_win_core_localization.GetThreadPreferredUILanguages 4✅ 1ms
api_ms_win_core_localization.LocaleNameToLCID 2✅ 14ms
api_ms_win_core_localization.ResolveLocaleName 6✅ 2ms
api_ms_win_core_path.PathCchAddBackslashEx 2✅ 0ms
api_ms_win_core_path.PathCchAddExtension 5✅ 1ms
api_ms_win_core_path.PathCchAppendEx 2✅ 1ms
api_ms_win_core_path.PathCchCanonicalizeEx 3✅ 1ms
api_ms_win_core_path.PathCchCombineEx 3✅ 1ms
api_ms_win_core_path.PathCchFindExtension 3✅ 0ms
api_ms_win_core_path.PathCchIsRoot 5✅ 0ms
api_ms_win_core_path.PathCchRemoveBackslashEx 3✅ 3ms
api_ms_win_core_path.PathCchRemoveExtension 1✅ 0ms
api_ms_win_core_path.PathCchRemoveFileSpec 4✅ 3ms
api_ms_win_core_path.PathCchRenameExtension 3✅ 1ms
api_ms_win_core_path.PathCchSkipRoot 4✅ 2ms
api_ms_win_core_path.PathCchStripPrefix 2✅ 0ms
api_ms_win_core_path.PathCchStripToRoot 4✅ 2ms
api_ms_win_core_path.PathIsUNCEx 4✅ 0ms
api_ms_win_core_synch.SynchronizationBarrier 2✅ 495ms
api_ms_win_core_synch.TryAcquireSRWLockExclusive 3✅ 506ms
api_ms_win_core_synch.WaitOnAddress 2✅ 487ms
api_ms_win_core_synch.WakeByAddressAll 1✅ 243ms
api_ms_win_core_synch.WakeByAddressSingle 1✅ 443ms
api_ms_win_core_threadpool.CancelThreadpoolIo 2✅ 407ms
api_ms_win_core_threadpool.FreeLibraryWhenCallbackReturns 2✅ 235ms
api_ms_win_core_threadpool.LeaveCriticalSectionWhenCallbackReturns 2✅ 205ms
api_ms_win_core_threadpool.ReleaseMutexWhenCallbackReturns 2✅ 215ms
api_ms_win_core_threadpool.ReleaseSemaphoreWhenCallbackReturns 2✅ 3ms
api_ms_win_core_threadpool.SetEventWhenCallbackReturns 2✅ 8ms
api_ms_win_core_threadpool.SetThreadpoolThreadMaximum 1✅ 540ms
api_ms_win_core_threadpool.SetThreadpoolTimer 6✅ 11s
api_ms_win_core_threadpool.SetThreadpoolWait 4✅ 16s
api_ms_win_core_threadpool.StartThreadpoolIo 3✅ 217ms
api_ms_win_core_threadpool.SubmitThreadpoolWork 1✅ 2s
api_ms_win_core_threadpool.TrySubmitThreadpoolCallback 1✅ 2s
api_ms_win_core_threadpool.WaitForThreadpoolIoCallbacks 2✅ 612ms
api_ms_win_core_threadpool.WaitForThreadpoolTimerCallbacks 1✅ 822ms
api_ms_win_core_threadpool.WaitForThreadpoolWaitCallbacks 1✅ 5s
api_ms_win_core_threadpool.WaitForThreadpoolWorkCallbacks 1✅ 2s
api_ms_win_core_winrt_string.WindowsCompareStringOrdinal 2✅ 1ms
api_ms_win_core_winrt_string.WindowsCreateString 4✅ 0ms
api_ms_win_core_winrt_string.WindowsDuplicateString 1✅ 0ms
api_ms_win_core_winrt_string.WindowsStringHasEmbeddedNull 3✅ 0ms
api_ms_win_power_base.PowerRegisterSuspendResumeNotification 1✅ 508ms
bcrypt.BCryptDecrypt 1✅ 2ms
bcrypt.BCryptDeriveKey 2✅ 0ms
bcrypt.BCryptEncrypt 6✅ 10ms
bcrypt.BCryptExportKey 1✅ 2ms
bcrypt.BCryptGenRandom 2✅ 0ms
bcrypt.BCryptGetProperty 3✅ 4ms
bcrypt.BCryptHash 4✅ 9ms
bcrypt.BCryptImportKey 1✅ 2ms
bcrypt.BCryptSetProperty 1✅ 2ms
Crypt32.CryptBinaryToStringW 1✅ 447ms
Iphlpapi.ConvertInterfaceLuidToGuid 1✅ 0ms
Iphlpapi.ConvertInterfaceLuidToName 2✅ 2ms
Iphlpapi.ConvertInterfaceNameToLuid 3✅ 3ms
Iphlpapi.GetIfTable2 1✅ 2ms
Iphlpapi.if_nametoindex与if_indextoname 1✅ 0ms
Others.可链接性检测 3❌ 13s
Others.通用项检测 1✅ 0ms
PropSys.VariantCompare 1✅ 0ms
shell32.SHGetKnownFolderIDList 1✅ 7ms
shell32.SHGetKnownFolderPath 1✅ 3ms
User32.AdjustWindowRectExForDpi 2✅ 1ms
User32.GetSystemMetricsForDpi 1✅ 9ms
User32.SystemParametersInfoForDpi 1✅ 1ms
WinHppt.WinHttpGetProxyForUrlEx 5✅ 18ms
WS2_32.GetAddrInfoEx 1✅ 1ms
WS2_32.GetAddrInfoExCancel 2✅ 25ms

✅ api_ms_win_core_handle.CompareObjectHandles

✅ 匿名对象
✅ 常规比较

✅ api_ms_win_core_kernel32_legacy.PowerRequest

✅ Set然后Clear

✅ api_ms_win_core_localization.FindNLSStringEx

✅ FIND_ENDSWITH验证
✅ FIND_FROMEND验证
✅ FIND_FROMSTART验证
✅ FIND_STARTSWITH验证

✅ api_ms_win_core_localization.GetThreadPreferredUILanguages

✅ Languages消重验证
✅ MUI_LANGUAGE_ID验证
✅ MUI_LANGUAGE_NAME验证
✅ 无效参数验证

✅ api_ms_win_core_localization.LocaleNameToLCID

✅ LOCALE_ALLOW_NEUTRAL_NAMES验证
✅ 映射表验证

✅ api_ms_win_core_localization.ResolveLocaleName

✅ 中性语言验证
✅ 仅返回长度验证
✅ 特定区域排序语言验证
✅ 特定区域语言验证
✅ 自动回退验证
✅ 默认值验证

✅ api_ms_win_core_path.PathCchAddBackslashEx

✅ 基础功能测试
✅ 空指针测试

✅ api_ms_win_core_path.PathCchAddExtension

✅ 后缀本身是一个空字符串
✅ 后缀格式错误验证
✅ 向已经存在后缀的路径添加
✅ 常规的添加
✅ 当文件名为空时添加

✅ api_ms_win_core_path.PathCchAppendEx

✅ More参数是一个完整路径
✅ 基础功能验证

✅ api_ms_win_core_path.PathCchCanonicalizeEx

✅ 基础功能验证
✅ 末尾多余点删除验证
✅ 根目录向上跳转验证

✅ api_ms_win_core_path.PathCchCombineEx

✅ More参数以斜杠开头
✅ More参数是一个完整路径
✅ 基础功能验证

✅ api_ms_win_core_path.PathCchFindExtension

✅ 不带任何斜杠情况提取
✅ 后缀带空格情况提取
✅ 常规后缀提取

✅ api_ms_win_core_path.PathCchIsRoot

✅ Dos路径测试
✅ UNC路径测试
✅ VolumeGUID路径测试
✅ 特殊值测试
✅ 相对路径测试

✅ api_ms_win_core_path.PathCchRemoveBackslashEx

✅ Dos路径测试
✅ UNC路径测试
✅ VolumeGUID路径测试

✅ api_ms_win_core_path.PathCchRemoveExtension

✅ 基础功能验证

✅ api_ms_win_core_path.PathCchRemoveFileSpec

✅ Dos路径测试
✅ UNC路径测试
✅ VolumeGUID路径测试
✅ 相对路径目录测试

✅ api_ms_win_core_path.PathCchRenameExtension

✅ 删除后缀
✅ 添加后缀
✅ 重命名后缀

✅ api_ms_win_core_path.PathCchSkipRoot

✅ Dos路径
✅ UNC目录测试
✅ VolumeGUID目录测试
✅ 相对路径目录测试

✅ api_ms_win_core_path.PathCchStripPrefix

✅ Dos路径
✅ UNC路径

✅ api_ms_win_core_path.PathCchStripToRoot

✅ Dos路径测试
✅ UNC路径测试
✅ VolumeGUID路径测试
✅ 相对路径测试

✅ api_ms_win_core_path.PathIsUNCEx

✅ Dos路径容错
✅ 传统UNC路径分割
✅ 空指针测试
✅ 长命名UNC路径分割

✅ api_ms_win_core_synch.SynchronizationBarrier

✅ EnterSynchronizationBarrier阻塞验证
✅ 创建销毁Barrier

✅ api_ms_win_core_synch.TryAcquireSRWLockExclusive

✅ 如果其他线程占用,那么应该失败
✅ 锁定后其他线程会等待
✅ 首次肯定成功

✅ api_ms_win_core_synch.WaitOnAddress

✅ 结果本身不同
✅ 结果本身相同

✅ api_ms_win_core_synch.WakeByAddressAll

✅ 唤醒所有线程

✅ api_ms_win_core_synch.WakeByAddressSingle

✅ 只唤醒了一个线程

✅ api_ms_win_core_threadpool.CancelThreadpoolIo

✅ 彻底取消后不会再触发
✅ 没有彻底取消时任然可以收到特定次数

✅ api_ms_win_core_threadpool.FreeLibraryWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.LeaveCriticalSectionWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.ReleaseMutexWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.ReleaseSemaphoreWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.SetEventWhenCallbackReturns

✅ 任务测试
✅ 定时器测试

✅ api_ms_win_core_threadpool.SetThreadpoolThreadMaximum

✅ 最大上限测试

✅ api_ms_win_core_threadpool.SetThreadpoolTimer

✅ 一次性定时器
✅ 定时器覆盖
✅ 当DueTime数值为0时
✅ 当DueTime是nullptr
✅ 当DueTime是相对时间
✅ 当DueTime是绝对时间

✅ api_ms_win_core_threadpool.SetThreadpoolWait

✅ 取消等待器
✅ 无限等待
✅ 相对时间等待
✅ 绝对时间等待

✅ api_ms_win_core_threadpool.StartThreadpoolIo

✅ StartThreadpoolIo一次
✅ StartThreadpoolIo二次
✅ 如果不调用StartThreadpoolIo那么Claaback一直不会触发

✅ api_ms_win_core_threadpool.SubmitThreadpoolWork

✅ 一般行为验证

✅ api_ms_win_core_threadpool.TrySubmitThreadpoolCallback

✅ 一般行为验证

✅ api_ms_win_core_threadpool.WaitForThreadpoolIoCallbacks

✅ 任务完成后可以收到信号
✅ 取消任务后回调没有信息

✅ api_ms_win_core_threadpool.WaitForThreadpoolTimerCallbacks

✅ 一般行为验证

✅ api_ms_win_core_threadpool.WaitForThreadpoolWaitCallbacks

✅ 一般行为验证

✅ api_ms_win_core_threadpool.WaitForThreadpoolWorkCallbacks

✅ 一般行为验证

✅ api_ms_win_core_winrt_string.WindowsCompareStringOrdinal

✅ 常规验证
✅ 空值验证

✅ api_ms_win_core_winrt_string.WindowsCreateString

✅ 中途带零的字符串
✅ 中途截断的字符串
✅ 标准C字符串
✅ 结尾多一个零的字符串

✅ api_ms_win_core_winrt_string.WindowsDuplicateString

✅ 标准行为验证

✅ api_ms_win_core_winrt_string.WindowsStringHasEmbeddedNull

✅ 中途带零的字符串
✅ 标准C字符串
✅ 结尾多一个零的字符串

✅ api_ms_win_power_base.PowerRegisterSuspendResumeNotification

✅ 创建然后关闭

✅ bcrypt.BCryptDecrypt

✅ AES解密测试

✅ bcrypt.BCryptDeriveKey

✅ Capi
✅ PBKDF2

✅ bcrypt.BCryptEncrypt

✅ _3DES_112加密测试
✅ _3DES加密测试
✅ AES加密测试
✅ DES加密测试
✅ RC2加密测试
✅ RC4加密测试

✅ bcrypt.BCryptExportKey

✅ AES密钥导出

✅ bcrypt.BCryptGenRandom

✅ BCRYPT_USE_SYSTEM_PREFERRED_RNG模式
✅ BCryptOpen在关闭

✅ bcrypt.BCryptGetProperty

✅ AES加密算法相关属性
✅ Hash
✅ Random

✅ bcrypt.BCryptHash

✅ HMAC_Sha1
✅ MD5
✅ Sha1
✅ Sha256

✅ bcrypt.BCryptImportKey

✅ AES密钥导入

✅ bcrypt.BCryptSetProperty

✅ AES加密算法相关属性

✅ Crypt32.CryptBinaryToStringW

✅ CRYPT_STRING_NOCRLF参数验证

✅ Iphlpapi.ConvertInterfaceLuidToGuid

✅ 交叉验证

✅ Iphlpapi.ConvertInterfaceLuidToName

✅ 畸形输入验证
✅ 输入验证

✅ Iphlpapi.ConvertInterfaceNameToLuid

✅ 大小写验证
✅ 畸形输入写验证
✅ 输入验证

✅ Iphlpapi.GetIfTable2

✅ GetIfTable2简单验证

✅ Iphlpapi.if_nametoindex与if_indextoname

✅ 交叉验证

❌ Others.可链接性检测

❌ lib模式可链接性
	Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\6.0.6000.0\Build.log
❌ obj模式可链接性
	Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\YY_Thunks_for_Vista.obj\Build.log
❌ SDK6可链接性
	Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\YY_Thunks_for_Vista.obj_SDK6\Build.log

✅ Others.通用项检测

✅ 符号Thunks检测

✅ PropSys.VariantCompare

✅ 一般

✅ shell32.SHGetKnownFolderIDList

✅ 基本验证

✅ shell32.SHGetKnownFolderPath

✅ 基本验证

✅ User32.AdjustWindowRectExForDpi

✅ 常规测试
✅ 畸形测试

✅ User32.GetSystemMetricsForDpi

✅ 常规测试

✅ User32.SystemParametersInfoForDpi

✅ 常规测试

✅ WinHppt.WinHttpGetProxyForUrlEx

✅ DIRECT配置
✅ 三条混合配置
✅ 二条HTTP配置
✅ 单条HTTPS配置
✅ 单条HTTP配置

✅ WS2_32.GetAddrInfoEx

✅ Win2003_XPSP3模式

✅ WS2_32.GetAddrInfoExCancel

✅ 任务取消测试
✅ 异步不取消

Annotations

Check failure on line 171 in src/YY-Thunks.UnitTest/YY-Thunks.UnitTest.cpp

See this annotation in the file changed.

@github-actions github-actions / 单元测试报告

Others.可链接性检测 ► lib模式可链接性

Failed test found in:
  TestResults/UnitTestWin32.trx
  TestResults/UnitTestWin64.trx
Error:
  Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\6.0.6000.0\Build.log
Raw output
Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\6.0.6000.0\Build.log
	at RunMSBuildTest() in D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\YY-Thunks.UnitTest.cpp:line 171
	at Others::可链接性检测::lib模式可链接性() in D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\YY-Thunks.UnitTest.cpp:line 651

Check failure on line 171 in src/YY-Thunks.UnitTest/YY-Thunks.UnitTest.cpp

See this annotation in the file changed.

@github-actions github-actions / 单元测试报告

Others.可链接性检测 ► obj模式可链接性

Failed test found in:
  TestResults/UnitTestWin32.trx
  TestResults/UnitTestWin64.trx
Error:
  Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\YY_Thunks_for_Vista.obj\Build.log
Raw output
Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\YY_Thunks_for_Vista.obj\Build.log
	at RunMSBuildTest() in D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\YY-Thunks.UnitTest.cpp:line 171
	at Others::可链接性检测::obj模式可链接性() in D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\YY-Thunks.UnitTest.cpp:line 602

Check failure on line 171 in src/YY-Thunks.UnitTest/YY-Thunks.UnitTest.cpp

See this annotation in the file changed.

@github-actions github-actions / 单元测试报告

Others.可链接性检测 ► SDK6可链接性

Failed test found in:
  TestResults/UnitTestWin32.trx
  TestResults/UnitTestWin64.trx
Error:
  Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\YY_Thunks_for_Vista.obj_SDK6\Build.log
Raw output
Assert failed. Expected:<1> Actual:<0> - D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\TestProject\Example\Win32\Static\YY_Thunks_for_Vista.obj_SDK6\Build.log
	at RunMSBuildTest() in D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\YY-Thunks.UnitTest.cpp:line 171
	at Others::可链接性检测::SDK6可链接性() in D:\a\YY-Thunks\YY-Thunks\src\YY-Thunks.UnitTest\YY-Thunks.UnitTest.cpp:line 690