NTSTATUS KernelCreateDirectory( PUNICODE_STRING Path )
{
DbgPrint( "BEG KernelCreateDirectory %wZ \n", Path );
HANDLE Handle = NULL;
IO_STATUS_BLOCK io_status = { 0 };
OBJECT_ATTRIBUTES obj_attr = { 0 };
NTSTATUS ntStatus;
InitializeObjectAttributes( &obj_attr, Path,
OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, // 与现有对象的名称进行匹配时,将使用不区分大小写的比较 并且 只能在内核模式下访问句柄
NULL,
NULL );
ntStatus = ZwCreateFile( &Handle, FILE_READ_ATTRIBUTES,//SYNCHRONIZE | MAXIMUM_ALLOWED,
&obj_attr, &io_status,
NULL,
FILE_ATTRIBUTE_NORMAL, // 正常文件属性
FILE_SHARE_READ, // 共享读
FILE_OPEN_IF, // 文件存在 则 打开 不存在则创建
FILE_DIRECTORY_FILE, // 该文件是目录
NULL, 0 // 必须为空
);
ZwClose( Handle );
Handle = NULL;
DbgPrint( "KernelCreateDirectory %wZ suscess \n" ,Path);
return ntStatus;
}
以上是 在创建文件夹 传入的路径没有问题,但是在打开多次后就会出现卡死在zwcreatefile...测试了各种方法 如加锁、修改参数 都不行 , 搞不懂它卡死是因为什么?
希望有人能给出原因 或者解决办法