Ndis driver
Author: m | 2025-04-24
The NDIS library ( Windows System32 Drivers Ndis.sys) implements the NDIS boundary that exists between TDI transports (typically) and NDIS drivers. As is Tdi.sys, the NDIS library is a helper library that NDIS driver clients use to format commands they send to NDIS drivers. Develop (or port), build, test, and debug your NDIS driver. See the porting guides if you're porting an existing driver: Porting NDIS 6.x Drivers to NDIS 6.40. Porting NDIS 6.x Drivers to NDIS 6.30. Porting NDIS 6.x Drivers to NDIS 6.20. Porting NDIS 5.x Drivers to NDIS 6.0. For more information about iterative building, testing, and debugging
Porting NDIS 6.x drivers to NDIS 6.88 - Windows drivers
Skip to main content This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. Roadmap for Developing NDIS Filter Drivers Article03/14/2023 In this article -->To create a Network Driver Interface Specification (NDIS) filter driver package, follow these steps:Step 1: Learn about Windows architecture and drivers.You must understand the fundamentals of how drivers work in Windows operating systems. Knowing the fundamentals will help you make appropriate design decisions and let you streamline your development process. For more information about driver fundamentals, see Concepts for all driver developers.Step 2: Learn about NDIS.For general information about NDIS and NDIS drivers, see the following topics:Windows Network Architecture and the OSI ModelNetwork Driver Programming ConsiderationsDriver Stack ManagementNET_BUFFER ArchitectureStep 3: Determine additional Windows driver design decisions.For more information about how to make additional Windows design decisions, see Creating Reliable Kernel-Mode Drivers, Programming Issues for 64-Bit Drivers, and Creating International INF Files.Step 4: Learn about the Windows driver build, test, and debug processes and tools.Building a driver differs from building a user-mode application. For more information about Windows driver build, debug, and test processes, driver signing, and Windows Hardware Compatibilty testing, see Developing, Testing, and Deploying Drivers. For more information about building, testing, verifying, and debugging tools, see Driver Development Tools.Step 5: Read the filter driver introduction topics.Step 6: Read the writing protocol drivers section.This section provides an overview of the primary protocol driver interfaces. These interfaces included functions that protocol drivers provide (ProtocolXxx functions) and NDIS calls to initiate operations. NDIS provides NdisXxx functions that protocol drivers call to perform NDIS operations.Step 7: Review the NDIS filter driver sample in the Windows driver samples repository on GitHub.Step 8: Develop (or port), build, test, and debug your NDIS driver.See the porting guides if you are porting an existing driver:Porting NDIS 5.x Drivers to NDIS 6.0Porting NDIS 6.x Drivers to NDIS 6.20Porting NDIS 6.x Drivers to NDIS 6.30For more information about iterative building, testing, and debugging, see Developing, Testing, and Deploying Drivers. This process will help ensure that you build a driver that works.Step 9: Create a driver package for your driver.For more information about how to install drivers, see Providing a Driver Package. For more information about how to install an NDIS driver, see Components and Files Used for Network Component Installation and Notify Objects for Network Components.Step 10: Sign and distribute your driver.The final step is to sign (optional) and distribute the driver. If your driver meets the quality standards that are defined for the Windows Hardware Compatibilty Program, you can distribute it through the Microsoft Windows Update program. For more information about how to distribute a driver, see Get started with the hardware The NDIS library ( Windows System32 Drivers Ndis.sys) implements the NDIS boundary that exists between TDI transports (typically) and NDIS drivers. As is Tdi.sys, the NDIS library is a helper library that NDIS driver clients use to format commands they send to NDIS drivers. Develop (or port), build, test, and debug your NDIS driver. See the porting guides if you're porting an existing driver: Porting NDIS 6.x Drivers to NDIS 6.40. Porting NDIS 6.x Drivers to NDIS 6.30. Porting NDIS 6.x Drivers to NDIS 6.20. Porting NDIS 5.x Drivers to NDIS 6.0. For more information about iterative building, testing, and debugging To simply call each other's routines directly. Because all drivers reside within the system process' address space. On loading, each driver creates and initializes a structure into which it places pointers to the entry points it wishes to export to the other driver, and calls a function in a DLL to store this information. When one driver wishes to call the other, it simply does so through a set of functions provided by the DLL, which calls the appropriate function through one of the previously provided pointers.This is precisely how TDI (Intermediate layer) drivers interface with NDIS drivers. The NDIS wrapper is the common library DLL. When the TDI has a message that it wants the NDIS driver to send, it calls a function in the NDIS wrapper, which in turn directly calls the NDIS driver. The status returned by the NDIS driver is returned by the NDIS wrapper as the status of the TDI's call. Likewise, when the NDIS driver receives a message, it passes that message to the TDI by calling the TDl's Receive function through a function provided by the NDIS wrapper. The Class drivers and SCSI Port drivers use yet another special understanding to facilitate their communication. When it receives an IRP, the Class driver builds an auxiliary data structure called a SCSI Request Block (SRB) in a nonpaged pool. A pointer to this structure is stored in a prearranged field in the SCSI Port driver's J/O Stack location. When the SCSI Port driver receives theComments
Skip to main content This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. Roadmap for Developing NDIS Filter Drivers Article03/14/2023 In this article -->To create a Network Driver Interface Specification (NDIS) filter driver package, follow these steps:Step 1: Learn about Windows architecture and drivers.You must understand the fundamentals of how drivers work in Windows operating systems. Knowing the fundamentals will help you make appropriate design decisions and let you streamline your development process. For more information about driver fundamentals, see Concepts for all driver developers.Step 2: Learn about NDIS.For general information about NDIS and NDIS drivers, see the following topics:Windows Network Architecture and the OSI ModelNetwork Driver Programming ConsiderationsDriver Stack ManagementNET_BUFFER ArchitectureStep 3: Determine additional Windows driver design decisions.For more information about how to make additional Windows design decisions, see Creating Reliable Kernel-Mode Drivers, Programming Issues for 64-Bit Drivers, and Creating International INF Files.Step 4: Learn about the Windows driver build, test, and debug processes and tools.Building a driver differs from building a user-mode application. For more information about Windows driver build, debug, and test processes, driver signing, and Windows Hardware Compatibilty testing, see Developing, Testing, and Deploying Drivers. For more information about building, testing, verifying, and debugging tools, see Driver Development Tools.Step 5: Read the filter driver introduction topics.Step 6: Read the writing protocol drivers section.This section provides an overview of the primary protocol driver interfaces. These interfaces included functions that protocol drivers provide (ProtocolXxx functions) and NDIS calls to initiate operations. NDIS provides NdisXxx functions that protocol drivers call to perform NDIS operations.Step 7: Review the NDIS filter driver sample in the Windows driver samples repository on GitHub.Step 8: Develop (or port), build, test, and debug your NDIS driver.See the porting guides if you are porting an existing driver:Porting NDIS 5.x Drivers to NDIS 6.0Porting NDIS 6.x Drivers to NDIS 6.20Porting NDIS 6.x Drivers to NDIS 6.30For more information about iterative building, testing, and debugging, see Developing, Testing, and Deploying Drivers. This process will help ensure that you build a driver that works.Step 9: Create a driver package for your driver.For more information about how to install drivers, see Providing a Driver Package. For more information about how to install an NDIS driver, see Components and Files Used for Network Component Installation and Notify Objects for Network Components.Step 10: Sign and distribute your driver.The final step is to sign (optional) and distribute the driver. If your driver meets the quality standards that are defined for the Windows Hardware Compatibilty Program, you can distribute it through the Microsoft Windows Update program. For more information about how to distribute a driver, see Get started with the hardware
2025-04-09To simply call each other's routines directly. Because all drivers reside within the system process' address space. On loading, each driver creates and initializes a structure into which it places pointers to the entry points it wishes to export to the other driver, and calls a function in a DLL to store this information. When one driver wishes to call the other, it simply does so through a set of functions provided by the DLL, which calls the appropriate function through one of the previously provided pointers.This is precisely how TDI (Intermediate layer) drivers interface with NDIS drivers. The NDIS wrapper is the common library DLL. When the TDI has a message that it wants the NDIS driver to send, it calls a function in the NDIS wrapper, which in turn directly calls the NDIS driver. The status returned by the NDIS driver is returned by the NDIS wrapper as the status of the TDI's call. Likewise, when the NDIS driver receives a message, it passes that message to the TDI by calling the TDl's Receive function through a function provided by the NDIS wrapper. The Class drivers and SCSI Port drivers use yet another special understanding to facilitate their communication. When it receives an IRP, the Class driver builds an auxiliary data structure called a SCSI Request Block (SRB) in a nonpaged pool. A pointer to this structure is stored in a prearranged field in the SCSI Port driver's J/O Stack location. When the SCSI Port driver receives the
2025-04-08Skip to main content This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. NDIS Network Interface Architecture Article03/14/2023 In this article -->NDIS provides a set of services to support network interfaces and interface stacks. In the WDK, this set of services is referred to as NDIS network interface (NDISIF) services.The following figure shows the NDISIF architecture for NDIS 6.0 and later.The NDISIF components of the architecture include:NDIS IF ServicesAn NDIS component that handles registration of interface providers and interfaces, implements OID query and set services for interface providers, and supplies other NDISIF services.NDIS IF provider interfaceAn interface that the NDIS IF Services component supplies to enable NDIS drivers to implement interface providers.NDIS proxy interface providerAn NDIS component that implements the NDISIF provider services on behalf of NDIS miniport drivers (for each miniport adapter) and filter drivers (for each filter module).Interface providerAn NDIS driver that provides the NDISIF provider services for interfaces that the NDIS proxy interface provider component cannot serve. For example, a MUX intermediate driver can have internal interfaces between its virtual miniports and underlying adapters.The NDIS proxy interface provider uses the standard NDIS miniport driver and NDIS filter driver interfaces to provide NDISIF services for miniport adapters and filter modules. Therefore, miniport drivers and filter drivers are not required to register as interface providers. --> Feedback Additional resources In this article
2025-04-03