请问怎么识别物理光驱和虚拟光驱

banguo 2003-08-25 09:52:18
我用程序可区分驱动器是否是光驱,但不知怎样进一步识别是物理光驱还是虚拟光驱?帮帮我!
...全文
83 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
banguo 2003-08-26
  • 打赏
  • 举报
回复
各位大哥大姐:还有没有别的办法呀?
pigpag 2003-08-26
  • 打赏
  • 举报
回复
再写驱动程序就是鱼咬尾啦!
tonylk 2003-08-26
  • 打赏
  • 举报
回复
除非自己从很底层去做,否则在用户层,根本没法知道这个设备是真实的还是模拟出来的。
可能要自己写驱动吧,我也不懂。。
pigpag 2003-08-26
  • 打赏
  • 举报
回复
不简单,否则游戏商采取措施就简单了,虚拟光驱也没有生存力了。

我看过虚拟光驱的驱动程序,竟然使用微软标准驱动程序。
pigpag 2003-08-25
  • 打赏
  • 举报
回复
楼上上的同志:这个API无法将虚拟和非虚拟的区分出来,一把抓的。连是不是CD都另需API。

我觉得还是检查一下是否有Daemon之类的程序运行,想办法获取其中的配置从而检查是否有虚拟光驱。
pigpag 2003-08-25
  • 打赏
  • 举报
回复
//检测它读取得速度,太快就说明不使光驱。

我想过这一点,不过不行——有时映像文件就放在CD里,或者在1.0U盘里面,检测速度就不行了。
liul17 2003-08-25
  • 打赏
  • 举报
回复
使用API函数,给你个例子自己看看吧

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Sub Form_Load()
Dim strSave As String
'Set the graphic mode to persistent
Me.AutoRedraw = True
'Create a buffer to store all the drives
strSave = String(255, Chr$(0))
'Get all the drives
ret& = GetLogicalDriveStrings(255, strSave)
'Extract the drives from the buffer and print them on the form
For keer = 1 To 100
If Left$(strSave, InStr(1, strSave, Chr$(0))) = Chr$(0) Then Exit For
Me.Print Left$(strSave, InStr(1, strSave, Chr$(0)) - 1)
strSave = Right$(strSave, Len(strSave) - InStr(1, strSave, Chr$(0)))
Next keer
End Sub

GetLogicalDriveStrings函数的说明如下
GetLogicalDriveStrings

VB声明
Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
说明
获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
返回值
Long,装载到lpBuffer的字符数量(排除空中止字符)。如缓冲区的长度不够,不能容下路径,则返回值就变成要求的缓冲区大小。零表示失败。会设置GetLastError
参数表
参数 类型及说明
nBufferLength Long,lpBuffer字串的长度
lpBuffer String,用于装载逻辑驱动器名称的字串。每个名字都用一个NULL字符分隔,在最后一个名字后面用两个NULL表示中止(空中止)



tonylk 2003-08-25
  • 打赏
  • 举报
回复
检测它读取得速度,太快就说明不使光驱。
tonylk 2003-08-25
  • 打赏
  • 举报
回复
检测它读取得速度,太快就说明不使光驱。
banguo 2003-08-25
  • 打赏
  • 举报
回复
头一回在这里求救!
有没有人知道,帮帮我解决这个问题吧!
hxy2003 2003-08-25
  • 打赏
  • 举报
回复
UP
hxy2003 2003-08-25
  • 打赏
  • 举报
回复
UP
rainstormmaster 2003-08-25
  • 打赏
  • 举报
回复
用常规方法是不行的

是否可以这样:
根据光驱的型号来判定

先将所有的虚拟光驱全部安装一遍,记录下光驱的类型,做成一个列表,然后在程序中得到光驱的型号,通过判断型号是否在列表中,得以实现


个人感觉很麻烦,其实倾向于 pigpag(噼里啪啦) 的意见,但是目前的虚拟光驱软件太多了,恐怕检查不过来

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧