OUT PHANDLE NamedPipeFileHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG ShareAccess,
IN ULONG CreateDisposition,
IN ULONG CreateOptions,
IN BOOLEAN WriteModeMessage,
IN BOOLEAN ReadModeMessage,
IN BOOLEAN NonBlocking,
IN ULONG MaxInstances,
IN ULONG InBufferSize,
IN ULONG OutBufferSize,
IN PLARGE_INTEGER DefaultTimeOut );
Функция NtCreateNamedPipeFile создаёт именованный канал. Именованные каналы это специальный тип файлов, поэтому вся функциональность предоставляется функциями работы с файлами типа NtReadFile, NtWriteFile и т. п. Именованные каналы часто используются в NT системе, например как хэндлы stdin и stdout.
NamedPipeFileHandle
Результат выполнения - указатель на HANDLE именованного канала.
DesiredAccess
Права доступа на хэндл объекта. Комбинация одного из перечисленного:
FILE_READ_DATA
FILE_WRITE_DATA
FILE_CREATE_PIPE_INSTANCE
FILE_READ_ATTRIBUTES
FILE_WRITE_ATTRIBUTES
SYNCHRONIZE
READ_CONTROL
WRITE_OWNER
WRITE_DAC
ACCESS_SYSTEM_SECURITY
.
ObjectAttributes
Указатель на структуру OBJECT_ATTRIBUTES, содержащую имя именованного канала. Имя должно начинаться со строки "\??\PIPE\", которая является символьной ссылкой на объект устройства NamedPipe.
IoStatusBlock
Результат ввода-вывода
ShareAccess
Комбинация одного из перечисленного:
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE
CreateDisposition
Используйте FILE_CREATE, FILE_OPEN или FILE_OPEN_IF.
CreateOptions
См. описание NtCreateFile где можно посмотреть допустимые флаги для создания.
WriteModeMessage
Если установлено, то запись в именованный канал происходит в режиме сообщений.
Если нет, запись происходит в байтовом режиме.
ReadModeMessage
Та же функциональность, что и у параметра WriteModeMessage, но для чтения данных.
NonBlocking
Если установлено, все операции с именованным каналом асинхронны.
MaxInstances
Максимальное число открытых хэндлов на именованный канал, или константа FILE_PIPE_UNLIMITED_INSTANCES.
InBufferSize
Размер буфера ввода в байтах.
OutBufferSize
Размер буфера вывода в байтах.
DefaultTimeOut
Указатель на LARGE_INTEGER, содержащее таймаут именованного канала, в единицах измерения, равным 100 нс. Отрицательные значения означают относительное время.