如何获得WM5,CE设备号

来源:互联网 发布:js定义json数组对象 编辑:程序博客网 时间:2024/05/16 12:25
如何获得WM5,CE设备号 

#include <uniqueid.h>
#define MAX_LOADSTRING 100

BOOL GetDeviceID( GUID* pGuid)
{
BOOL fRes;
    DWORD dwBytesReturned =0;
DEVICE_ID* pDevID;
int wSize;

if (NULL == pGuid)
return FALSE;

memset(pGuid, 0, sizeof(GUID));

pDevID = (DEVICE_ID*)malloc(sizeof(DEVICE_ID));
memset(pDevID, 0, sizeof(DEVICE_ID));
pDevID->dwSize = sizeof(DEVICE_ID);

   fRes = KernelIoControl( IOCTL_HAL_GET_DEVICEID, NULL, 0,
            pDevID, sizeof( DEVICE_ID ), &dwBytesReturned );

wSize = pDevID->dwSize;
free(pDevID);
if( (FALSE != fRes) || (ERROR_INSUFFICIENT_BUFFER != GetLastError()))
return FALSE;

pDevID = (DEVICE_ID*)malloc(wSize);
memset(pDevID, 0, sizeof(wSize));
pDevID->dwSize = wSize;
    fRes = KernelIoControl( IOCTL_HAL_GET_DEVICEID, NULL, 0,
            pDevID, wSize, &dwBytesReturned );

if((FALSE == fRes) || (ERROR_INSUFFICIENT_BUFFER == GetLastError()) )
return FALSE;

BYTE* pDat = (BYTE*)&pGuid->Data1;
BYTE* pSrc = (BYTE*)(pDevID) + pDevID->dwPresetIDOffset;
memcpy(pDat, pSrc, pDevID->dwPresetIDBytes);
pDat +=  pDevID->dwPresetIDBytes;
pSrc =  (BYTE*)(pDevID) + pDevID->dwPlatformIDOffset;
memcpy(pDat, pSrc, pDevID->dwPlatformIDBytes);

return true;
}

void OnButton1()
{
 GUID gid;
 WCHAR szData[MAX_LOADSTRING];
 GetDeviceID(&gid);
 StringFromGUID2(gid, szData, MAX_LOADSTRING);
// AfxMessageBox(szData);

 // 我稍微改了下

// 获得结构体型GUID
bool GetDeviceID( GUID* pGuid)
{
 if (NULL == pGuid)
  return false;

 BOOL fRes;
 DWORD dwBytesReturned =0;
 int wSize = 255;

 DEVICE_ID* pDevID;
 memset(pGuid, 0, sizeof(GUID));

 BYTE arrOutBuff[MAX_LOADSTRING]={0};
 fRes = KernelIoControl( IOCTL_HAL_GET_DEVICEID, NULL, 0,
  arrOutBuff, MAX_LOADSTRING, &dwBytesReturned );
 wSize = dwBytesReturned;

 pDevID = (DEVICE_ID*)malloc(wSize);
 memset(pDevID, 0, wSize);
 fRes = KernelIoControl( IOCTL_HAL_GET_DEVICEID, NULL, 0,
  pDevID, wSize, &dwBytesReturned );

 if((FALSE == fRes) || (ERROR_INSUFFICIENT_BUFFER == GetLastError()) )
  return false;

 BYTE* pDat = (BYTE*)&pGuid->Data1;
 BYTE* pSrc = (BYTE*)(pDevID) + pDevID->dwPresetIDOffset;
 memcpy(pDat, pSrc, pDevID->dwPresetIDBytes);
 pDat += pDevID->dwPresetIDBytes;
 pSrc = (BYTE*)(pDevID) + pDevID->dwPlatformIDOffset;
 memcpy(pDat, pSrc, pDevID->dwPlatformIDBytes);

 free(pDevID);
 return true;
}
// 获得GUID
bool GetWM5DiveceUniqueID( char* sData)
{
 // Get struct GUID
 GUID gid;
 if ( !GetDeviceID(&gid) )
  return false;
 // Get wchar_t GUID
 TCHAR szData[MAX_LOADSTRING] = {0};
 short nszDataLen = StringFromGUID2(gid, szData, MAX_LOADSTRING) -1;

 // delete {}
 for(int i=0; i<nszDataLen; i++)
 {
  szData[i] = szData[i+1];
 }
 szData[nszDataLen-2] = 0;

 // wchar_t to char  ... BT
 for(int i=0; i<nszDataLen-2; i++)
 {
  sData[i] = (char)szData[i];
 }

 return true;
}

  

原创粉丝点击