VMware的虛擬機BIOS信息(太長,只顯示部分)如下:
代碼(msdn上面有代碼例子)如下,具體使用GetSystemFirmwareTable( )函數:
#include <stdio.h>
#include <windows.h>
// 定義BIOS信息結構體
struct RawSMBIOSData
{
BYTE Used20CallingMethod;
BYTE SMBIOSMajorVersion;
BYTE SMBIOSMinorVersion;
BYTE DmiRevision;
DWORD Length;
BYTE SMBIOSTableData[];
};
int main()
{
int dwSize = GetSystemFirmwareTable('RSMB',0, NULL, 0);
RawSMBIOSData* pBuffer = (RawSMBIOSData*)malloc(dwSize);
memset(pBuffer,0,dwSize);
int dwWriteSize=GetSystemFirmwareTable('RSMB',0,pBuffer,dwSize);
if( dwWriteSize<=dwSize )
{
for( int i=0; i<pBuffer->Length; i++)
{
if(pBuffer->SMBIOSTableData[i] == 'V')
{
if(strncmp((const char*)&(pBuffer->SMBIOSTableData[i]),"VMware",6) == 0)
{
printf("程序運行在虛擬機中!!!\n");
break;
}
}
}
}
free(pBuffer);
system("pause");
return 0;
}
運行結果: