Операционные системы. Учебное пособие. Марапулец Ю.В. - 176 стр.

UptoLike

Составители: 

структуру имен системных объектов. Строки, содержащие имя канала, должны иметь
следующий синтаксис:
\\.\рiре\<имя канала>
Первый символ обратной косой черты указывает на корневой узел иерархической
структуры имен системных объектов. Еще три обратные косые разделяют имена после-
дующих узлов. Точка (.) обозначает локальный компьютер. Хотя каналы могут соеди-
няться с клиентами других сетевых серверов, новый объект-канал всегда появляется на
том локальном сервере, где он был создан.
После имени сервера указывается узел, который называется pipe. Здесь содержатся
имена всех каналов, расположенных на локальном компьютере. В строке имени про-
граммно задается только один фрагмент, а именно <имя канала>. Эта подстрока должна
содержать не более 256 символов. Регистр при наборе символов не имеет значения, по-
скольку имена объектов не чувствительны к нему. И серверы, и клиенты для представ-
ления локального компьютера используют точку (.), однако клиент, который хочет от-
крыть канал на удаленном сервере, должен знать имя этого сервера. Один из способов
определения имени удаленного сервера. Заключается в получении списка имен с помо-
щью функций WNetOpenEnum(), WNetEnumResource() и WNetCloseEnum(), однако де-
лается это очень медленно.
Функции CreateNamedPipe(), CreateFile(), WaitNamedPipe() и CallNamedPipe() тре-
буют, чтобы в качестве параметра было задано имя канала.
Параметр fdwOpenMode, содержит комбинацию флагов, которые задают некото-
рые атрибуты канала. Наиболее важным атрибутом является режим доступа, опреде-
ляющий направление передачи информации в канале. Параметр fdwOpenMode должен
содержать один из трех возможных флагов доступа.
PIPE_ACCESS_OUTBOUND - Сервер только записывает, а клиент только читает ин-
формацию.
PIPE_ACCESS_INBOUND - Сервер только читает, а клиент только записывает инфор-
мацию.
PIPE_ACCESS_DUPLEX - Сервер и клиент могут как записывать, так и читать инфор-
мацию.
Еще два флага этого параметра являются необязательными.
FILE_FLAG_WRITE_THROUGH - Запрещает буферизацию в сети.
FILE_FLAG_OVERLAPРЕD - Разрешает асинхронные операции чтения и записи.
С целью повышения эффективности работы канала при соединении с удаленным
компьютером система старается не сразу же отсылать каждое сообщение. Она, наоборот,
пытается накопить несколько коротких сообщений в буфере и передать их по каналу за
одну операцию. Если проходит определенное время, а буфер остается заполненным
лишь частично, система все же передает его содержимое. Флаг
FILE_FLAG_WRITE_THROUGH запрещает системе производить буферизацию каждое
сообщение будет отправляться немедленно, а команды записи не завершатся до тех пор,
пока не будут переданы их выходные значения. Буферизацию целесообразно отключать
в том случае, если вы собираетесь посылать сообщения лишь изредка.
Операции записи и чтения обычно выполняются медленно, поскольку работа осу-
ществляется с физическими устройствами. Второй необязательный флаг,
FILE_FLAG_OVERLAPPED,
позволяет командам чтения и записи завершаться, в то
время как инициированные ими действия будут продолжаться в фоновом режиме (асин-
хронный ввод-вывод, рассмотренный ранее).
Параметр fdwPipeMode содержит еще одну комбинацию флагов, позволяющую
задать другой набор характеристик канала: флаг режима чтения, флаг режима ввода и
178
структуру имен системных объектов. Строки, содержащие имя канала, должны иметь
следующий синтаксис:

\\.\рiре\<имя канала>

     Первый символ обратной косой черты указывает на корневой узел иерархической
структуры имен системных объектов. Еще три обратные косые разделяют имена после-
дующих узлов. Точка (.) обозначает локальный компьютер. Хотя каналы могут соеди-
няться с клиентами других сетевых серверов, новый объект-канал всегда появляется на
том локальном сервере, где он был создан.
     После имени сервера указывается узел, который называется pipe. Здесь содержатся
имена всех каналов, расположенных на локальном компьютере. В строке имени про-
граммно задается только один фрагмент, а именно <имя канала>. Эта подстрока должна
содержать не более 256 символов. Регистр при наборе символов не имеет значения, по-
скольку имена объектов не чувствительны к нему. И серверы, и клиенты для представ-
ления локального компьютера используют точку (.), однако клиент, который хочет от-
крыть канал на удаленном сервере, должен знать имя этого сервера. Один из способов
определения имени удаленного сервера. Заключается в получении списка имен с помо-
щью функций WNetOpenEnum(), WNetEnumResource() и WNetCloseEnum(), однако де-
лается это очень медленно.
     Функции CreateNamedPipe(), CreateFile(), WaitNamedPipe() и CallNamedPipe() тре-
буют, чтобы в качестве параметра было задано имя канала.
     Параметр fdwOpenMode, содержит комбинацию флагов, которые задают некото-
рые атрибуты канала. Наиболее важным атрибутом является режим доступа, опреде-
ляющий направление передачи информации в канале. Параметр fdwOpenMode должен
содержать один из трех возможных флагов доступа.
PIPE_ACCESS_OUTBOUND - Сервер только записывает, а клиент только читает ин-
формацию.
PIPE_ACCESS_INBOUND - Сервер только читает, а клиент только записывает инфор-
мацию.
PIPE_ACCESS_DUPLEX - Сервер и клиент могут как записывать, так и читать инфор-
мацию.
Еще два флага этого параметра являются необязательными.
FILE_FLAG_WRITE_THROUGH - Запрещает буферизацию в сети.
FILE_FLAG_OVERLAPРЕD - Разрешает асинхронные операции чтения и записи.
     С целью повышения эффективности работы канала при соединении с удаленным
компьютером система старается не сразу же отсылать каждое сообщение. Она, наоборот,
пытается накопить несколько коротких сообщений в буфере и передать их по каналу за
одну операцию. Если проходит определенное время, а буфер остается заполненным
лишь     частично,     система    все   же    передает   его    содержимое.    Флаг
FILE_FLAG_WRITE_THROUGH запрещает системе производить буферизацию каждое
сообщение будет отправляться немедленно, а команды записи не завершатся до тех пор,
пока не будут переданы их выходные значения. Буферизацию целесообразно отключать
в том случае, если вы собираетесь посылать сообщения лишь изредка.
     Операции записи и чтения обычно выполняются медленно, поскольку работа осу-
ществляется с физическими устройствами. Второй необязательный флаг,
FILE_FLAG_OVERLAPPED, позволяет командам чтения и записи завершаться, в то
время как инициированные ими действия будут продолжаться в фоновом режиме (асин-
хронный ввод-вывод, рассмотренный ранее).
     Параметр fdwPipeMode содержит еще одну комбинацию флагов, позволяющую
задать другой набор характеристик канала: флаг режима чтения, флаг режима ввода и


                                        178