如何获取计算机正在对A盘写数据的消息及A盘的写保护的状态?(100分)

  • 主题发起人 主题发起人 sds
  • 开始时间 开始时间
S

sds

Unregistered / Unconfirmed
GUEST, unregistred user!
如何获取
1)计算机正在对A盘写数据的消息;
2)A盘的写保护的状态.
 
通过VXD编程,做一个钩子,可截获文件读写,到BBS的VXD编程去看看
有历程.
DOS下可用INT13
 
都不需要,
第一可以用文件系统变化通知来实现
第二可以用获取文件卷信息的函数来实现
 
有趣
2:如果是本程序的话,只要处理IO的异常即可
 
pegasus:请详细说明 !
 
再D4下用inline或Asm并嵌入相应的Dos中断(Int 13h)试试?
 
2.可以在在软盘上随便建一个文件
filename := 'XXX.$$$';
AssignFile(dfile,filename);
{$I-}
ReWrite(dfile,1);
CloseFile(dfile);
erase(dfile);
{$I+}
if IOResult <> 0 then
//不是没软盘就是写保护了
 
对不起昨天因为很晚了,没有仔细说明

使用文件系统变化通知,只要:
Uses Windows;

Var
myHandle: HANDLE;

Begin

myHandle := FindFirstChangeNotification(
'A:/',
FILE_NOTIFY_CHANGE_FILE_NAME or FILE_NOTIFY_CHANGE_DIR_NAME
or FILE_NOTIFY_CHANGE_ATTRIBUTES OR FILE_NOTIFY_CHANGE_SIZE
OR FILE_NOTIFY_CHANGE_LAST_WRITE
);

IF (myHandle<>INVALID_HANDLE_VALUE)
then
Begin
Repeat
WaitForSingleObject(myHandle);
// if there's any change happens under 'A:/';
// the following codes will be executed:
Refresh your dir?
FindNextChangeNotification(myHandle);
Until (do not want to detect changes again);

FindCloseChangeNotification(myHandle);
End;

End;

上述例子程序可能需要在一个线程中运行
 
各位大虾,想请教一个问题。(可我的分太少了!),有没有办法编程序写保护一个
物理硬盘的逻辑分区!!!!在下急需。实在是太急了!!!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部