|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
CreateNamedPipe
The CreateNamedPipe function creates an instance of a named pipe and returns a handle for subsequent pipe operations. A named pipe server process uses this function either to create the first instance of a specific named pipe and establish its basic attributes or to create a new instance of an existing named pipe.
HANDLE CreateNamedPipe(
LPCTSTR lpName, // pointer to pipe name DWORD dwOpenMode, // pipe open mode DWORD dwPipeMode, // pipe-specific modes DWORD nMaxInstances, // maximum number of instances DWORD nOutBufferSize, // output buffer size, in bytes DWORD nInBufferSize, // input buffer size, in bytes DWORD nDefaultTimeOut, // time-out time, in milliseconds LPSECURITY_ATTRIBUTES lpSecurityAttributes // pointer to security attributes structure );
Parameters
lpName
Points to the null-terminated string that uniquely identifies the pipe. The string must have the following form:
\\.\pipe\pipename
The pipename part of the name can include any character other than a backslash, including numbers and special characters. The entire pipe name string can be up to 256 characters long. Pipe names are not case sensitive.
dwOpenMode
Specifies the pipe access mode, the overlapped mode, the write-through mode, and the security access mode of the pipe handle.
This parameter must specify one of the following pipe access mode flags. The same mode must be specified for each instance of the pipe:
Mode Description PIPE_ACCESS_DUPLEX The pipe is bidirectional; both server and client processes can read from and write to the pipe. This mode gives the server the equivalent of GENERIC_READ | GENERIC_WRITE access to the pipe. The client can specify GENERIC_READ or GENERIC_WRITE, or both, when it connects to the pipe using the CreateFile function. PIPE_ACCESS_INBOUND The flow of data in the pipe goes from client to server only. This mode gives the server the equivalent of GENERIC_READ access to the pipe. The client must specify GENERIC_WRITE access when connecting to the pipe. PIPE_ACCESS_OUTBOUND The flow of data in the pipe goes from server to client only. This mode gives the server the equivalent of GENERIC_WRITE access to the pipe. The client must specify GENERIC_READ access when connecting to the pipe.
This parameter can also include either or both of the following flags, which enable write-through mode and overlapped mode. These modes can be different for different instances of the same pipe.
Mode Description FILE_FLAG_WRITE_THROUGH Write-through mode is enabled. This mode affects only write operations on byte-type pipes and, then, only when the client and server processes are on different computers. If this mode is enabled, functions writing to a named pipe do not return until the data written is transmitted across the network and is in the pipe's buffer on the remote computer. If this mode is not enabled, the system enhances the efficiency of network operations by buffering data until a minimum number of bytes accumulate or until a maximum time elapses. FILE_FLAG_OVERLAPPED Overlapped mode is enabled. If this mode is enabled, functions performing read, write, and connect operations that may take a significant time to be completed can return immediately. This mode enables the thread that started the operation to perform other operations while the time-consuming operation executes in the background. For example, in overlapped mode, a thread can handle simultaneous input and output (I/O) operations on multiple instances of a pipe or perform simultaneous read and write operations on the same pipe handle. If overlapped mode is not enabled, functions performing read, write, and connect operations on the pipe handle do not return until the operation is finished. The ReadFileEx and WriteFileEx functions can only be used with a pipe handle in overlapped mode. The ReadFile, WriteFile, ConnectNamedPipe, and TransactNamedPipe functions can execute either synchronously or as overlapped operations.
This parameter can include any combination of the following security access mode flags. These modes can be different for different instances of the same pipe. They can be specified without concern for what other dwOpenMode modes have been specified.
Mode Description WRITE_DAC The caller will have write access to the named pipe's discretionary access control list (ACL). WRITE_OWNER The caller will have write access to the named pipe's owner. ACCESS_SYSTEM_SECURITY The caller will have write access to the named pipe's system ACL.
dwPipeMode
Specifies the type, read, and wait modes of the pipe handle.
One of the following type mode flags can be specified. The same type mode must be specified for each instance of the pipe. If you specify zero, the parameter defaults to byte-type mode.
Mode Description PIPE_TYPE_BYTE Data is written to the pipe as a stream of bytes. This mode cannot be used with PIPE_READMODE_MESSAGE. PIPE_TYPE_MESSAGE Data is written to the pipe as a stream of messages. This mode can be used with either PIPE_READMODE_MESSAGE or PIPE_READMODE_BYTE.
One of the following read mode flags can be specified. Different instances of the same pipe can specify different read modes. If you specify zero, the parameter defaults to byte-read mode.
Mode Description PIPE_READMODE_BYTE Data is read from the pipe as a stream of bytes. This mode can be used with either PIPE_TYPE_MESSAGE or PIPE_TYPE_BYTE. PIPE_READMODE_MESSAGE Data is read from the pipe as a stream of messages. This mode can be only used if PIPE_TYPE_MESSAGE is also specified.
One of the following wait mode flags can be specified. Different instances of the same pipe can specify different wait modes. If you specify zero, the parameter defaults to blocking mode.
Mode Description PIPE_WAIT Blocking mode is enabled. When the pipe handle is specified in the ReadFile, WriteFile, or ConnectNamedPipe function, the operations are not completed until there is data to read, all data is written, or a client is connected. Use of this mode can mean waiting indefinitely in some situations for a client process to perform an action. PIPE_NOWAIT Nonblocking mode is enabled. In this mode, ReadFile, WriteFile, and ConnectNamedPipe always return immediately. Note that nonblocking mode is supported for compatibility with Microsoft LAN Manager version 2.0 and should not be used to achieve asynchronous I/O with named pipes.
nMaxInstances
Specifies the maximum number of instances that can be created for this pipe. The same number must be specified for all instances. Acceptable values are in the range 1 through PIPE_UNLIMITED_INSTANCES. If this parameter is PIPE_UNLIMITED_INSTANCES, the number of pipe instances that can be created is limited only by the availability of system resources.
nOutBufferSize
Specifies the number of bytes to reserve for the output buffer. For a discussion on sizing named pipe buffers, see the following Remarks section.
nInBufferSize
Specifies the number of bytes to reserve for the input buffer. For a discussion on sizing named pipe buffers, see the following Remarks section.
nDefaultTimeOut
Specifies the default time-out value, in milliseconds, if the WaitNamedPipe function specifies NMPWAIT_USE_DEFAULT_WAIT. Each instance of a named pipe must specify the same value.
lpSecurityAttributes
Pointer to a SECURITY_ATTRIBUTES structure that specifies a security descriptor for the new named pipe and determines whether child processes can inherit the returned handle. If lpSecurityAttributes is NULL, the named pipe gets a default security descriptor and the handle cannot be inherited.
Return Values
If the function succeeds, the return value is a handle to the server end of a named pipe instance. If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError. The return value is ERROR_INVALID_PARAMETER if nMaxInstances is greater than PIPE_UNLIMITED_INSTANCES.
Remarks
To create an instance of a named pipe by using CreateNamedPipe, the user must have FILE_CREATE_PIPE_INSTANCE access to the named pipe object. If a new named pipe is being created, the access control list (ACL) from the security attributes parameter defines the discretionary access control for the named pipe. All instances of a named pipe must specify the same pipe type (byte-type or message-type), pipe access (duplex, inbound, or outbound), instance count, and time-out value. If different values are used, this function fails and GetLastError returns ERROR_ACCESS_DENIED.
The input and output buffer sizes are advisory. The actual buffer size reserved for each end of the named pipe is either the system default, the system minimum or maximum, or the specified size rounded up to the next allocation boundary. An instance of a named pipe is always deleted when the last handle to the instance of the named pipe is closed.
See Also
ConnectNamedPipe, CreateFile, ReadFile, ReadFileEx, SECURITY_ATTRIBUTES, TransactNamedPipe, WaitNamedPipe, WriteFile, WriteFileEx
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
CreateNamedPipe
Функция CreateNamedPipe создает пример поименованной трубы и возвращает ручку для последующих действий трубы. Процесс сервера поименованной трубы использует эту функцию или, чтобы создавать первый пример специфической поименованной трубы и устанавливать свои основные атрибуты или, чтобы создавать новый пример, существующий поименованная труба.
РУЧКА CreateNamedPipe(
LPCTSTR lpName, // УКАЗАТЕЛЬ в имя трубы DWORD dwOpenMode, // открытый режим трубы DWORD dwPipeMode, // труба-специфические режимы DWORD nMaxInstances, // максимальное количество примеров DWORD nOutBufferSize, // выходной буферный размер, в байтах DWORD nInBufferSize, // входной буферный размер, в байтах DWORD nDefaultTimeOut, // время задержки, в течение указателя миллисекунд LPSECURITY_ATTRIBUTES lpSecurityAttributes // в структуру атрибутов безопасности );
Параметры
lpName
Точки на недействительный расторгнутую строку, которые однозначно идентифицируют трубу. Строка должна иметь следующее формы:
\\.\pipe\pipename
Часть pipename имени может включить любой символ кроме обратной косой черты, включая числа и специальные символы. Строка имени целой трубы может быть вплоть до 256 символов долго (длиной). Имена Трубы являются не случай чувствительный.
dwOpenMode
Определяет режим доступа трубы, перекрытый режим, запись-через режим, и режим доступа безопасности ручки трубы.
Этот параметр должен определить один из режима доступа следующих флагов трубы. Тот же режим должен быть определен для каждого примера трубы:
Описание Режима PIPE_ACCESS_DUPLEX труба двунаправленная; как сервер так и процессы клиента могут прочитаться из и записываться в трубу. Этот режим дает серверу эквивалент GENERIC_READ | доступ GENERIC_WRITE к трубе. Клиент может определить GENERIC_READ или GENERIC_WRITE, или оба, когда он подключает к трубе, использовавшей функцию CreateFile. PIPE_ACCESS_INBOUND поток данных в трубе идет от клиента до сервера только. Этот режим дает серверу эквивалент доступа GENERIC_READ к трубе. Клиент должен определить доступ GENERIC_WRITE при соединении в трубу. PIPE_ACCESS_OUTBOUND поток данных в трубе идет от сервера до клиента только. Этот режим дает серверу эквивалент доступа GENERIC_WRITE к трубе. Клиент должен определить доступ GENERIC_READ при соединении в трубу.
Этот параметр может также включить или или оба следующих флагов, какой допустимой записи-через режим и перекрытый режим. Эти режимы могут быть другими для других примеров той же самой трубы.
Режим Description FILE_FLAG_WRITE_THROUGH Запись-через режим приспособлена. Этот режим влияет на только записывать операции в байтовом типе труб и, затем, только когда клиент и процессы сервера находятся в других компьютерах. Если этот режим приспособлен, функционирует пишась в поименованную трубу не возвращаться до письменных данных передан через сеть и - в буфере трубы в дистанционном компьютере. Если этот режим не приспособлен, система повышает эффективность сетевых операций буферизуя данные пока минимальное количество байтов не накопит или пока максимальное время не истечет. FILE_FLAG_OVERLAPPED Перекрытый режим приспособлен. Если этот режим приспособлен, функционирует выполняя прочитанное, запись и соединяет операции, которые могут взять значимое время, которое нужно завершать, может возвращаться немедленно. Этот режим приспосабливается резьбу, которая запускала операцию, чтобы выполнять другие операции тогда как трудоемкая операция выполняется на фоне. Например, в перекрытом режиме, резьба может прооперировать одновременный ввод и выход (В/В) операции во многочисленных примерах трубы или выполнять одновременное чтение и записывать операции в ту же ручку трубы. Если перекрытый режим не приспособлен, функционирует выполняя прочитанное, запись и соединяет операции в ручку трубы не возвращаться пока операция не будет завершена. ReadFileEx И функции WriteFileEx могут только использованы ручкой трубы в перекрытом режиме. ReadFile, WriteFile, ConnectNamedPipe, И функции TransactNamedPipe могут выполнить или синхронно или как перекрыто операции.
Этот параметр может включить любую комбинацию режима доступа следующих флагов безопасности. Эти режимы могут быть другими для других примеров той же самой трубы. Они могут быть определены без беспокойства для которого другие режимы dwOpenMode определены.
Описание Режима WRITE_DAC вызывающий оператор будет иметь доступ записи к дискреционному доступу поименованного управляющего списка трубы (ACL). WRITE_OWNER вызывающий оператор будет иметь доступ записи к поименованному владельцу трубы. ACCESS_SYSTEM_SECURITY вызывающий оператор будет иметь доступ записи к поименованной системе трубы ACL.
dwPipeMode
Определяет тип, прочитанный, и режимы ожидания ручки трубы.
Один из флагов режима типа следующего могут быть определены. Тот же режим типа должен быть определен для каждого примера трубы. Если Вы определяете нуль, параметр устанавливается по умолчанию в байтовый тип режима.
Описание Режима Данные PIPE_TYPE_BYTE записаны в трубу как поток байтов. Этот режим не может быть использован PIPE_READMODE_MESSAGE. Данные PIPE_TYPE_MESSAGE записаны в трубу как поток сообщений. Этот режим может быть использован с PIPE_READMODE_MESSAGE или PIPE_READMODE_BYTE.
Одно из следующего было прочитано флаги режима могут быть определены. Другие примеры той же самой трубы могут определить другие режимы чтения. Если Вы определяете нуль, параметр устанавливается по умолчанию в байт-прочитавший режим.
Описание Режима Данные PIPE_READMODE_BYTE прочитаны из трубы как поток байтов. Этот режим может быть использован с PIPE_TYPE_MESSAGE или PIPE_TYPE_BYTE. Данные PIPE_READMODE_MESSAGE прочитаны из трубы как поток сообщений. Этот режим может только быть использован если PIPE_TYPE_MESSAGE также определен.
Один из флагов режима ожидания следующего могут быть определены. Другие примеры той же самой трубы могут определить другие режимы ожидания. Если Вы определяете нуль, параметр устанавливается по умолчанию в блокировку режима.
Описание Режима PIPE_WAIT, блокирующий режим приспособлен. Когда ручка трубы определена в ReadFile, WriteFile, или функции ConnectNamedPipe, операции не завершены до есть данные, чтобы читаться, все данные записаны, или клиент связан. Использование этого режима может означать ожидаясь неопределенно в некоторых ситуациях для процесса клиента, чтобы выполнять действие. режим PIPE_NOWAIT Nonblocking приспособлен. В этом режиме, ReadFile, WriteFile, и всегда возврат ConnectNamedPipe немедленно. Отметьте, что nonblocking режима поддерживан для совместимости с версией Менеджера Микрософт LAN 2.0 и не должно использовано, чтобы достигать асинхронный В/В с поименованными трубами.
nMaxInstances
Определяет максимальное количество примеров, которые могут быть созданы для этой трубы. То же число должно быть определено для всех примеров. Приемлемые величины - в дипазоне 1 через PIPE_UNLIMITED_INSTANCES. Если этот параметр - PIPE_UNLIMITED_INSTANCES, номер примеров трубы, которая может быть создана, ограниченн только доступностью системных ресурсов.
nOutBufferSize
Определяет количество байтов, чтобы резервироваться для выходного буфера. Для дискуссии в калибровке назвавшей буферы трубы, смотри секцию Замечаний следующего.
nInBufferSize
Определяет количество байтов, чтобы резервироваться для входного буфера. Для дискуссии в калибровке назвавшей буферы трубы, смотри секцию Замечаний следующего.
nDefaultTimeOut
Определяет по умолчанию величину задержки, в течение миллисекунд, если функция WaitNamedPipe определяет NMPWAIT_USE_DEFAULT_WAIT. Каждый пример поименованной трубы должен определить ту же величину.
lpSecurityAttributes
Указатель в структуру SECURITY_ATTRIBUTES, которая определяет дескриптор безопасности для новой поименованной трубы и определяет независимо ребенка, процессы могут унаследовать возвращанную ручку. Если lpSecurityAttributes НЕДЕЙСТВИТЕЛЕН, поименованная труба получает по умолчанию дескриптор безопасности и ручка не может быть унаследована.
Обратные Величины
Если функция добивается успеха, обратная величина является ручкой в конец сервера поименованного примера трубы. Если функция терпит неудачу, обратная величина - INVALID_HANDLE_VALUE. Для того, чтобы расширять информацию ошибки, вызовите GetLastError. Обратная величина - ERROR_INVALID_PARAMETER если nMaxInstances больше, чем PIPE_UNLIMITED_INSTANCES.
Замечания
Чтобы создавать пример поименованной трубы используя CreateNamedPipe, пользователь должен иметь доступ FILE_CREATE_PIPE_INSTANCE к поименованному объекту трубы. Если новая поименованная труба создается, управляющий список доступа (ACL) из параметра атрибутов безопасности определяет дискреционное управление доступа для поименованной трубы. Все примеры поименованной трубы должны определить тот же тип трубы (байтовый-тип или сообщение-тип), доступ трубы (дуплекс, inbound, или уходящий), счет примера, и величина задержки. Если другие величины использованы, эта функция терпит неудачу и возврат GetLastError ERROR_ACCESS_DENIED.
Ввод и выход буферизуют размеры консультативные. Фактический буферный размер зарезервированный для каждого конца поименованной трубы - также системное умолчание, системный минимум или максимум, или определенный размер округлял в большую сторону на следующую границу распределения. Пример поименованной трубы всегда удален когда последняя ручка в пример поименованной трубы закрыта.
Смотри Также
ConnectNamedPipe, CreateFile, ReadFile, ReadFileEx, SECURITY_ATTRIBUTES, TransactNamedPipe, WaitNamedPipe, WriteFile, WriteFileEx
|
|
|
|
| |