ZwCreateFile 创建文件夹 卡死

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...测试了各种方法 如加锁、修改参数 都不行 , 搞不懂它卡死是因为什么?
希望有人能给出原因 或者解决办法

过去好久了,并没有找到原因,也不知道怎么处理,猜测可能是因为目录下的文件频繁访问出现的这种情况?
后来换了minifilter 不再频繁访问就没出现这个问题了,关了!~

是不是文件被其它程序占用了?
试一下:

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;
}