lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:2143回复:12

关于delphi编写filedisk应用程序----help!

楼主#
更多 发布于:2004-06-04 23:13
openfileinformation中filename=array[0..0] of char,若文件名为e:\\temp\\file0.img,如何把此文件传入openfileinformation.filename呢?

恳请大老指点小弟!给分

被老板逼的,希望大侠同情小弟则个! :o :o :o
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-06 22:10
谢谢楼上的!
  POPEN_FILE_INFORMATION = ^OPEN_FILE_INFORMATION;
  OPEN_FILE_INFORMATION = RECORD
  Read_only : boolean;
  FileSize : int64;
  Filenamelength : word;
  filename : array[0..0] of char;
  end;
以上为结构定义
var pfile:pchar;

  volumename:='\\.\ :';
  volumename[5]:='j';
 device := createfile(pansichar(volumename),GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE
                        , NiL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, 0);
 if device<>INVALID_HANDLE_VALUE then
 begin
  MessageDlg('the disk is using!', mtWarning,[mbAbort], 0);
  exit;
 end ;
  devicename :='\device\filedisk\filedisk0';

 if DefineDosDevice(DDD_RAW_TARGET_PATH,@volumename[5],pchar(devicename)) then
 begin
   showmessage('ddddddddddddddddd');
 end;
  device := createfile(pansichar(volumename),GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE
                        , NiL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, 0);
 if device = INVALID_HANDLE_VALUE then
 begin
  MessageDlg('somthing is error!', mtWarning,[mbAbort], 0);
  exit;
 end ;

 allocmem(sizeof(OPEN_FILE_INFORMATION) + strlen('e:\temp\444.img') + 4);
 pfile:='\\.\e:\temp\444.img';
 strcopy(openfileinformation.Filename,pfile);

 openfileinformation.Read_only:=false;
 openfileinformation.FileSize:=2*1024*1024;
 openfileinformation.Filenamelength:=strlen(openfileinformation.filename);

 IF  DeviceIoControl(device,IOCTL_FILE_DISK_OPEN_FILE,@openfileinformation,
                sizeof(open_file_information)+openfileinformation.filenamelength-1,
                nil,0,bytesreturned,nil) then

  showmessage('fffffffffffffffff,ok');
// freemem(openFileInformation.filename[0]);
 closehandle(device);
 在执行DeviceIoControl老是出错或不成功,请指教!
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-06 22:13
怪事,少了'\'了
中间两行:
 allocmem(sizeof(OPEN_FILE_INFORMATION) + strlen('e:\temp\444.img') + 4);
 pfile:='\\.\e:\temp\444.img';
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-06 22:16
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-07 10:43
谢谢!
delphi中该如何处理呢?
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-07 16:34
delphi中数组也可越界吗?
拜托! :( :( :(
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-09 15:45
定义filename array[0..0] of char好想不行吧?
应定义指针 pchar ?

能聊一下吗?QQ  50994497
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-17 09:44
多谢!

我终于完成了delphi编写filedisk应用程序! :D :D :D
游客

返回顶部