diff --git a/ntoskrnl/include/internal/io.h b/ntoskrnl/include/internal/io.h index 95e3607bb56..9928cbaab4a 100644 --- a/ntoskrnl/include/internal/io.h +++ b/ntoskrnl/include/internal/io.h @@ -1217,11 +1217,23 @@ IopGetSetSecurityObject( IN OUT PGENERIC_MAPPING GenericMapping ); +NTSTATUS +NTAPI +IopQueryName( + IN PVOID ObjectBody, + IN BOOLEAN HasName, + OUT POBJECT_NAME_INFORMATION ObjectNameInfo, + IN ULONG Length, + OUT PULONG ReturnLength, + IN KPROCESSOR_MODE PreviousMode +); + NTSTATUS NTAPI IopQueryNameInternal( IN PVOID ObjectBody, IN BOOLEAN HasName, + IN BOOLEAN QueryDosName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, diff --git a/ntoskrnl/io/iomgr/file.c b/ntoskrnl/io/iomgr/file.c index e877888c74d..792376ca827 100644 --- a/ntoskrnl/io/iomgr/file.c +++ b/ntoskrnl/io/iomgr/file.c @@ -1867,10 +1867,29 @@ IopGetSetSecurityObject(IN PVOID ObjectBody, return Status; } +NTSTATUS +NTAPI +IopQueryName(IN PVOID ObjectBody, + IN BOOLEAN HasName, + OUT POBJECT_NAME_INFORMATION ObjectNameInfo, + IN ULONG Length, + OUT PULONG ReturnLength, + IN KPROCESSOR_MODE PreviousMode) +{ + return IopQueryNameInternal(ObjectBody, + HasName, + FALSE, + ObjectNameInfo, + Length, + ReturnLength, + PreviousMode); +} + NTSTATUS NTAPI IopQueryNameInternal(IN PVOID ObjectBody, IN BOOLEAN HasName, + IN BOOLEAN QueryDosName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, @@ -1893,6 +1912,8 @@ IopQueryNameInternal(IN PVOID ObjectBody, return STATUS_INFO_LENGTH_MISMATCH; } + if (QueryDosName) return STATUS_NOT_IMPLEMENTED; + /* Allocate Buffer */ LocalInfo = ExAllocatePoolWithTag(PagedPool, Length, TAG_IO); if (!LocalInfo) return STATUS_INSUFFICIENT_RESOURCES; diff --git a/ntoskrnl/io/iomgr/iomgr.c b/ntoskrnl/io/iomgr/iomgr.c index fec80855ae7..8d01f35079e 100644 --- a/ntoskrnl/io/iomgr/iomgr.c +++ b/ntoskrnl/io/iomgr/iomgr.c @@ -317,7 +317,7 @@ IopCreateObjectTypes(VOID) ObjectTypeInitializer.CloseProcedure = IopCloseFile; ObjectTypeInitializer.DeleteProcedure = IopDeleteFile; ObjectTypeInitializer.SecurityProcedure = IopGetSetSecurityObject; - ObjectTypeInitializer.QueryNameProcedure = IopQueryNameInternal; + ObjectTypeInitializer.QueryNameProcedure = IopQueryName; ObjectTypeInitializer.ParseProcedure = IopParseFile; ObjectTypeInitializer.UseDefaultObject = FALSE; if (!NT_SUCCESS(ObCreateObjectType(&Name,