| 
				  NULL, 0, &VersionParams, 
                               sizeof(VersionParams), 
                               &cbBytesReturned, NULL) ) 
       {         
          if (VersionParams.bIDEDeviceMap > 0) 
          { 
              BYTE             bIDCmd = 0;   // IDE或者ATAPI识别命令 
              SENDCMDINPARAMS  scip; 
  
              // 如果驱动器是光驱,采用命令IDE_ATAPI_IDENTIFY, command, 
              // 否则采用命令IDE_ATA_IDENTIFY读取驱动器信息 
              bIDCmd = (VersionParams.bIDEDeviceMap >> drive & 0x10)? 
                      IDE_ATAPI_IDENTIFY : IDE_ATA_IDENTIFY; 
  
              memset (&scip, 0, sizeof(scip)); 
              memset (IdOutCmd, 0, sizeof(IdOutCmd)); 
              // 获取驱动器信息 
              if (WinNTGetIDEHDInfo (hPhysicalDriveIOCTL,  
                                      &scip,  
                                      (PSENDCMDOUTPARAMS)&IdOutCmd,  
                                      (BYTE) bIDCmd, 
                                      (BYTE) drive, 
                                      &cbBytesReturned)) 
              { 
                  int m = 0; 
                  USHORT *pIdSector = (USHORT *) 
                             ((PSENDCMDOUTPARAMS) IdOutCmd) -> bBuffer; 
  
                  for (m = 0; m < 256; m++)                        buffer[m] = pIdSector [m];			
				 |