mirror of
https://github.com/reactos/reactos.git
synced 2024-07-21 11:48:04 +00:00
ConnectNamedPipe(): STATUS_PIPE_CONNECTED reports a successful connect.
svn path=/trunk/; revision=3204
This commit is contained in:
parent
4684f7fe0e
commit
2ecad3b855
|
@ -1,4 +1,4 @@
|
|||
/* $Id: npipe.c,v 1.10 2002/06/25 18:49:38 ekohl Exp $
|
||||
/* $Id: npipe.c,v 1.11 2002/07/10 15:09:57 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
|
@ -287,51 +287,52 @@ BOOL STDCALL
|
|||
ConnectNamedPipe(HANDLE hNamedPipe,
|
||||
LPOVERLAPPED lpOverlapped)
|
||||
{
|
||||
IO_STATUS_BLOCK Iosb;
|
||||
HANDLE hEvent;
|
||||
PIO_STATUS_BLOCK IoStatusBlock;
|
||||
NTSTATUS Status;
|
||||
PIO_STATUS_BLOCK IoStatusBlock;
|
||||
IO_STATUS_BLOCK Iosb;
|
||||
HANDLE hEvent;
|
||||
NTSTATUS Status;
|
||||
|
||||
if (lpOverlapped != NULL)
|
||||
{
|
||||
lpOverlapped->Internal = STATUS_PENDING;
|
||||
hEvent = lpOverlapped->hEvent;
|
||||
IoStatusBlock = (PIO_STATUS_BLOCK)lpOverlapped;
|
||||
}
|
||||
else
|
||||
{
|
||||
IoStatusBlock = &Iosb;
|
||||
hEvent = NULL;
|
||||
}
|
||||
if (lpOverlapped != NULL)
|
||||
{
|
||||
lpOverlapped->Internal = STATUS_PENDING;
|
||||
hEvent = lpOverlapped->hEvent;
|
||||
IoStatusBlock = (PIO_STATUS_BLOCK)lpOverlapped;
|
||||
}
|
||||
else
|
||||
{
|
||||
IoStatusBlock = &Iosb;
|
||||
hEvent = NULL;
|
||||
}
|
||||
|
||||
Status = NtFsControlFile(hNamedPipe,
|
||||
hEvent,
|
||||
NULL,
|
||||
NULL,
|
||||
IoStatusBlock,
|
||||
FSCTL_PIPE_LISTEN,
|
||||
NULL,
|
||||
0,
|
||||
NULL,
|
||||
0);
|
||||
if ((lpOverlapped == NULL) && (Status == STATUS_PENDING))
|
||||
{
|
||||
Status = NtWaitForSingleObject(hNamedPipe,
|
||||
FALSE,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastErrorByStatus(Status);
|
||||
return(FALSE);
|
||||
}
|
||||
Status = Iosb.Status;
|
||||
}
|
||||
if (!NT_SUCCESS(Status) || (Status == STATUS_PENDING))
|
||||
{
|
||||
SetLastErrorByStatus (Status);
|
||||
return(FALSE);
|
||||
}
|
||||
return(TRUE);
|
||||
Status = NtFsControlFile(hNamedPipe,
|
||||
hEvent,
|
||||
NULL,
|
||||
NULL,
|
||||
IoStatusBlock,
|
||||
FSCTL_PIPE_LISTEN,
|
||||
NULL,
|
||||
0,
|
||||
NULL,
|
||||
0);
|
||||
if ((lpOverlapped == NULL) && (Status == STATUS_PENDING))
|
||||
{
|
||||
Status = NtWaitForSingleObject(hNamedPipe,
|
||||
FALSE,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastErrorByStatus(Status);
|
||||
return(FALSE);
|
||||
}
|
||||
Status = Iosb.Status;
|
||||
}
|
||||
if ((!NT_SUCCESS(Status) && Status != STATUS_PIPE_CONNECTED) ||
|
||||
(Status == STATUS_PENDING))
|
||||
{
|
||||
SetLastErrorByStatus(Status);
|
||||
return(FALSE);
|
||||
}
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue