The solution is to provide a driver that will specifically handle USB PID0525&VIDA4A2. It is just a dummy driver that will tell the OS our 'Linux USB Gadget' should be handled as a remote NDIS device. Windows has been shipping with the RNDIS driver bundled in for quite some time now, so it's basically a matter of a simple declaration. Oct 28, 2019 NDIS providers are individuals or organisations that deliver a support or service to a participant of the NDIS. Becoming an NDIS provider Supports and services funded by the NDIA, eligibility and requirements, and how to register.
![](/uploads/1/2/7/7/127753626/757988873.jpg)
Specification
It was jointly developed by Microsoft and 3Com Corporation and is mostly used in Microsoft Windows. However, the open-sourceNDISwrapper and Project Evildriver wrapper projects allow many NDIS-compliant NICs to be used with Linux, FreeBSD and NetBSD. magnussoft ZETA, a derivative of BeOS, supports a number of NDIS drivers.
Microsoft Corporation is an American multinational technology company with headquarters in Redmond, Washington. It develops, manufactures, licenses, supports and sells computer software, consumer electronics, personal computers, and related services. Its best known software products are the Microsoft Windows line of operating systems, the Microsoft Office suite, and the Internet Explorer and Edge Web browsers. Its flagship hardware products are the Xbox video game consoles and the Microsoft Surface lineup of touchscreen personal computers. As of 2016, it is the world's largest software maker by revenue, and one of the world's most valuable companies. The word 'Microsoft' is a portmanteau of 'microcomputer' and 'software'. Microsoft is ranked No. 30 in the 2018 Fortune 500 rankings of the largest United States corporations by total revenue.
![Windows Windows](http://i.ebayimg.com/images/i/292053854149-0-1/s-l1000.jpg)
Microsoft Windows is a group of several graphical operating system families, all of which are developed, marketed and sold by Microsoft. Each family caters to a certain sector of the computing industry. Active Microsoft Windows families include Windows NT and Windows IoT; these may encompass subfamilies, e.g. Windows Server or Windows Embedded Compact. Defunct Microsoft Windows families include Windows 9x, Windows Mobile and Windows Phone.
An open-source license is a type of license for computer software and other products that allows the source code, blueprint or design to be used, modified and/or shared under defined terms and conditions. This allows end users and commercial companies to review and modify the source code, blueprint or design for their own customization, curiosity or troubleshooting needs. Open-source licensed software is mostly available free of charge, though this does not necessarily have to be the case. Licenses which only permit non-commercial redistribution or modification of the source code for personal use only are generally not considered as open-source licenses. However, open-source licenses may have some restrictions, particularly regarding the expression of respect to the origin of software, such as a requirement to preserve the name of the authors and a copyright statement within the code, or a requirement to redistribute the licensed software only under the same license. One popular set of open-source software licenses are those approved by the Open Source Initiative (OSI) based on their Open Source Definition (OSD).
The NDIS forms the logical link control (LLC) sublayer, which is the upper sublayer of the OSIdata link layer (layer 2). Therefore, the NDIS acts as the interface between the media access control (MAC) sublayer, which is the lower sublayer of the data link layer, and the network layer (layer 3).
In the IEEE 802 reference model of computer networking, the logical link control (LLC) data communication protocol layer is the upper sublayer of the data link layer of the seven-layer OSI model. The LLC sublayer provides multiplexing mechanisms that make it possible for several network protocols to coexist within a multipoint network and to be transported over the same network medium. It can also provide flow control and automatic repeat request (ARQ) error management mechanisms.
The Open Systems Interconnection model is a conceptual model that characterizes and standardizes the communication functions of a telecommunication or computing system without regard to its underlying internal structure and technology. Its goal is the interoperability of diverse communication systems with standard communication protocols. The model partitions a communication system into abstraction layers. The original version of the model had seven layers.
The data layer, or layer 2, is the second layer of the seven-layer OSI model of computer networking. This layer is the protocol layer that transfers data between adjacent network nodes in a wide area network (WAN) or between nodes on the same local area network (LAN) segment. The data link layer provides the functional and procedural means to transfer data between network entities and might provide the means to detect and possibly correct errors that may occur in the physical layer.
The NDIS is a library of functions often referred to as a 'wrapper' that hides the underlying complexity of the NIC hardware and serves as a standard interface for level 3 network protocol drivers and hardware level MAC drivers.
A driver wrapper is a subroutine in a software library that functions as an adapter between an operating system and a driver, such as a device driver, that was not designed for that operating system. It can enable the use of devices for which no drivers for the particular operating system are available. In particular, as of 2010 Microsoft Windows is the dominant family of operating systems for IBM PC compatible computers, and many devices are supplied with drivers for Windows but not other operating systems.
The NDIS versions supported by various Windows versions are as follows:
- NDIS 2.0: MS-DOS, Windows for Workgroups 3.1, OS/2
- NDIS 3.0: Windows for Workgroups 3.11
- NDIS 3.1: Windows 95
- NDIS 4.0: Windows 95 OSR2, NT 4.0, Windows CE 3.0
- NDIS 5.0: Windows 98, 98 SE, Me, 2000
- NDIS 5.1: Windows XP, Server 2003, Windows CE 4.x, 5.0, 6.0[1]
- NDIS 5.2: Windows Server 2003 SP2
- NDIS 6.0: Windows Vista
- NDIS 6.1: Windows Vista SP1, Server 2008, Windows Embedded Compact 7,[2] Windows Embedded Compact 2013
- NDIS 6.20: Windows 7, Server 2008 R2
- NDIS 6.30: Windows 8, Windows Server 2012
- NDIS 6.40: Windows 8.1, Windows Server 2012 R2
- NDIS 6.50: Windows 10, version 1507[3]
- NDIS 6.60: Windows Server 2016 and Windows 10, version 1607[3]
- NDIS 6.70: Windows 10, version 1703[3]
- NDIS 6.80: Windows 10, version 1709[3]
- NDIS 6.81: Windows 10, version 1803[3]
- NDIS 6.82: Windows 10, version 1809[3]
- NDIS 6.83: Windows 10, version 1903[3]
MS-DOS is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and some operating systems attempting to be compatible with MS-DOS, are sometimes referred to as 'DOS'. MS-DOS was the main operating system for IBM PC compatible personal computers during the 1980s and the early 1990s, when it was gradually superseded by operating systems offering a graphical user interface (GUI), in various generations of the graphical Microsoft Windows operating system.
Windows 3.1x is a series of 16-bit operating environments produced by Microsoft for use on personal computers, released on April 6, 1992. The series began with Windows 3.1, which was first sold during April 1992 as a successor to Windows 3.0. Subsequent versions were released between 1992 and 1993 until the series was superseded by the Windows 9x series starting in 1995 with Windows 95. During its lifespan, Windows 3.1 introduced several enhancements to the still MS-DOS-based platform, including improved system stability, expanded support for multimedia, TrueType fonts, and workgroup networking.
OS/2 is a series of computer operating systems, initially created by Microsoft and IBM under the leadership of IBM software designer Ed Iacobucci. As a result of a feud between the two companies over how to position OS/2 relative to Microsoft's new Windows 3.1 operating environment, the two companies severed the relationship in 1992 and OS/2 development fell to IBM exclusively. The name stands for 'Operating System/2', because it was introduced as part of the same generation change release as IBM's 'Personal System/2 (PS/2)' line of second-generation personal computers. The first version of OS/2 was released in December 1987 and newer versions were released until December 2001.
The traffic accepted by the NIC is controlled by an NDIS miniport Driver while various protocols, such as TCP/IP, are implemented by NDIS Protocol Drivers. A single miniport may be associated with one or more protocols. This means that traffic coming into the miniport may be received in parallel by several protocol drivers. For example, Winpcap adds a second protocol driver on the selected miniport in order to capture incoming packets. Furthermore, it is possible to simulate several virtual NICs by implementing virtual miniport drivers that send and receive traffic from a single physical NIC. One example of virtual miniport driver usage is to add virtual NICs, each with a different Virtual LAN. Because implementations cannot assume that other drivers received the same buffers, one must treat the incoming buffers as read only and a driver that changes the packet content must allocate its own buffers.
In the field of computer network administration, pcap is an application programming interface (API) for capturing network traffic. While the name is an abbreviation of a technical term of art (jargon) packet capture, that is not the API's proper name. Unix-like systems implement pcap in the libpcap library; for Windows, there is a port of libpcap named WinPcap that is no longer supported or developed, and a port named Npcap for Windows 7 and later that is still supported.
A virtual LAN (VLAN) is any broadcast domain that is partitioned and isolated in a computer network at the data link layer. LAN is the abbreviation for local area network and in this context virtual refers to a physical object recreated and altered by additional logic. VLANs work by applying tags to network frames and handling these tags in networking systems – creating the appearance and functionality of network traffic that is physically on a single network but acts as if it is split between separate networks. In this way, VLANs can keep network applications separate despite being connected to the same physical network, and without requiring multiple sets of cabling and networking devices to be deployed.
A miniport is a type of hardware driver, part of the Windows Driver Model. These are USB, Audio, SCSI and network card adapters. They should usually be source and binary compatible between Windows 98 and Windows 2000 and are hardware specific but control access to the hardware through a specific bus class driver.[4]
Another driver type is NDIS Intermediate Driver. Intermediate drivers sit in-between the MAC and IP layers and can control all traffic being accepted by the NIC. In practice, intermediate drivers implement both miniport and protocol interfaces. The miniport driver and protocol driver actually communicate with the corresponding miniport and protocol interfaces that reside in the intermediate driver. This design enables adding several chained intermediate drivers between the miniport and protocol drivers. Therefore, driver vendors cannot assume that the interface that they send traffic to is implemented by the last driver in the chain. In order to write applications using NDIS, one can use samples that accompany Microsoft's Windows Driver Kit (WDK). The 'PassThru' sample is a good starting point for intermediate drivers as it implements all the necessary details required in this driver type, but just passes the traffic through to the next driver in the chain.
page_type | description | languages | products |
---|---|---|---|
Demonstrates a connection-less NDIS 6.0 protocol WDM driver.
|
|
This sample demonstrates a connection-less NDIS 6.0 protocol WDM driver. The driver supports sending and receiving raw Ethernet frames using
ReadFile
/WriteFile
calls from user-mode. It only receives frames with a specific EtherType field. As an NDIS protocol, it illustrates how to establish and tear down bindings to Ethernet adapters, i.e. those that export medium type NdisMedium802_3. It shows how to set a packet filter, send and receive data, and handle plug-and-play events.
Installation
The driver is installed using the INF file ndisprot.inf, which is provided in the driver directory. In Network Connections UI, select an adapter and open Properties.
Click Install, then Protocol, then Add, and then Have disk. Then point to the location of the .inf and driver.
Select Sample NDIS Protocol Driver and click OK. After installing the protocol, copy over the test application prottest.exe to a convenient location. Please note that the driver service has been set to manual start in the INF file. As a result, it doesn't get loaded automatically when you install.
Usage
To start the driver, type
Net start ndisprot
.
To stop the driver, type
Net stop ndisprot
.
To test the driver, run
prottest
. For help on usage, run prottest -?
usage: PROTTEST [options] devicename
Options | description |
---|---|
-e | Enumerate devices |
-r | Read |
-w | Write (default) |
-l | : length of each packet (default: 100) |
-n | : number of packets (defaults to infinity) |
-m | (defaults to local MAC) |
Prottest exercises the IOCTLs supported by NDISPROT, and sends and/or receives data on the selected device. In order to use prottest, the user must have administrative privilege. Users should pass down a big enough buffer in order to receive the entire received data. If the length of the buffer passed down is smaller than the length of the received data, NDISPROT will only copy part of the data and discard the rest when the given buffer is full.
Use the -e option to enumerate all devices to which NDISPROT is bound:
[!NOTE]With a checked version of ndisprot.sys, you can control the volume of debug information generated by changing the variable
ndisprotDebugLevel
. Refer to debug.h for more information.
For more information, see NDIS Protocol Drivers in the network devices design guide.
File Manifest
File | description |
---|---|
prottest.c | User-mode test application |
debug.c | Routines to aid debugging |
debug.h | Debug macro definitions |
macros.h | Spinlock, event, referencing macros |
ndisbind.c | NDIS protocol entry points to handle binding/unbinding from adapters |
ndisprot.h | Data structure definitions |
ndisprot.inf | INF file for installing NDISPROT |
ntdisp.c | NT Entry points and dispatch routines for NDISPROT |
protuser.h | IOCTL and associated structure definitions |
recv.c | NDIS protocol entry points for receiving data, and IRP_MJ_READ processing |
send.c | NDIS protocol routines for sending data, and IRP_MJ_WRITE processing |
![](/uploads/1/2/7/7/127753626/757988873.jpg)