日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
在WindowsEmbedded中獲取設(shè)備ID

在WinCE下獲取設(shè)備ID(Device ID)并不困難,只要簡單地調(diào)用KernelIoControl即可.不過至于能否獲得設(shè)備ID,并且獲得的ID屬于什么類型,則關(guān)系到驅(qū)動層的實現(xiàn).而設(shè)備ID的實現(xiàn),在不同的平臺有不同,比如在夏普的LH71404的開發(fā)板中,設(shè)備ID位于platform.c中.不過本文目的不關(guān)注如何設(shè)置或編寫設(shè)備ID,而僅僅是通過函數(shù)調(diào)用獲得該設(shè)備ID而已.

首先我們來看看設(shè)備ID在WinCE下的定義:

 
 
 
  1. typedef struct _DEVICE_ID {
  2.     DWORD   dwSize;
  3.     DWORD   dwPresetIDOffset;
  4.     DWORD   dwPresetIDBytes;
  5.     DWORD   dwPlatformIDOffset;
  6.     DWORD   dwPlatformIDBytes;
  7. } DEVICE_ID, *PDEVICE_ID;

結(jié)構(gòu)清晰明了,而我們所要關(guān)注的僅僅是這兩個字段:dwPlatformIDOffset和dwPlatformIDBytes.
   
現(xiàn)在假設(shè)我們有一個平臺,該平臺的設(shè)備ID為一個字符串:"MyDeviceId",那么我們可以通過下面一個簡單的例子獲得該設(shè)備ID:

 
 
 
  1. char szBuf[MAX_PATH] = {0};
  2.    DEVICE_ID devID = {0};
  3.    GetDeviceID((BYTE *)szBuf,MAX_PATH,&devID);
  4.    char szDeviceID[MAX_PATH] = {0};
  5.    strcpy(szDeviceID,szBuf + devID.dwPlatformIDOffset);

此時szDeviceID中存儲的字符串就是"MyDeviceId".
   
代碼中的GetDeviceID是自己寫的一個獲取ID函數(shù),該代碼如下:

 
 
 
  1. DWORD GetDeviceID(BYTE *pOutBuf,DWORD dwBufSize,DEVICE_ID *pDeviceID)
  2.         {
  3.             DWORD dwRead = 0;
  4.             if(KernelIoControl(IOCTL_HAL_GET_DEVICEID, NULL, 0, pOutBuf, dwBufSize, &dwRead) == FALSE)
  5.             {
  6.                 return 0;
  7.             }
  8.         
  9.             pDeviceID = (PDEVICE_ID)pOutBuf;
  10.         
  11.             return dwRead;
  12.         }

pOutBuf是傳入的存儲緩沖區(qū),dwBufSize是緩沖區(qū)大小,pDeviceID是接受設(shè)備ID的結(jié)構(gòu)信息,函數(shù)返回值是讀取的字節(jié)數(shù),當(dāng)為0的時候,很可能是函數(shù)讀設(shè)備ID失敗.調(diào)用方法很簡單,可參考上文的例子.
 
代碼中出現(xiàn)的IOCTL_HAL_GET_DEVICEID是WinCE下定義的宏,專注于獲取設(shè)備ID,該宏的定義如下:

 
 
 
  1. #define IOCTL_HAL_GET_DEVICEID      CTL_CODE(FILE_DEVICE_HAL, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)

最后需要說的是,要使該段代碼工作正常,尚且需要包含該頭文件:Pkfuncs.h。


本文標(biāo)題:在WindowsEmbedded中獲取設(shè)備ID
分享鏈接:http://www.dlmjj.cn/article/coehcph.html