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
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -287,51 +287,52 @@ BOOL STDCALL
|
||||||
ConnectNamedPipe(HANDLE hNamedPipe,
|
ConnectNamedPipe(HANDLE hNamedPipe,
|
||||||
LPOVERLAPPED lpOverlapped)
|
LPOVERLAPPED lpOverlapped)
|
||||||
{
|
{
|
||||||
IO_STATUS_BLOCK Iosb;
|
PIO_STATUS_BLOCK IoStatusBlock;
|
||||||
HANDLE hEvent;
|
IO_STATUS_BLOCK Iosb;
|
||||||
PIO_STATUS_BLOCK IoStatusBlock;
|
HANDLE hEvent;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
if (lpOverlapped != NULL)
|
if (lpOverlapped != NULL)
|
||||||
{
|
{
|
||||||
lpOverlapped->Internal = STATUS_PENDING;
|
lpOverlapped->Internal = STATUS_PENDING;
|
||||||
hEvent = lpOverlapped->hEvent;
|
hEvent = lpOverlapped->hEvent;
|
||||||
IoStatusBlock = (PIO_STATUS_BLOCK)lpOverlapped;
|
IoStatusBlock = (PIO_STATUS_BLOCK)lpOverlapped;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
IoStatusBlock = &Iosb;
|
IoStatusBlock = &Iosb;
|
||||||
hEvent = NULL;
|
hEvent = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = NtFsControlFile(hNamedPipe,
|
Status = NtFsControlFile(hNamedPipe,
|
||||||
hEvent,
|
hEvent,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
IoStatusBlock,
|
IoStatusBlock,
|
||||||
FSCTL_PIPE_LISTEN,
|
FSCTL_PIPE_LISTEN,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
0);
|
0);
|
||||||
if ((lpOverlapped == NULL) && (Status == STATUS_PENDING))
|
if ((lpOverlapped == NULL) && (Status == STATUS_PENDING))
|
||||||
{
|
{
|
||||||
Status = NtWaitForSingleObject(hNamedPipe,
|
Status = NtWaitForSingleObject(hNamedPipe,
|
||||||
FALSE,
|
FALSE,
|
||||||
NULL);
|
NULL);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
SetLastErrorByStatus(Status);
|
SetLastErrorByStatus(Status);
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
}
|
}
|
||||||
Status = Iosb.Status;
|
Status = Iosb.Status;
|
||||||
}
|
}
|
||||||
if (!NT_SUCCESS(Status) || (Status == STATUS_PENDING))
|
if ((!NT_SUCCESS(Status) && Status != STATUS_PIPE_CONNECTED) ||
|
||||||
{
|
(Status == STATUS_PENDING))
|
||||||
SetLastErrorByStatus (Status);
|
{
|
||||||
return(FALSE);
|
SetLastErrorByStatus(Status);
|
||||||
}
|
return(FALSE);
|
||||||
return(TRUE);
|
}
|
||||||
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue