如何获得CD/DVD-RM/CDRW的硬件设备名称,版本号呀!!!比如:
TSSTcorp CDRW/DVD TSL462C
BenQ 5232X CDRW

解决方案 »

  1.   

    记得
    http://cc.borland.com/ProdCat.aspx?prodid=1&catid=1
    下面有一个,你可以找一下。
      

  2.   

    var
      Reg: TRegistry;
    begin
      try
        Reg := TRegistry.Create;
        Reg.RootKey := HKEY_LOCAL_MACHINE;
        if Reg.KeyExists('System\CurrentControlSet\Services\Class\CDROM') then
        begin看看这里
      

  3.   

    'System\CurrentControlSet\Services\Class\CDROM'不存在
      

  4.   

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom
    这个呢??
      

  5.   

    用DeviceIoControl 。
    你到GOOGLE搜一下  实战DeviceIoControl 
    一共有7章,详细说明如何取得设备信息。包括硬盘、光驱、MO等设备。
      

  6.   

    当然使用DeviceIoCOntrol查询设备参数的
    还要配合SetUpAPI,那就OK的了_____________________
    http://lysoft.7u7.net
      

  7.   

    今天我们讨论一个新的控制码:IOCTL_STORAGE_QUERY_PROPERTY,获取设备属性信息,希望得到系统中所安装的各种固定的和可移动的硬盘、优盘和CD/DVD-ROM/R/W的接口类型、序列号、产品ID等信息。 
    // IOCTL控制码
    #define IOCTL_STORAGE_QUERY_PROPERTY   CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
    // 存储设备的总线类型
    typedef enum _STORAGE_BUS_TYPE {
        BusTypeUnknown = 0x00,
        BusTypeScsi,
        BusTypeAtapi,
        BusTypeAta,
        BusType1394,
        BusTypeSsa,
        BusTypeFibre,
        BusTypeUsb,
        BusTypeRAID,
        BusTypeMaxReserved = 0x7F
    } STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
      
    // 查询存储设备属性的类型
    typedef enum _STORAGE_QUERY_TYPE {
        PropertyStandardQuery = 0,          // 读取描述
        PropertyExistsQuery,                // 测试是否支持
        PropertyMaskQuery,                  // 读取指定的描述
        PropertyQueryMaxDefined             // 验证数据
    } STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
      
    // 查询存储设备还是适配器属性
    typedef enum _STORAGE_PROPERTY_ID {
        StorageDeviceProperty = 0,          // 查询设备属性
        StorageAdapterProperty              // 查询适配器属性
    } STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
      
    // 查询属性输入的数据结构
    typedef struct _STORAGE_PROPERTY_QUERY {
        STORAGE_PROPERTY_ID PropertyId;     // 设备/适配器
        STORAGE_QUERY_TYPE QueryType;       // 查询类型 
        UCHAR AdditionalParameters[1];      // 额外的数据(仅定义了象征性的1个字节)
    } STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
      
    // 查询属性输出的数据结构
    typedef struct _STORAGE_DEVICE_DESCRIPTOR {
        ULONG Version;                    // 版本
        ULONG Size;                       // 结构大小
        UCHAR DeviceType;                 // 设备类型
        UCHAR DeviceTypeModifier;         // SCSI-2额外的设备类型
        BOOLEAN RemovableMedia;           // 是否可移动
        BOOLEAN CommandQueueing;          // 是否支持命令队列
        ULONG VendorIdOffset;             // 厂家设定值的偏移
        ULONG ProductIdOffset;            // 产品ID的偏移
        ULONG ProductRevisionOffset;      // 产品版本的偏移
        ULONG SerialNumberOffset;         // 序列号的偏移
        STORAGE_BUS_TYPE BusType;         // 总线类型
        ULONG RawPropertiesLength;        // 额外的属性数据长度
        UCHAR RawDeviceProperties[1];     // 额外的属性数据(仅定义了象征性的1个字节)
    } STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
      
    // 取设备属性信息
    // hDevice -- 设备句柄
    // pDevDesc -- 输出的设备描述和属性信息缓冲区指针(包含连接在一起的两部分)
    BOOL GetDriveProperty(HANDLE hDevice, PSTORAGE_DEVICE_DESCRIPTOR pDevDesc)
    {
        STORAGE_PROPERTY_QUERY Query;    // 查询输入参数
        DWORD dwOutBytes;                // IOCTL输出数据长度
        BOOL bResult;                    // IOCTL返回值
      
        // 指定查询方式
        Query.PropertyId = StorageDeviceProperty;
        Query.QueryType = PropertyStandardQuery;
      
        // 用IOCTL_STORAGE_QUERY_PROPERTY取设备属性信息
        bResult = ::DeviceIoControl(hDevice, // 设备句柄
            IOCTL_STORAGE_QUERY_PROPERTY,    // 取设备属性信息
            &Query, sizeof(STORAGE_PROPERTY_QUERY),    // 输入数据缓冲区
            pDevDesc, pDevDesc->Size,        // 输出数据缓冲区
            &dwOutBytes,                     // 输出数据长度
            (LPOVERLAPPED)NULL);             // 用同步I/O    
      
        return bResult;
    }
      

  8.   

    楼上的这个我看过了,不过全部是VC写的,能不能有一份Delphi下的代码呀!!!!!!!!!!!呵呵,有高手把这个转换成Delphi下的代码么/??????????
      

  9.   

    http://community.csdn.net/Expert/topic/4184/4184294.xml?temp=.7438318
    已经转换了一些,不过对C不太熟悉,有些地方有问题,大家帮忙都看一下吧。