Вложение сетевого модуля
Прежде чем клиентский модуль и модуль поставщика могут быть присоединены друг к другу, каждый из них должен зарегистрировать себя в NMR. Клиентский модуль регистрируется в NMR путем вызова функции NmrRegisterClient , а модуль поставщика регистрируется в NMR путем вызова функции NmrRegisterProvider . На следующей схеме показана регистрация сетевого модуля.
Если клиентский модуль и модуль поставщика указывают один и тот же сетевой программный интерфейс (NPI) при регистрации в NMR, nmR инициирует подключение двух сетевых модулей вместе. NMR инициирует процесс вложения, вызывая функцию обратного вызова ClientAttachProvider клиентского модуля. На следующей схеме показан регистратор сетевых модулей (NMR), инициирующий вложение.
Функция обратного вызова ClientAttachProvider клиентского модуля может проверить данные регистрации для модуля поставщика, чтобы определить, будет ли он присоединен к модулю поставщика. Если клиентский модуль определяет, что он будет присоединен к модулю поставщика, он продолжает процесс вложения, вызывая функцию NmrClientAttachProvider . Когда клиентский модуль вызывает функцию NmrClientAttachProvider , NMR, в свою очередь, вызывает функцию обратного вызова ProviderAttachClient модуля поставщика. На следующей схеме показан клиентский модуль, продолжающий вложение.
Функция обратного вызова ProviderAttachClient модуля поставщика может проверить данные регистрации для клиентского модуля, чтобы определить, будет ли он присоединен к клиентскому модулю. Если модуль поставщика определяет, что он будет присоединен к клиентскому модулю, модуль поставщика и модуль клиента обмениваются указателями на соответствующие структуры таблиц диспетчеризации NPI. После присоединения клиентского модуля и модуля поставщика они могут взаимодействовать друг с другом с помощью своих функций NPI, независимых от NMR. На следующей схеме показаны подключенные сетевые модули.