IoStatus.Information = 0;
}
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
PNP_CCB Ccb = NULL;
TRACE("Entered\n");
- IoStatus.Status = STATUS_SUCCESS;
IoStatus.Information = 0;
Privileges = NULL;
((GrantedAccess & FILE_WRITE_DATA) && (NamedPipeConfiguration == FILE_PIPE_OUTBOUND)))
{
IoStatus.Status = STATUS_ACCESS_DENIED;
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
if (NextEntry == ListHead)
{
IoStatus.Status = STATUS_PIPE_NOT_AVAILABLE;
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
if (!NT_SUCCESS(IoStatus.Status))
{
NpUninitializeSecurity(Ccb);
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
IoStatus.Information = FILE_OPENED;
IoStatus.Status = STATUS_SUCCESS;
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
ACCESS_MASK DesiredAccess;
LIST_ENTRY DeferredList;
UNICODE_STRING Prefix;
- NTSTATUS Status;
TRACE("Entered\n");
InitializeListHead(&DeferredList);
DesiredAccess = IoStack->Parameters.CreatePipe.SecurityContext->DesiredAccess;
IoStatus.Information = 0;
- IoStatus.Status = STATUS_SUCCESS;
FsRtlEnterFileSystem();
- ExAcquireResourceExclusiveLite(&NpVcb->Lock, TRUE);
+ NpAcquireExclusiveVcb();
if (RelatedFileObject)
{
goto Quickie;
}
- Status = NpTranslateAlias(&FileName);
- if (!NT_SUCCESS(Status)) goto Quickie;
+ IoStatus.Status = NpTranslateAlias(&FileName);
+ if (!NT_SUCCESS(IoStatus.Status)) goto Quickie;
if (RelatedFileObject)
{
goto Quickie;
}
- Fcb = NpFindPrefix(&FileName, TRUE, &Prefix);
+ Fcb = NpFindPrefix(&FileName, 1, &Prefix);
}
if (Prefix.Length)
&DeferredList);
Quickie:
- ExReleaseResourceLite(&NpVcb->Lock);
+ NpReleaseVcb();
NpCompleteDeferredIrps(&DeferredList);
FsRtlExitFileSystem();
SubjectSecurityContext = &AccessState->SubjectSecurityContext;
SeLockSubjectContext(SubjectSecurityContext);
+ IoStatus.Information = 0;
+
AccessGranted = SeAccessCheck(Fcb->SecurityDescriptor,
SubjectSecurityContext,
TRUE,
SeUnlockSubjectContext(SubjectSecurityContext);
if (!AccessGranted)
{
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
if (Fcb->CurrentInstances >= Fcb->MaximumInstances)
{
IoStatus.Status = STATUS_INSTANCE_NOT_AVAILABLE;
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
if (Disposition == FILE_CREATE)
{
IoStatus.Status = STATUS_ACCESS_DENIED;
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
if (CheckShareAccess != ShareAccess)
{
IoStatus.Status = STATUS_ACCESS_DENIED;
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
{
--Ccb->Fcb->CurrentInstances;
NpDeleteCcb(Ccb, List);
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
NpCheckForNotify(Fcb->ParentDcb, 0, List);
IoStatus.Status = STATUS_SUCCESS;
- IoStatus.Information = 1;
- TRACE("Leaving, IoStatus = %lx\n", IoStatus);
+ IoStatus.Information = FILE_OPENED;
+ TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status);
return IoStatus;
}
IN PNAMED_PIPE_CREATE_PARAMETERS Parameters,
IN PEPROCESS Process,
IN PLIST_ENTRY List,
- IN PIO_STATUS_BLOCK IoStatus)
+ OUT PIO_STATUS_BLOCK IoStatus)
{
NTSTATUS Status;
USHORT NamedPipeConfiguration;
if (!(Parameters->TimeoutSpecified) ||
!(Parameters->MaximumInstances) ||
- (Parameters->DefaultTimeout.HighPart >= 0))
+ (Parameters->DefaultTimeout.QuadPart >= 0))
{
Status = STATUS_INVALID_PARAMETER;
goto Quickie;
goto Quickie;
}
- if (!Parameters->NamedPipeType && Parameters->ReadMode == 1)
+ if (Parameters->NamedPipeType == FILE_PIPE_BYTE_STREAM_TYPE &&
+ Parameters->ReadMode == FILE_PIPE_MESSAGE_MODE)
{
Status = STATUS_INVALID_PARAMETER;
goto Quickie;
}
SecurityContext = &AccessState->SubjectSecurityContext;
- SeLockSubjectContext(&AccessState->SubjectSecurityContext);
+ SeLockSubjectContext(SecurityContext);
- Status = SeAssignSecurity(0,
+ Status = SeAssignSecurity(NULL,
AccessState->SecurityDescriptor,
&SecurityDescriptor,
- 0,
+ FALSE,
SecurityContext,
IoGetFileObjectGenericMapping(),
PagedPool);
Status = ObLogSecurityDescriptor(SecurityDescriptor,
&CachedSecurityDescriptor,
1);
- ExFreePool(SecurityDescriptor);
+ ExFreePoolWithTag(SecurityDescriptor, 0);
if (!NT_SUCCESS(Status))
{
FileName = FileObject->FileName;
- IoStatus.Status = STATUS_SUCCESS;
IoStatus.Information = 0;
FsRtlEnterFileSystem();
goto Quickie;
}
- Fcb = NpFindPrefix(&FileName, TRUE, &Prefix);
+ Fcb = NpFindPrefix(&FileName, 1, &Prefix);
}
if (Prefix.Length)