wince 下读取SD卡ID代码

    技术2022-05-18  15

    include <Storemgr.h>   #include <winioctl.h>  #include <Diskio.h>       unsigned char   DiskID[MAX_PATH];   unsigned char   szSerialNum[MAX_PATH];   unsigned char   szManufactureID[MAX_PATH];   void ReadSDID(void)   {       DWORD dwBytesRead = 0;       char  *cIDbuff = NULL;       BOOL ret = 0;       HANDLE hVolume = INVALID_HANDLE_VALUE;       PSTORAGE_IDENTIFICATION  pStorageID;        int nIDlen;         hVolume = CreateFile( TEXT("//sd card//VOL:"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);        if( hVolume != INVALID_HANDLE_VALUE )       {           memset(DiskID,0,MAX_PATH);           ret = DeviceIoControl( hVolume, IOCTL_DISK_GET_STORAGEID, NULL, 0, DiskID, MAX_PATH, &dwBytesRead, NULL );           if(ret)           {               pStorageID = (PSTORAGE_IDENTIFICATION  )DiskID;                               if (pStorageID->dwFlags   != MANUFACTUREID_INVALID)               {                   cIDbuff = (char*)DiskID;                   cIDbuff = cIDbuff+pStorageID->dwManufactureIDOffset;                   nIDlen = strlen(cIDbuff);                   memset(szManufactureID, 0,MAX_PATH);                   memcpy(szManufactureID,cIDbuff,nIDlen);               }               if (pStorageID->dwFlags   != SERIALNUM_INVALID)               {                   cIDbuff = (char*)DiskID;                   cIDbuff = cIDbuff+pStorageID->dwSerialNumOffset;                   nIDlen = strlen(cIDbuff);                   memset(szSerialNum, 0,MAX_PATH);                   memcpy(szSerialNum,cIDbuff,nIDlen);               }           }           CloseHandle( hVolume );        }   } 

     


    最新回复(0)