EM9170是一款基于FreeScale iMX257芯片,預(yù)裝Windows CE6.0的通用工控主板。EM9170在為客戶應(yīng)用提供了更為豐富的資源,以滿足客戶更多的專業(yè)需求的同時(shí),還在客戶應(yīng)用程序保護(hù)方面,準(zhǔn)備了多種手段。保護(hù)客戶應(yīng)用程序的基本方法是對主板進(jìn)行加密碼設(shè)置,并在應(yīng)用程序中采用專用手段進(jìn)行驗(yàn)證,客戶可在英創(chuàng)網(wǎng)站進(jìn)一步了解進(jìn)行密碼設(shè)置的流程。客戶密碼設(shè)置是面向客戶的,即每一個(gè)客戶所購買的所有EM9170主板產(chǎn)品,其密碼是相同的,本文則主要介紹如何讀取每個(gè)EM9170主板上唯一的設(shè)備ID號的方法。唯一設(shè)備ID號不僅能用于客戶應(yīng)用程序的保護(hù),同時(shí)還能方便客戶對設(shè)備的維護(hù)管理。
讀取設(shè)備ID號,需要使用微軟的GUID數(shù)據(jù)結(jié)構(gòu):
typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID, UUID;
讀取EM9170主板上的唯一ID號的范例代碼如下:
#include 'stdafx.h'
#include
#include
#include
#define IOCTL_HAL_GET_DEVICE_INFO \ CTL_CODE(FILE_DEVICE_HAL, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
extern 'C' __declspec(dllimport) BOOL KernelIoControl(DWORD dwIoControlCode,
LPVOID pInBuffer,
DWORD InSize,
LPVOID pOutBuffer,
DWORD OutSize,
LPDWORD pReturnBytes);
int _tmain(int argc, _TCHAR* argv[])
{
GUID uuid;
DWORD dwSize = sizeof(uuid);
UINT32 spiValue = SPI_GETUUID;
UINT32 i;
printf('Get Device Info V1.0\r\n');
if(FALSE==KernelIoControl(IOCTL_HAL_GET_DEVICE_INFO, &spiValue, sizeof(spiValue), &uuid,dwSize, &dwSize))
{
printf('KernelIoControl->IOCTL_HAL_GET_DEVICE_INFO failed\r\n');
return -1;
}
// printd Device ID
for(i = 0; i < sizeof(uuid.Data4); i++)
{
printf('uuid.Data4[%d] = 0x%02x\r\n', i, uuid.Data4[i]);
}
return 0;
}
GUID結(jié)構(gòu)中的uuid.Data4為64-bit的設(shè)備唯一ID號。Data1–Data3為系統(tǒng)保留數(shù)據(jù),應(yīng)用程序可不關(guān)心。
-
WINDOWS
+關(guān)注
關(guān)注
3文章
3521瀏覽量
88320 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6084瀏覽量
35154
發(fā)布評論請先 登錄
相關(guān)推薦
評論