Сетевые API. Стандартный API ввода/вывода Win32. Сетевые API Win32 (Wnet и Net).
Windows NT реализует несколько сетевых API для обеспечения поддержки сетевых приложений и совместимости с промышленными стандартами. Важно иметь в виду, что решение о том, какое API должно использовать приложение, зависит от характеристик API. Таких характеристик как, например, поддерживает ли API надежное или двунаправленное взаимодействие, над каким протоколом располагается API, переносимость API на другие Windows-платформы, на которых должно исполняться приложение. Итак, Windows NT предоставляет несколько способов получения доступа к сети, то есть несколько механизмов межпроцессных коммуникаций, часть которых описана ниже.
Стандартный API ввода/вывода Win32
Приложения получают доступ к удаленным файлам, используя стандартные Win32-функции ввода/вывода (открытия, закрытия, чтения, записи и т. п). Соответствующие запросы проходят по сети только в том случае, когда файл или устройство находятся на удаленной машине. Как правило, это означает, что имя файла является именем UNC (Uniform Naming Convention, то есть начинается с символов \\), или начинается с буквы, указывающей на диск на удаленной машине. Функции API ввода/вывода Win32, большая часть которых оптимизирована в DLL клиентской стороны, реализуются путем вызова системных сервисов системы ввода/вывода NT, в результате чего диспетчер ввода/вывода посылает пакеты IRP сначала драйверу mup.sys, а затем соответствующему редиректору, взаимодействующему с драйвером файловой системы сервера на сервере.
Сетевые API Win32 (Wnet и Net)
Windows NT обеспечивает множество независимых от сети WNet-функций, которые позволяют работать через провайдеров разных сетей.
Функции этого интерфейса полезны таким приложениям, как File Manager, которые выполняют соединение с удаленными файловыми системами и их просмотр. Функции WNet можно использовать для просмотра файловых систем Microsoft и других файловых систем по сетям LAN Manager, NetWare, VINES и т.д. Вызовы интерфейса API WNet, реализованного в виде DLL, проходят через сетевой компонент, называемый сервисом рабочей станции. Этот сервис – серверный процесс, похожий на защищенную подсистему. Сервис рабочей станции является, в сущности, надстройкой пользовательского режима для редиректора. Он поддерживает API WNet, предоставляет функции конфигурации редиректора и содержит код пользовательского режима для получения статистики редиректора. Когда приложение вызывает функции API WNet, этот вызов в начале поступает сервису рабочей станции, а затем уже к диспетчеру ввода/вывода и далее к редиректору.
Net-функции, предоставляемые сетевым интерфейсом Net, поддерживаются в "сетевой ОС" Microsoft LAN Manager, основанной на OS/2. В Windows NT большая часть сетевой функциональности является встроенной, поэтому некоторые из первоначальных Net-функций уже не поддерживаются. В Windows NT множество Net-функций, предоставляемых библиотекой netapi32.dll, дополняет встроенную сетевую функциональность, не обеспечиваемую другими сетевыми интерфейсами. Например, Net-функции позволяют приложениям взаимодействовать с сервисом рабочей станции, сервисом сервера, сервисом оповещений, сервисом передачи сообщений, репликатором и т. д.
Если существует базовая функция или WNet-функция, требуемая приложению, то лучше использовать ее, чем эквивалентную Net-функцию по двум причинам. Во-первых, WNet-функции являются независимыми от сети, в то время как Net-функции работают только в сетях Microsoft Windows. Во-вторых, некоторые из Net-функций могут быть замещены функциями базовых сетевых интерфейсов или WNet-функциями, и не поддерживаться в будущих версиях Windows NT.