Compartilhar via


Interface de Programação de Rede

Uma Interface de Programação de Rede, ou NPI, define a interface entre módulos de rede que podem ser anexados uns aos outros. Um módulo cliente registrado como um cliente de uma NPI específica só pode ser anexado a módulos de provedor registrados como provedores da mesma NPI. Da mesma forma, um módulo de provedor registrado como um provedor de uma NPI específica só pode ser anexado a módulos de cliente registrados como clientes da mesma NPI.

Cada NPI define os seguintes itens:

  • Um identificador de NPI que identifica exclusivamente a NPI. Um módulo de rede especifica um identificador de NPI para indicar a NPI específica que dá suporte quando o módulo de rede se registra no NMR (Registrador de Módulos de Rede). Um módulo de rede pode dar suporte a vários NPIs registrando-se com a NMR várias vezes, uma vez para cada NPI compatível. O NMR iniciará a anexação de um módulo cliente a um módulo de provedor somente se ambos derem suporte à mesma NPI.

  • Uma estrutura de características de cliente opcional que especifica as características específicas de NPI de cada módulo cliente. Essas características específicas de NPI podem incluir itens como qual versão (ou versões) da NPI que um módulo cliente dá suporte ou qual família de endereços ou protocolo um módulo cliente requer. Um módulo de provedor pode usar as informações contidas na estrutura de características do cliente de um módulo cliente para determinar se ele será anexado ao módulo cliente. Se uma NPI não definir nenhuma característica de cliente específica de NPI, essa estrutura não será necessária.

  • Uma estrutura de características de provedor opcional que especifica as características específicas de NPI de cada módulo de provedor. Essas características específicas de NPI podem incluir itens como qual versão (ou versões) da NPI que um módulo de provedor dá suporte ou quais famílias de endereços ou protocolos um módulo de provedor dá suporte. Um módulo cliente pode usar as informações contidas na estrutura de características do cliente de um módulo de provedor para determinar se ele será anexado ao módulo do provedor. Se uma NPI não definir nenhuma característica de provedor específica de NPI, essa estrutura não será necessária.

  • Zero ou mais funções de retorno de chamada do módulo de cliente. Depois que um módulo de provedor é anexado com êxito a um módulo cliente, o módulo do provedor pode acessar a funcionalidade do módulo cliente chamando as funções de retorno de chamada do módulo cliente.

  • Uma ou mais funções de módulo do provedor. Depois que um módulo cliente é anexado com êxito a um módulo de provedor, o módulo cliente pode acessar a funcionalidade do módulo do provedor chamando as funções do módulo do provedor.

  • Uma estrutura de tabela de despacho do cliente que contém ponteiros de função para cada uma das funções de callback do módulo cliente. Se uma NPI não definir nenhuma função de retorno de chamada do módulo cliente, essa estrutura não será necessária.

  • Uma estrutura de tabela de despachos do provedor que contém ponteiros de função para cada uma das funções do módulo do provedor.

Um módulo cliente que dá suporte a uma NPI específica usa os itens definidos pela NPI para implementar o lado do cliente da interface. Da mesma forma, um módulo de provedor que dá suporte a uma NPI específica usa os itens definidos pela NPI para implementar o lado do provedor da interface.

Todos os itens definidos por uma NPI são opacos para o NMR, exceto para o identificador de NPI. O NMR usa o identificador de NPI para determinar quais módulos de cliente devem ser anexados a quais módulos de provedor.