| 
				  if ( ! WinNTReadIDEHDSerial(m_wWinNTHDSerial))  
           WinNTReadSCSIHDSerial(m_wWinNTHDSerial);   
      strcpy (m_buffer, DWORDToChar (m_wWinNTHDSerial, 10, 19)); 
  }  
  return m_buffer; 
} 
// Windows NT/2000/XP下读取IDE硬盘序列号 
BOOL CGetHDSerial::WinNTReadIDEHDSerial(DWORD * buffer) 
{ 
  BYTE IdOutCmd [sizeof (SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - 1]; 
   BOOL bFlag = FALSE; 
   int  drive = 0; 
   char driveName [256]; 
   HANDLE hPhysicalDriveIOCTL = 0;     
       
   sprintf (driveName, "\\\\.\\PhysicalDrive%d", drive); 
   //  Windows NT/2000/XP下创建文件需要管理员权限 
   hPhysicalDriveIOCTL = CreateFile (driveName, 
                            GENERIC_READ | GENERIC_WRITE,  
                            FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, 
                            OPEN_EXISTING, 0, NULL); 
  
   if (hPhysicalDriveIOCTL != INVALID_HANDLE_VALUE) 
   { 
       GETVERSIONOUTPARAMS VersionParams; 
       DWORD               cbBytesReturned = 0; 
  
       // 得到驱动器的IO控制器版本 
       memset ((void*) &VersionParams, 0, sizeof(VersionParams));        if(DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_GET_VERSION,			
				 |