gpt4 book ai didi

在C中为内核驱动程序创建一个目录

转载 作者:行者123 更新时间:2023-11-30 16:33:27 25 4
gpt4 key购买 nike

我最近一直在研究使用 WDK(Windows 驱动程序套件)创建 miniFilter。我正在努力寻找良好的 C Api 引用。例如,我想按以下格式创建一个目录,但找不到任何引用以及如何执行其中任何操作。

UNICODE_STRING 的格式 -> '\Device\HarddiskVolume4\Users\WDKRemoteUser\Desktop'

对于那些在 C 语言中发展的人,我向你们致敬。

B.n 我正在 Visual Studio 2017 中进行所有开发

好的,我已经创建了一个函数:

NTSTATUS create_directory(UNICODE_STRING dirName) {
IO_STATUS_BLOCK iosb;
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS Status;
HANDLE FileHandle = NULL;
FILE_OBJECT *FileObj;

DbgPrint("Directory :- '%wZ'", &dirName);

InitializeObjectAttributes(
&ObjectAttributes,
&dirName,
(OBJ_CASE_INSENSITIVE |
OBJ_KERNEL_HANDLE),
NULL,
NULL
);


Status = ZwCreateFile(
&FileHandle,
GENERIC_READ | SYNCHRONIZE,
&ObjectAttributes,
&iosb,
0,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_WRITE | FILE_SHARE_READ,
FILE_OPEN,
FILE_DIRECTORY_FILE,
NULL,
0
);

return Status;
}

我认为我已经正确遵循 https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/nf-wdm-zwcreatefile 中的语法

但它似乎没有创建目录,猜测我的其中一个参数稍微不正确。

我从 MS 示例中获取了一个用于创建文件的副本,并对其进行了修改,以创建一个目录。

谢谢

最佳答案

为了回答问题并确认下面的工作代码,还在句柄上添加了 ZwClose。感谢大家的评论

NTSTATUS create_directory(UNICODE_STRING dirName) {
IO_STATUS_BLOCK iosb;
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS Status;
HANDLE FileHandle = NULL;
FILE_OBJECT *FileObj;

DbgPrint("Directory :- '%wZ'", &dirName);

InitializeObjectAttributes(
&ObjectAttributes,
&dirName,
(OBJ_CASE_INSENSITIVE |
OBJ_KERNEL_HANDLE),
NULL,
NULL
);


Status = ZwCreateFile(
&FileHandle,
GENERIC_READ,
&ObjectAttributes,
&iosb,
0,
FILE_ATTRIBUTE_NORMAL| SYNCHRONIZE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
FILE_CREATE,
FILE_DIRECTORY_FILE,
NULL,
0
);

if (FileHandle) {
ZwClose(FileHandle);
}

return Status;
}

关于在C中为内核驱动程序创建一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49747236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com