#define INVALID_HANDLE_VALUE (HANDLE)-1int ReadDrivePortsInWin9X()
{
int done = FALSE;
   HANDLE VxDHandle = 0;
   pt_IdeDInfo pOutBufVxD = 0;
   DWORD lpBytesReturned = 0;
   rt_IdeDInfo info;
   unsigned long int i = 0;
 //  set the thread priority high so that we get exclusive access the disk
   SetPriorityClass (GetCurrentProcess (), REALTIME_PRIORITY_CLASS);
// 1. Make an output buffer for the VxD
   pOutBufVxD = &info;
  ZeroMemory (&info, sizeof(info));
  VxDHandle = CreateFile ("\\\\.\\IDE21201.VXD", 0, 0, 0,
0, FILE_FLAG_DELETE_ON_CLOSE, 0);   if (VxDHandle != INVALID_HANDLE_VALUE)
   {
         // 2. Run VxD function
      DeviceIoControl (VxDHandle, m_cVxDFunctionIdesDInfo,
0, 0, pOutBufVxD, sizeof(pt_IdeDInfo), &lpBytesReturned, 0);         // 3. Unload VxD
      CloseHandle (VxDHandle);
   }
   else
MessageBox (NULL, "ERROR: Could not open IDE21201.VXD file", 
"TITLE", MB_OK);      // 4. Translate and store data
   
   for (i=0; i<8; i++)
   {
      if((pOutBufVxD->DiskExists[i]) && (pOutBufVxD->IDEExists[i/2]))
      {
DWORD diskinfo [256];
int j;
for ( j = 0; j < 256; j++) 
diskinfo [j] = pOutBufVxD -> DisksRawInfo [i * 256 + j];                ReturnInfo (i, diskinfo);
done = TRUE;
      }
   }
   SetPriorityClass (GetCurrentProcess (), NORMAL_PRIORITY_CLASS);   return done;
}

解决方案 »

  1.   

    和程序没有关系,错误原因是没有那个磁盘驱动。IDE21201.VXD
      

  2.   

    那这样的问题如何解决呀,找一个这样的驱动IDE21201.VXD安装进去吗
      

  3.   

    win98下可以取硬盘序列好的,我试过!不过要安装一个驱动程序(主板自带,不记得名字了),用DMA方式(需80线数据线)
      

  4.   

    VxDHandle = CreateFile ("\\\\.\\IDE21201.VXD", 0, 0, 0,
    0, FILE_FLAG_DELETE_ON_CLOSE, 0);错误明示告诉你没有相应的东东了啦找到这个VXD文件,并放到你CreateFile的相应路径下