du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3196回复:14

驱动程序中如何得到目录中的文件列表

楼主#
更多 发布于:2002-04-17 09:10
我想得到目录中的文件列表
是不是先用目录路径创建一个文件对象,然后用zwcreatfile()打开
可是如果这者样,然后怎么办那??
大侠指点一下了,多谢 :P

最新喜欢:

baoyibao99baoyib...
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-17 13:19
谢谢,原来在IFS中啊
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-19 16:53
这么用为什么不对,返回代码是0X103,是什么意思?
到那里去查这个代码的定义呢?

file_names_information_buf = (PFILE_NAMES_INFORMATION)ExAllocatePool( NonPagedPool, sizeof(FILE_NAMES_INFORMATION) );


status1=ZwQueryDirectoryFile(
dir_handle,
NULL,
NULL,
NULL,
&In_Irp->IoStatus,
file_names_information_buf,
sizeof(FILE_NAMES_INFORMATION),
FileNamesInformation,
TRUE,
NULL,
TRUE
);
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-21 16:53
这个问题我也想知道,为什么没有人回答。
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-21 20:58
这是我的代码,设置FILE_INFORMATION_CLASS和PUNICODE_STRING 得到你想要的文件和目录。可能还有更好的方法

NTSYSAPI NTSTATUS NTAPI
ZwQueryDirectoryFile(
             IN HANDLE FileHandle,
             IN HANDLE Event OPTIONAL,
             IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
             IN PVOID ApcContext OPTIONAL,
             OUT PIO_STATUS_BLOCK IoStatusBlock,
             OUT PVOID FileInformation,
             IN ULONG Length,
             IN FILE_INFORMATION_CLASS FileInformationClass,
             IN BOOLEAN ReturnSingleEntry,
             IN PUNICODE_STRING FileName OPTIONAL,
             IN BOOLEAN RestartScan
             );
------------------------

#1 :
status = ZwCreateFile( &fileHandle,
                       GENERIC_READ,
                       &objectAttributes,
                       &IoStatus,
                       0,
                       FILE_ATTRIBUTE_DIRECTORY,
                       FILE_SHARE_READ | FILE_SHARE_WRITE |
FILE_SHARE_DELETE,
                       FILE_OPEN,
                       FILE_DIRECTORY_FILE,
                       NULL,
                       0 );

#2 :
status = ZwCreateEvent(&eventHandle, GENERIC_ALL, 0, NotificationEvent,
FALSE);

#3 :
status = ZwQueryDirectoryFile(fileHandle, eventHandle,0, 0, &Iosb,
Buffer, sizeof(Buffer),
                              FileBothDirectoryInformation, FALSE, NULL,
FALSE );
if (status == STATUS_PENDING)
   {
   status = ZwWaitForSingleObject(eventHandle, TRUE, 0);
   }


#4 :
DirInformation = (PFILE_BOTH_DIR_INFORMATION)Buffer;
for (;;)
    {
    UNICODE_STRING EntryName;
    EntryName.MaximumLength = EntryName.Length =
(USHORT)DirInformation->FileNameLength;

    EntryName.Buffer = &DirInformation->FileName[0];



    if (DirInformation->NextEntryOffset == 0)
       {
        break;
       }
    else
       {
       DirInformation =
(PFILE_BOTH_DIR_INFORMATION)(((PUCHAR)DirInformation) +
DirInformation->NextEntryOffset);
       }
     }

ZwClose(eventHandle);
ZwClose(fileHandle);


du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-22 10:09
在IFS中,你可以装一个,然后就可以调用了
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-23 18:34
是的,可以直接调用,声明结构和函数就可
在ISF的帮助中有说明
游客

返回顶部