NTSTATUS NTAPI QqNtQueryAttributesFile( POBJECT_ATTRIBUTES ObjectAttributes, PFILE_BASIC_INFORMATION FileInformation ) { NTSTATUS Status; OBJECT_ATTRIBUTES LocalObjectAttributes; UNICODE_STRING Redirected; RtlInitEmptyString(&Redirected); LOOP_ONCE { if (ObjectAttributes == nullptr) break; Status = GetRedirectFile(&Redirected, ObjectAttributes->ObjectName); FAIL_BREAK(Status); LocalObjectAttributes = *ObjectAttributes; LocalObjectAttributes.ObjectName = &Redirected; ObjectAttributes = &LocalObjectAttributes; } Status = StubNtQueryAttributesFile(ObjectAttributes, FileInformation); RtlFreeUnicodeString(&Redirected); return Status; }
NTSTATUS NTAPI TGitNtQueryAttributesFile( POBJECT_ATTRIBUTES ObjectAttributes, PFILE_BASIC_INFORMATION FileInformation ) { NTSTATUS Status; Status = StubNtQueryAttributesFile(ObjectAttributes, FileInformation); if (NT_SUCCESS(Status) && FileInformation != NULL) { CLEAR_FLAG(FileInformation->FileAttributes, FILE_ATTRIBUTE_REPARSE_POINT); } return Status; }