Below is a template for a USB Remote NDIS Device INF file.  Lines that require an IHV specific change are shown as hyperlinks.  Click on the line to jump to a description of the requirement.  For more information refer to the Windows DDK Network Installation section.

 

You should name your INF file carefully to attempt to avoid collisions with existing INF file names.  Note you should limit it to 8.3 format if you ever expect the INF file to appear on media that doesn’t support long names.  For example use something with your vendor name in it like AcmeRndi.inf. Do not use a generic name like rndis.inf.

 

The layout of the files on the media you use to distribute the INF and drivers should be a single directory containing the following files:

xxxxxxxx.INF  (your INF file with xxxxxxxx changed appropriately)

license.txt   (the Supplemental End User License Agreement for RNDIS USB drivers)

usb8023k.sys  (the binary drivers for Windows 2000)

rndismpk.sys

usb8023w.sys  (the binary drivers for Windows 98 & Windows 98 SE)

rndismpw.sys

usb8023m.sys  (the binary drivers for Windows Me)

rndismpm.sys

 

 

; Start of Template INF for a USB Remote NDIS Device

 

[Version]

Signature           = "$CHICAGO$"

Class               = Net

ClassGUID           = {4d36e972-e325-11ce-bfc1-08002be10318}

Provider            = %Acme%

Compatible          = 1

MillenniumPreferred = .ME

DriverVer           = mm/dd/yyyy,x.y.v.z

CatalogFile         = Acme.cat

 

[Manufacturer]

%Acme%          = AcmeDevices,NT.5.1

 

[AcmeDevices]

%AcmeDevice%    = RNDIS, USB\VID_vvvv&PID_pppp

 

[AcmeDevices.NT.5.1]

%AcmeDevice%    = RNDIS.NT.5.1, USB\VID_vvvv&PID_pppp

 

[ControlFlags]

ExcludeFromSelect=*

 

; Windows 98, Windows 98 Second Edition specific sections --------

 

[RNDIS]

DeviceID        = usb8023

MaxInstance     = 512

DriverVer       = mm/dd/yyyy,x.y.v.z

AddReg          = RNDIS_AddReg_98, RNDIS_AddReg_Common

 

[RNDIS_AddReg_98]

HKR, ,               DevLoader,        0, *ndis

HKR, ,               DeviceVxDs,       0, usb8023.sys

HKR, NDIS,           LogDriverName,    0, "usb8023"

HKR, NDIS,           MajorNdisVersion, 1, 5

HKR, NDIS,           MinorNdisVersion, 1, 0

HKR, Ndi\Interfaces, DefUpper,         0, "ndis3,ndis4,ndis5"

HKR, Ndi\Interfaces, DefLower,         0, "ethernet"

HKR, Ndi\Interfaces, UpperRange,       0, "ndis3,ndis4,ndis5"

HKR, Ndi\Interfaces, LowerRange,       0, "ethernet"

HKR, Ndi\Install,    ndis3,            0, "RNDIS_Install_98"

HKR, Ndi\Install,    ndis4,            0, "RNDIS_Install_98"

HKR, Ndi\Install,    ndis5,            0, "RNDIS_Install_98"

HKR, Ndi,            DeviceId,         0, "USB\VID_vvvv&PID_pppp"

 

[RNDIS_Install_98]

CopyFiles=RNDIS_CopyFiles_98

 

[RNDIS_CopyFiles_98]

usb8023.sys, usb8023w.sys, , 0

rndismp.sys, rndismpw.sys, , 0

 

; Windows Millennium Edition specific sections --------------------

 

[RNDIS.ME]

DeviceID        = usb8023

MaxInstance     = 512

DriverVer       = mm/dd/yyyy,x.y.v.z

AddReg          = RNDIS_AddReg_ME, RNDIS_AddReg_Common

 

[RNDIS_AddReg_ME]

HKR, ,               DevLoader,        0, *ndis

HKR, ,               DeviceVxDs,       0, usb8023.sys

HKR, NDIS,           LogDriverName,    0, "usb8023"

HKR, NDIS,           MajorNdisVersion, 1, 5

HKR, NDIS,           MinorNdisVersion, 1, 0

HKR, Ndi\Interfaces, DefUpper,         0, "ndis3,ndis4,ndis5"

HKR, Ndi\Interfaces, DefLower,         0, "ethernet"

HKR, Ndi\Interfaces, UpperRange,       0, "ndis3,ndis4,ndis5"

HKR, Ndi\Interfaces, LowerRange,       0, "ethernet"

HKR, Ndi\Install,    ndis3,            0, "RNDIS_Install_ME"

HKR, Ndi\Install,    ndis4,            0, "RNDIS_Install_ME"

HKR, Ndi\Install,    ndis5,            0, "RNDIS_Install_ME"

HKR, Ndi,            DeviceId,         0, "USB\VID_vvvv&PID_pppp"

 

[RNDIS_Install_ME]

CopyFiles=RNDIS_CopyFiles_ME

 

[RNDIS_CopyFiles_ME]

usb8023.sys, usb8023m.sys, , 0

rndismp.sys, rndismpm.sys, , 0

 

; Windows 2000 specific sections ---------------------------------

 

[RNDIS.NT]

Characteristics = 0x84   ; NCF_PHYSICAL + NCF_HAS_UI

BusType         = 15

DriverVer       = mm/dd/yyyy,x.y.v.z

AddReg          = RNDIS_AddReg_NT, RNDIS_AddReg_Common

CopyFiles       = RNDIS_CopyFiles_NT

 

[RNDIS.NT.Services]

AddService = USB_RNDIS, 2, RNDIS_ServiceInst_NT, RNDIS_EventLog

 

[RNDIS_CopyFiles_NT]

; no rename of files on Windows 2000, use the 'k' names as is

usb8023k.sys, , , 0

rndismpk.sys, , , 0

 

[RNDIS_ServiceInst_NT]

DisplayName     = %ServiceDisplayName%

ServiceType     = 1

StartType       = 3

ErrorControl    = 1

ServiceBinary   = %12%\ usb8023k.sys

LoadOrderGroup  = NDIS

AddReg          = RNDIS_WMI_AddReg_NT

 

[RNDIS_WMI_AddReg_NT]

HKR, , MofImagePath, 0x00020000, "System32\drivers\rndismpk.sys"

 

; Windows XP specific sections -----------------------------------

 

[RNDIS.NT.5.1]

Characteristics = 0x84   ; NCF_PHYSICAL + NCF_HAS_UI

BusType         = 15

DriverVer       = mm/dd/yyyy,x.y.v.z

AddReg          = RNDIS_AddReg_NT, RNDIS_AddReg_Common

; no copyfiles - the files are already in place

 

[RNDIS.NT.5.1.Services]

AddService      = USB_RNDIS, 2, RNDIS_ServiceInst_51, RNDIS_EventLog

 

[RNDIS_ServiceInst_51]

DisplayName     = %ServiceDisplayName%

ServiceType     = 1

StartType       = 3

ErrorControl    = 1

ServiceBinary   = %12%\usb8023.sys   

LoadOrderGroup  = NDIS

AddReg          = RNDIS_WMI_AddReg_51

 

[RNDIS_WMI_AddReg_51]

HKR, , MofImagePath, 0x00020000, "System32\drivers\rndismp.sys"

 

; Windows 2000 and Windows XP common sections --------------------

 

[RNDIS_AddReg_NT]

HKR, Ndi,               Service,        0, "USB_RNDIS"

HKR, Ndi\Interfaces,    UpperRange,     0, "ndis5"

HKR, Ndi\Interfaces,    LowerRange,     0, "ethernet"

 

[RNDIS_EventLog]

AddReg = RNDIS_EventLog_AddReg

 

[RNDIS_EventLog_AddReg]

HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll"

HKR, , TypesSupported,   0x00010001, 7

 

; Common Sections -------------------------------------------------

 

[RNDIS_AddReg_Common]

HKR, NDI\params\NetworkAddress, ParamDesc, 0, %NetworkAddress%

HKR, NDI\params\NetworkAddress, type,      0, "edit"

HKR, NDI\params\NetworkAddress, LimitText, 0, "12"

HKR, NDI\params\NetworkAddress, UpperCase, 0, "1"

HKR, NDI\params\NetworkAddress, default,   0, " "

HKR, NDI\params\NetworkAddress, optional,  0, "1"

 

[SourceDisksNames]

1=%SourceDisk%,,0

 

[SourceDisksFiles]

usb8023m.sys=1

rndismpm.sys=1

usb8023w.sys=1

rndismpw.sys=1

usb8023k.sys=1

rndismpk.sys=1

 

[DestinationDirs]

RNDIS_CopyFiles_98    = 10, system32/drivers

RNDIS_CopyFiles_ME    = 10, system32/drivers

RNDIS_CopyFiles_NT = 12

 

[Strings]

ServiceDisplayName          = "Remote NDIS USB Network Device Driver"

NetworkAddress              = "Network Address"

Acme                        = "Acme Corporation"

AcmeDevice                  = "Acme USB Remote NDIS Network Device"

SourceDisk                  = "Acme USB Network Driver Install Disk"

 

; End of Template INF for a USB Remote NDIS Device

 

The following are descriptions of the changes you need to make to the template INF for your RNDIS device.

 

INF Version Section

 

Provider = %Acme%

Replace the word Acme with a short word that represents your company name.  Note the resultant string token that replaces %Acme% must be present in the strings section at the bottom of the INF with a string that more fully represents the name of your company.  This same string token should be used in the Manufacturer Section.

Example: Provider = %IHV%

 

DriverVer = mm/dd/yyyy,x.y.v.z

Replace mm/dd/yy with the date, and x.y.v.z with the version number contained in the resources of the driver binary.

Example:  DriverVer = 10/30/2000,1.0.0.0

 

;CatalogFile = Acme.cat

This line is for specifying the catalog file that is provided when you submit your driver package to WHQL and get it signed.  Replace the word Acme with a short word that represents your company name.  Leave it commented (;) until you submit your package to WHQL. 

Example: CatalogFile = IHV.cat.

 

INF Manufacturer Section

 

%Acme% = AcmeDevices,NT.5.1

As with the previous line, replace the string “Acme” with a short word that represents your company name. Note the resultant string token that replaces %Acme% must be present in the strings section at the bottom of the INF with a string that more fully represents the name of your company.  This same string token should be used in the Version section with the Provider Keyword.

Example:  %IHV% = IHVDevices,NT.5.1

 

INF Models Section

 

[AcmeDevices]

[AcmeDevices.NT.5.1]

Replace the string AcmeDevices with the string that as used in the Manufacturer Section above.

Example: [IHVDevices]

 

%AcmeDevice%       = RNDIS, USB\VID_vvvv&PID_pppp

Replace the string AcmeDevice with a string that represents your device.  Note that the resultant string token that replaces %AcmeDevice% must be present in the strings section at the bottom of the INF with a string that more fully represents the name of your device. 

Replace the vvvv and pppp strings with the Vendor ID and Product ID of your device respectively.

Example: %IHVNetDevice%       = RNDIS, USB\VID_05E9&PID_0040

 

INF Undecorated (Win98) DDInstall Section

 

DriverVer       = mm/dd/yyyy,x.y.v.z

Make this line the same as the one used in the INF Version Section above.

 

INF Win98 Specific AddReg Section

 

HKR, Ndi,            DeviceId,         0, "USB\VID_vvvv&PID_pppp"

Replace the vvvv and pppp strings with the Vendor ID and Product ID of your device respectively.  This must be the same PnP string used in the Models Section above.

 

INF WinMe DDInstall Section

 

DriverVer       = mm/dd/yyyy,x.y.v.z

Make this line the same as the one used in the INF Version Section above.

 

INF WinMe Specific AddReg Section

 

HKR, Ndi,            DeviceId,         0, "USB\VID_vvvv&PID_pppp"

Replace the vvvv and pppp strings with the Vendor ID and Product ID of your device respectively.  This must be the same PnP string used in the Models Section above.

 

INF NT DDInstall Section

 

DriverVer       = mm/dd/yyyy,x.y.v.z

Make this line the same as the one used in the INF Version Section above.

 

INF NT.5.1 DDInstall Section

 

DriverVer       = mm/dd/yyyy,x.y.v.z

Make this line the same as the one used in the INF Version Section above.

 

INF Common AddReg Section

 

The one advanced parameter that is described here is required by all devices.  You can add additional advanced parameters here by adding more NDIparams keys for your device.  The complete documentation on adding advanced parameters here is in the DDK.

 

INF Strings Section

 

The three string tags and strings should be changed appropriately for your company name and device names.