windows 10的判断方法:
if (GetProcAddress(_Ntdll, "LdrFastFailInLoaderCallout")) {
Dll_Windows = 10;
}
windows 11的判断方法:
BOOL IsWin11AndLater()
{
//Windows 10 从内部版本 10240 开始,以内部版本 19044 结束。Windows 11 从内部版本 22000 开始,那么:
//Environment.OSVersion.Version.Build >= 22000;
NTSTATUS(WINAPI * RtlGetVersion)(LPOSVERSIONINFOEXW);
OSVERSIONINFOEXW osInfo;
*(FARPROC*)&RtlGetVersion = GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion");
if (NULL != RtlGetVersion)
{
osInfo.dwOSVersionInfoSize = sizeof(osInfo);
RtlGetVersion(&osInfo);
return (osInfo.dwMajorVersion >= 10 && osInfo.dwBuildNumber >= 22000);
}
return FALSE;
}
另外:
__stdcall调用格式为_name@number,例如 :fun(int a, int b),其修饰名为:_fun@8
__cdecl调用约定格式为_name
__fastcall调用约定格式为@name@number
//Cykj@2021.