Compartir a través de


Implementación de un proveedor de red

Un proveedor de red es un archivo DLL que permite que el sistema operativo Windows admita un protocolo de red específico. Para ello, implementa la API del proveedor de red. Esta API es un conjunto de funciones que llama al enrutador de varios proveedores (MPR) para comunicarse con la red. A continuación, el proveedor de red traduce estas llamadas a llamadas API específicas de red para realizar la acción especificada por el MPR. De este modo, el sistema operativo Windows puede interactuar con nuevos protocolos de red sin tener que comprender sus API específicas de red.

Para crear un proveedor de red, escriba un archivo DLL que exporte la función NPGetCaps .

La compatibilidad con las demás funciones de la API del proveedor de red es opcional. Si el proveedor de red no requiere una función, el archivo DLL no necesita implementarlo ni proporcionar una implementación de código auxiliar. Para obtener más información, consulte los temas de función individuales en Funciones del proveedor de red.

La excepción es que si admite una de las siguientes funciones de enumeración, también debe admitir las otras dos funciones: NPOpenEnum, NPEnumResource y NPCloseEnum.

En las instrucciones siguientes se describe cómo escribir un proveedor de red que interactúe bien con el MPR y el sistema operativo Windows. Siempre que sea posible, el proveedor debe cumplir las siguientes directrices para la velocidad, la validación y el enrutamiento.

Velocidad

Un proveedor de red debe determinar rápidamente si un recurso de red es propio. Esto se debe a que el MPR puede tener que recorrer muchos proveedores para encontrar el propietario de un recurso.

Si el proveedor de red no posee el recurso, debe devolver inmediatamente el código de estado WN_BAD_NETNAME.

También es importante que los proveedores que admiten NPGetDirectoryType devuelvan resultados para esta función rápidamente porque se llama mientras WinFile está pintando el árbol de directorios.

Validación

El orden de validación es importante. Un proveedor de red debe determinar primero si se inicia su red y, a continuación, determinar si el proveedor de red y el proveedor de red admiten la operación. Si, después de estas comprobaciones, el proveedor de red recibe recursos de red, debe determinar si es propietario de ellos. Por último, debe validar otros parámetros.

Enrutamiento

Si el MPR tiene que recorrer los proveedores de red, probará todos los proveedores hasta que uno acepte la llamada. En otras palabras, mpR siempre sigue intentando encontrar un proveedor de red.

Sin embargo, toma nota del primer error significativo notificado por un proveedor. Los errores como ERROR_BAD_NETPATH, ERROR_BAD_NET_NAME, ERROR_INVALID_PARAMETER, ERROR_INVALID_LEVEL se consideran insignificantes porque simplemente significan que el proveedor no administra el recurso. Sin embargo, si el proveedor produce un error con el error ERROR_INVALID_PASSWORD o algún otro error significativo, MPR registra este error y continúa corriendo por los proveedores de red. En general, cuando el enrutamiento, si ningún proveedor acepta la llamada, MPR notifica el primer error significativo que encuentra mientras recorre los proveedores de red.

El proveedor de red debe tener en cuenta este comportamiento de MPR al decidir qué mensaje de error se va a devolver.

Nota de implementación

Al implementar dll del proveedor de red, el proveedor no debe llamar a otras funciones de red de Windows, API de shell u otras consultas basadas en rutas UNC que podrían provocar reentradas en el subsistema MPR. Si realiza estas llamadas desde un archivo DLL del proveedor de red, la aplicación u otros componentes del sistema operativo pueden experimentar contención, un rendimiento deficiente o interbloqueos dentro del subsistema MPR.