锁定光驱在Win2000上的实现

原创 2004年07月03日 15:48:00

最近看到很多朋友在讨论如何锁住光驱的问题,但是没有一个结果。

趁着周末闲,写出代码和大家一起分享。

新建一个工程,在窗体上加入两个按钮,粘贴以下程序,看看效果怎么样?^_^

Option Explicit
Private Const GENERIC_READ As Long = &H80000000
Private Const FILE_SHARE_READ As Long = &H1
Private Const FILE_SHARE_WRITE As Long = &H2
Private Const OPEN_EXISTING As Long = 3
Private Const IOCTL_STORAGE_MEDIA_REMOVAL As Long = &H2D4804

Private Type PREVENT_MEDIA_REMOVAL
        PreventMediaRemoval As Byte
End Type

Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long


Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long


Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Function LockCDROM(szDrive As String, IsLock As Boolean) As Boolean
    On Error GoTo Err
    Dim hDevice As Long
    Dim PMR As PREVENT_MEDIA_REMOVAL
    Dim bytesReturned As Long
    Dim Success As Long
    hDevice = CreateFile("//./" & szDrive, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0&, 0&)
    PMR.PreventMediaRemoval = CByte(Abs(IsLock))
    Success = DeviceIoControl(hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, PMR, Len(PMR), ByVal 0&, 0&, bytesReturned, ByVal 0&)
    CloseHandle hDevice
    LockCDROM = True
    Exit Function
Err:
    LockCDROM = False
End Function

Private Sub Command1_Click()
   Dim ret As Boolean
   ret = LockCDROM("H:", True)  '我的光驱盘符是H:
   If ret Then
      MsgBox "锁定成功", vbInformation, "提示"
   Else
      MsgBox "锁定失败", vbInformation, "提示"
   End If
End Sub

Private Sub Command2_Click()
   Dim ret As Boolean
   ret = LockCDROM("H:", False)
   If ret Then
      MsgBox "解除锁定成功", vbInformation, "提示"
   Else
      MsgBox "解除锁定失败", vbInformation, "提示"
   End If
End Sub

ThinkPad E431光驱改硬盘托架操作

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任。 深蓝的blog:           今日为工作的笔记本做了一次改动,把光驱位托架改装成了硬盘托架...
  • huangyanlong
  • huangyanlong
  • 2015年04月27日 08:55
  • 5962

在IBM p6 570 LPAR之间动态切换磁盘机/光驱

小机上的一些外设比如磁盘机和光驱平时用的不多,所以大多都是在一台小机的各LPAR之间共享使用的。这些IO设备在不同的LPAR之间使用时,只能被一个LPAR独占,所以必要的时候就必须要做切换。  ...
  • Iwantcomputer
  • Iwantcomputer
  • 2014年02月28日 16:29
  • 2396

笔记本光驱拆解——让整个世界变得安静

光驱,光盘驱动,在如今这个快速发展的科技时代已经渐渐退出了历史的舞台,很多人的本本买的时候都是不带光驱的,或者外置的,用的时候插上用,不用的时候拔掉,本本带在身边又轻又方便。但是呢,还有很多人的电脑是...
  • zhangdameng123
  • zhangdameng123
  • 2015年05月15日 14:39
  • 1719

将Macbook的光驱位升级成SSD

我的MBP是12年中的13寸MBP低配,在升上10.10之后卡的不行不行的,于是准备将光驱位改成SSD,然后升级内存条;...
  • u014491743
  • u014491743
  • 2016年05月16日 13:38
  • 2677

光驱常见故障以及解决方法

内容提要:光驱常见故障以及解决方法,产生光驱故障的原因很多,故障现象也有很多,总的来说可以分为识别故障和非识别故障。在这里,我们主要讲识别故障。   产生光驱故障的原因很多,故障现象也有很多,总...
  • axl19530209
  • axl19530209
  • 2015年01月07日 08:59
  • 220

如何利用光驱位给老旧笔记本电脑安装固态硬盘

如何利用光驱位给老旧笔记本电脑安装固态硬盘我们手中的很多电脑还都带有光驱,在这U盘白菜价,网盘动辄以TB来论的时代,我们的光驱已经显得不这么重要了。看着一个没用的东西占着我们的,看着一天一天越来越少的...
  • tjtzc
  • tjtzc
  • 2015年08月05日 16:37
  • 3630

Macbook Pro(MBP)上固态硬盘SSD,光驱位装HDD

最近将MD313拆机硬盘位换上SSD,买了光驱托架,将光驱位换成原装的HDD
  • sxsj333
  • sxsj333
  • 2015年01月11日 10:46
  • 11245

Win 2000远程控制的3种安全解决方法

我们设想有一个远程控制方案:一个公司要安置这样一个IISWeb服务器,它被放在300里以外。服务器是宽带网络、有空调装置、电力控制装置三者结合的个服务器中心。这个网络服务中心既稳固又价钱合理,但要求客...
  • candy_578079476
  • candy_578079476
  • 2017年04月10日 00:44
  • 584

android下的光盘功能控制

一 使能光盘功能 1. 1内核项中增加cd-rom文件系统的支持   alps/mediatek/config/xxxx/autoconfig/kconfig/project ...
  • TopicDev
  • TopicDev
  • 2014年06月26日 14:42
  • 2180

如何查看光驱硬盘托架的尺寸

也许你会有装两个硬盘的需求,但一般笔记本只有一个硬盘接口,你就需要把其中一块硬盘安装到光驱上,这时你需要一个光驱托架。好的,到淘宝或京东买一个,你到网上一查,这下你就傻眼了:什么光驱还分尺寸?什么12...
  • luoweifu
  • luoweifu
  • 2015年06月06日 01:46
  • 54300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:锁定光驱在Win2000上的实现
举报原因:
原因补充:

(最多只允许输入30个字)