Fixed a bug in ObOpenObjectByName
This commit is contained in:
parent
922bd4e9d2
commit
6078193fec
|
@ -917,9 +917,7 @@ XBSYSAPI EXPORTNUM(201) xbox::ntstatus_xt NTAPI xbox::NtOpenDirectoryObject
|
||||||
{
|
{
|
||||||
LOG_FORWARD("ObOpenObjectByName");
|
LOG_FORWARD("ObOpenObjectByName");
|
||||||
|
|
||||||
xbox::ntstatus_xt status = ObOpenObjectByName(ObjectAttributes, &ObDirectoryObjectType, NULL, DirectoryHandle);
|
return ObOpenObjectByName(ObjectAttributes, &ObDirectoryObjectType, NULL, DirectoryHandle);
|
||||||
RegisterXboxHandle(*DirectoryHandle, NULL); // we don't need to create a native handle for a directory object
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ******************************************************************
|
// ******************************************************************
|
||||||
|
|
|
@ -929,12 +929,15 @@ XBSYSAPI EXPORTNUM(243) xbox::ntstatus_xt NTAPI xbox::ObOpenObjectByName
|
||||||
|
|
||||||
ntstatus_xt result = X_STATUS_OBJECT_PATH_NOT_FOUND;
|
ntstatus_xt result = X_STATUS_OBJECT_PATH_NOT_FOUND;
|
||||||
|
|
||||||
if (const auto &nativeHandle = GetNativeHandle(Handle)) {
|
if (ObjectType == &ObDirectoryObjectType) {
|
||||||
// This was a handle created by Ob
|
// Directory objects are currently handled by Ob
|
||||||
PVOID Object;
|
PVOID Object;
|
||||||
result = ObpReferenceObjectByName(ObjectAttributes->RootDirectory, ObjectAttributes->ObjectName,
|
result = ObpReferenceObjectByName(ObjectAttributes->RootDirectory, ObjectAttributes->ObjectName,
|
||||||
ObjectAttributes->Attributes, ObjectType, ParseContext, &Object);
|
ObjectAttributes->Attributes, ObjectType, ParseContext, &Object);
|
||||||
*Handle = ObpGetHandleByObjectThenDereferenceInline(Object, result);
|
*Handle = ObpGetHandleByObjectThenDereferenceInline(Object, result);
|
||||||
|
if (X_NT_SUCCESS(result)) {
|
||||||
|
RegisterXboxHandle(*Handle, NULL); // we don't need to create a native handle for a directory object
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (ObjectType == &ObSymbolicLinkObjectType) {
|
else if (ObjectType == &ObSymbolicLinkObjectType) {
|
||||||
// Use this place for any interface implementation since
|
// Use this place for any interface implementation since
|
||||||
|
|
Loading…
Reference in New Issue