Registering as an Interface Provider
An NDIS interface provider is a software component that provides and manages information for NDIS network interfaces. For example, protocol drivers, MUX intermediate drivers, and NDIS are interface providers. (NDIS provides a proxy interface provider for miniport drivers and filter drivers. However, miniport drivers and filter drivers can also be interface providers.) Each interface provider calls the NdisIfRegisterProvider function to register as a network interface provider.
If the call to NdisIfRegisterProvider succeeds, NdisIfRegisterProvider returns a handle at the address that the pNdisProviderHandle parameter specifies. The caller uses this handle in subsequent calls (for example, to register interfaces). The ProviderCharacteristics parameter points to an NDIS_IF_PROVIDER_CHARACTERISTICS structure that contains the provider's entry points to handle OID query and set requests. NDIS_IF_PROVIDER_CHARACTERISTICS includes the following query and set functions:
For more information about interface provider query and set handlers, see Handling OID Query and Set Requests in an NDIS Interface Provider.
NDIS drivers can call the NdisIfDeregisterProvider function to deregister as a network interface provider. For example, NDIS drivers should deregister as a interface providers when they are unloaded. An interface provider must ensure that it does not have any interfaces registered before it calls NdisIfDeregisterProvider. The provider must not use the provider handle that it passed at the NdisProviderHandle parameter of NdisIfDeregisterProvider after it calls NdisIfDeregisterProvider.