diff --git a/src/windows-emulator/syscalls.cpp b/src/windows-emulator/syscalls.cpp index 9ee433c0..55944b26 100644 --- a/src/windows-emulator/syscalls.cpp +++ b/src/windows-emulator/syscalls.cpp @@ -83,6 +83,9 @@ namespace syscalls NTSTATUS handle_NtOpenDirectoryObject(const syscall_context& c, emulator_object directory_handle, ACCESS_MASK /*desired_access*/, emulator_object>> object_attributes); + NTSTATUS handle_NtCreateDirectoryObject(const syscall_context& /*c*/, emulator_object /*directory_handle*/, + ACCESS_MASK /*desired_access*/, + emulator_object>> object_attributes); NTSTATUS handle_NtOpenSymbolicLinkObject(const syscall_context& c, emulator_object link_handle, ACCESS_MASK /*desired_access*/, emulator_object>> object_attributes); NTSTATUS handle_NtQuerySymbolicLinkObject(const syscall_context& c, handle link_handle, @@ -1056,6 +1059,7 @@ void syscall_dispatcher::add_handlers(std::map& ha add_handler(NtProtectVirtualMemory); add_handler(NtLockVirtualMemory); add_handler(NtOpenDirectoryObject); + add_handler(NtCreateDirectoryObject); add_handler(NtTraceEvent); add_handler(NtAllocateVirtualMemoryEx); add_handler(NtCreateIoCompletion); diff --git a/src/windows-emulator/syscalls/file.cpp b/src/windows-emulator/syscalls/file.cpp index 43fe8497..0d095ec5 100644 --- a/src/windows-emulator/syscalls/file.cpp +++ b/src/windows-emulator/syscalls/file.cpp @@ -1220,6 +1220,20 @@ namespace syscalls return STATUS_NOT_SUPPORTED; } + NTSTATUS handle_NtCreateDirectoryObject(const syscall_context& /*c*/, const emulator_object /*directory_handle*/, + const ACCESS_MASK /*desired_access*/, + const emulator_object>> object_attributes) + { + const auto attributes = object_attributes.read(); + + if (attributes.ObjectName == 0) + { + return STATUS_INVALID_PARAMETER; + } + + return STATUS_NOT_SUPPORTED; + } + NTSTATUS handle_NtOpenSymbolicLinkObject(const syscall_context& c, const emulator_object link_handle, ACCESS_MASK /*desired_access*/, const emulator_object>> object_attributes)