怎样才能获得光驱的名称!主要指比如是:‘40X CDROM’或者其它,也就是
获取能在‘设备管理器 - CDROM ’下看到的信息!
    我试过住册表,不容易看出来,主要是虚拟光驱在打开和关闭时住册表并不改
变,改变的是它的子键。
    各位有什么好方法呀!

解决方案 »

  1.   

    hHanlde = createfile ("\\.\E:",.... )  e: is your virtual cdrom drive.then 
    SAI_INQUERY_DATA inqueryData;
    memset(&inqueryData,0x00,sizeof(inqueryData));
    BOOL bRet = DeviceIoControl(hHanlde, 
                     IOCTL_SCSI_GET_INQUIRY_DATA,
                     NULL,
                     0,
                     &inqueryData,
                     sizeof(inqueryData),
                     &returned,
                     FALSE,
     pDriverBuffer);the drive description is hold in inqueryData.
      

  2.   

    TO:zdhe
            能不能说说SAI_INQUERY_DATA,IOCTL_SCSI_GET_INQUIRY_DATA 是怎么回事,头文件是什么或者是怎样声明的,小弟乃一菜鸟!
      

  3.   

    他是直接传设备驱动的控制码给虚拟设备,具体看msdn中deviceiocontrol一节
      

  4.   

    使用GetLogicalDriveStrings 得到所有的驱动器 ,使用GetDriveType 来检查是否是光驱。用 GetVolumeInformation 得到盘符.
      

  5.   

    msdn找不到IOCTL_SCSI_GET_INQUIRY_DATA !
      

  6.   

    define IOCTL_SCSI_BASE                 FILE_DEVICE_CONTROLLER
    #define IOCTL_SCSI_GET_INQUIRY_DATA     CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
    typedef struct _SCSI_INQUIRY_DATA {
        UCHAR PathId;
        UCHAR TargetId;
        UCHAR Lun;
        BOOLEAN DeviceClaimed;
        ULONG InquiryDataLength;
        ULONG NextInquiryDataOffset;
        UCHAR InquiryData[1];
    }SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;for detail, you need read ntddk document.
      

  7.   

    老大你的SAI_INQUERY_DATA写错了,应该是SCSI_INQUIRY_DATA ,加分!来者不句!
      

  8.   

    老大你的SAI_INQUERY_DATA写错了,应该是SCSI_INQUIRY_DATA  ,加分!来者不句