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 = "$
Class = Net
ClassGUID =
{4d36e972-e325-11ce-bfc1-08002be10318}
Compatible = 1
MillenniumPreferred
= .ME
DriverVer
= mm/dd/yyyy,x.y.v.z
[Manufacturer]
%AcmeDevice% = RNDIS,
USB\VID_vvvv&PID_pppp
%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
-------------------------------------------------
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"
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.
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%
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
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.
%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
[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
DriverVer = mm/dd/yyyy,x.y.v.z
Make this line the same as the one used in the INF Version Section above.
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.
DriverVer = mm/dd/yyyy,x.y.v.z
Make this line the same as the one used in the INF Version Section above.
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.
DriverVer = mm/dd/yyyy,x.y.v.z
Make this line the same as the one used in the INF Version Section above.
DriverVer = mm/dd/yyyy,x.y.v.z
Make this line the same as the one used in the INF Version Section above.
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.
The three string tags and strings should be changed appropriately for your company name and device names.