-
-/* $Id: zw.h,v 1.38 2004/12/14 00:41:23 gdalsnes Exp $
+/* $Id: zw.h,v 1.39 2004/12/23 20:12:51 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
IN ULONG ShareAccess,
IN ULONG CreateDisposition,
IN ULONG CreateOptions,
- IN BOOLEAN WriteModeMessage,
- IN BOOLEAN ReadModeMessage,
- IN BOOLEAN NonBlocking,
+ IN ULONG NamedPipeType,
+ IN ULONG ReadMode,
+ IN ULONG CompletionMode,
IN ULONG MaxInstances,
IN ULONG InBufferSize,
IN ULONG OutBufferSize,
IN ULONG ShareAccess,
IN ULONG CreateDisposition,
IN ULONG CreateOptions,
- IN BOOLEAN WriteModeMessage,
- IN BOOLEAN ReadModeMessage,
- IN BOOLEAN NonBlocking,
+ IN ULONG NamedPipeType,
+ IN ULONG ReadMode,
+ IN ULONG CompletionMode,
IN ULONG MaxInstances,
IN ULONG InBufferSize,
IN ULONG OutBufferSize,
-/* $Id: npipe.c,v 1.20 2004/10/08 23:24:01 weiden Exp $
+/* $Id: npipe.c,v 1.21 2004/12/23 20:13:19 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
ACCESS_MASK DesiredAccess;
ULONG CreateOptions;
ULONG CreateDisposition;
- BOOLEAN WriteModeMessage;
- BOOLEAN ReadModeMessage;
- BOOLEAN NonBlocking;
+ ULONG WriteModeMessage;
+ ULONG ReadModeMessage;
+ ULONG NonBlocking;
IO_STATUS_BLOCK Iosb;
ULONG ShareAccess, Attributes;
LARGE_INTEGER DefaultTimeOut;
PSECURITY_DESCRIPTOR SecurityDescriptor = NULL;
-
+
Result = RtlDosPathNameToNtPathName_U((LPWSTR)lpName,
&NamedPipeName,
NULL,
SetLastError(ERROR_PATH_NOT_FOUND);
return(INVALID_HANDLE_VALUE);
}
-
+
DPRINT("Pipe name: %wZ\n", &NamedPipeName);
DPRINT("Pipe name: %S\n", NamedPipeName.Buffer);
-
+
Attributes = OBJ_CASE_INSENSITIVE;
if(lpSecurityAttributes)
{
Attributes,
NULL,
SecurityDescriptor);
-
+
DesiredAccess = 0;
-
ShareAccess = 0;
-
CreateDisposition = FILE_OPEN_IF;
-
CreateOptions = 0;
if (dwOpenMode & FILE_FLAG_WRITE_THROUGH)
{
{
CreateOptions = CreateOptions | FILE_PIPE_OUTBOUND;
}
-
+
if (dwPipeMode & PIPE_TYPE_BYTE)
{
- WriteModeMessage = FALSE;
+ WriteModeMessage = FILE_PIPE_BYTE_STREAM_MODE;
}
else if (dwPipeMode & PIPE_TYPE_MESSAGE)
{
- WriteModeMessage = TRUE;
+ WriteModeMessage = FILE_PIPE_MESSAGE_MODE;
}
else
{
- WriteModeMessage = FALSE;
+ WriteModeMessage = FILE_PIPE_BYTE_STREAM_MODE;
}
-
+
if (dwPipeMode & PIPE_READMODE_BYTE)
{
- ReadModeMessage = FALSE;
+ ReadModeMessage = FILE_PIPE_BYTE_STREAM_MODE;
}
else if (dwPipeMode & PIPE_READMODE_MESSAGE)
{
- ReadModeMessage = TRUE;
+ ReadModeMessage = FILE_PIPE_MESSAGE_MODE;
}
else
{
- ReadModeMessage = FALSE;
+ ReadModeMessage = FILE_PIPE_BYTE_STREAM_MODE;
}
-
+
if (dwPipeMode & PIPE_WAIT)
{
- NonBlocking = FALSE;
+ NonBlocking = FILE_PIPE_QUEUE_OPERATION;
}
else if (dwPipeMode & PIPE_NOWAIT)
{
- NonBlocking = TRUE;
+ NonBlocking = FILE_PIPE_COMPLETE_OPERATION;
}
else
{
- NonBlocking = FALSE;
+ NonBlocking = FILE_PIPE_QUEUE_OPERATION;
}
-
+
if (nMaxInstances >= PIPE_UNLIMITED_INSTANCES)
{
nMaxInstances = ULONG_MAX;
}
-
+
DefaultTimeOut.QuadPart = nDefaultTimeOut * -10000;
-
+
Status = NtCreateNamedPipeFile(&PipeHandle,
DesiredAccess,
&ObjectAttributes,
nInBufferSize,
nOutBufferSize,
&DefaultTimeOut);
-
+
RtlFreeUnicodeString(&NamedPipeName);
-
+
if (!NT_SUCCESS(Status))
{
DPRINT("NtCreateNamedPipe failed (Status %x)!\n", Status);
SetLastErrorByStatus (Status);
- return(INVALID_HANDLE_VALUE);
+ return INVALID_HANDLE_VALUE;
}
-
- return(PipeHandle);
+
+ return PipeHandle;
}
&NamedPipeName,
NULL,
NULL);
-
if (!r)
{
return(FALSE);
IO_STATUS_BLOCK StatusBlock;
NTSTATUS Status;
- if(lpState != NULL)
+ if (lpState != NULL)
{
FILE_PIPE_INFORMATION PipeInfo;
&PipeInfo,
sizeof(FILE_PIPE_INFORMATION),
FilePipeInformation);
- if(!NT_SUCCESS(Status))
+ if (!NT_SUCCESS(Status))
{
SetLastErrorByStatus(Status);
return FALSE;
ULONG ShareAccess,
ULONG CreateDisposition,
ULONG CreateOptions,
- BOOLEAN NamedPipeType,
- BOOLEAN ReadMode,
- BOOLEAN CompletionMode,
+ ULONG NamedPipeType,
+ ULONG ReadMode,
+ ULONG CompletionMode,
ULONG MaximumInstances,
ULONG InboundQuota,
ULONG OutboundQuota,
PLARGE_INTEGER DefaultTimeout)
{
- NAMED_PIPE_CREATE_PARAMETERS Buffer;
-
- DPRINT("NtCreateNamedPipeFile(FileHandle %x, DesiredAccess %x, "
- "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n",
- FileHandle,DesiredAccess,ObjectAttributes,
- ObjectAttributes->ObjectName->Buffer);
-
- ASSERT_IRQL(PASSIVE_LEVEL);
-
- if (DefaultTimeout != NULL)
- {
- Buffer.DefaultTimeout.QuadPart = DefaultTimeout->QuadPart;
- Buffer.TimeoutSpecified = TRUE;
- }
- else
- {
- Buffer.TimeoutSpecified = FALSE;
- }
- Buffer.NamedPipeType = NamedPipeType;
- Buffer.ReadMode = ReadMode;
- Buffer.CompletionMode = CompletionMode;
- Buffer.MaximumInstances = MaximumInstances;
- Buffer.InboundQuota = InboundQuota;
- Buffer.OutboundQuota = OutboundQuota;
-
- return IoCreateFile(FileHandle,
- DesiredAccess,
- ObjectAttributes,
- IoStatusBlock,
- NULL,
- FILE_ATTRIBUTE_NORMAL,
- ShareAccess,
- CreateDisposition,
- CreateOptions,
- NULL,
- 0,
- CreateFileTypeNamedPipe,
- (PVOID)&Buffer,
- 0);
+ NAMED_PIPE_CREATE_PARAMETERS Buffer;
+
+ DPRINT("NtCreateNamedPipeFile(FileHandle %x, DesiredAccess %x, "
+ "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n",
+ FileHandle,DesiredAccess,ObjectAttributes,
+ ObjectAttributes->ObjectName->Buffer);
+
+ ASSERT_IRQL(PASSIVE_LEVEL);
+
+ if (DefaultTimeout != NULL)
+ {
+ Buffer.DefaultTimeout.QuadPart = DefaultTimeout->QuadPart;
+ Buffer.TimeoutSpecified = TRUE;
+ }
+ else
+ {
+ Buffer.TimeoutSpecified = FALSE;
+ }
+ Buffer.NamedPipeType = NamedPipeType;
+ Buffer.ReadMode = ReadMode;
+ Buffer.CompletionMode = CompletionMode;
+ Buffer.MaximumInstances = MaximumInstances;
+ Buffer.InboundQuota = InboundQuota;
+ Buffer.OutboundQuota = OutboundQuota;
+
+ return IoCreateFile(FileHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ IoStatusBlock,
+ NULL,
+ FILE_ATTRIBUTE_NORMAL,
+ ShareAccess,
+ CreateDisposition,
+ CreateOptions,
+ NULL,
+ 0,
+ CreateFileTypeNamedPipe,
+ (PVOID)&Buffer,
+ 0);
}
/* EOF */