INT 21 - Network Driver Interface Spec 2.0.1 - PROTOCOL MANAGER
AX = 4402h
BX = file handle for device "PROTMAN$"
DS:DX -> request block (see below)
CX = 000Eh (size of request block)

Format of request block for GetProtocolManagerInfo:
Offset  Size    Description
00h    WORD    01h
02h    WORD    returned status (see below)
04h    DWORD   returned pointer to structure representing parsed user config
08h    DWORD   unused
0Ch    WORD    returned BCD version of NDIS on which Protocol Manager is based

Format of request block for RegisterModule:
Offset  Size    Description
00h    WORD    02h
02h    WORD    returned status (see below)
04h    DWORD   pointer to module's common characteristics table (see below)
08h    DWORD   pointer to list of modules to which the module is to be bound
0Ch    WORD    unused

Format of request block for BindAndStart:
Offset  Size    Description
00h    WORD    03h
02h    WORD    returned status (see below)
04h    DWORD   caller's virtual address in FailingModules structure
08h    DWORD   unused
0Ch    WORD    unused

Format of request block for GetProtocolManagerLinkage:
Offset  Size    Description
00h    WORD    04h
02h    WORD    returned status (see below)
04h    DWORD   returned dispatch point
08h    DWORD   unused
0Ch    WORD    returned protocol manager DS
Note:   the dispatch point may be called as follows instead of using this IOCTL
STACK: WORD  protocol manager DS
DWORD pointer to request block
Return: AX = returned status
STACK popped

Format of request block for GetProtocolIniPath:
Offset  Size    Description
00h    WORD    05h
02h    WORD    returned status (see below)
04h    DWORD   pointer to a buffer for the ASCIZ pathname of PROTOCOL.INI
08h    DWORD   unused
0Ch    WORD    buffer length

Format of request block for RegisterProtocolManagerInfo:
Offset  Size    Description
00h    WORD    06h
02h    WORD    returned status (see below)
04h    DWORD   pointer to structure containing parsed user config file
08h    DWORD   unused
0Ch    WORD    length of structure

Format of request block for InitAndRegister:
Offset  Size    Description
00h    WORD    07h
02h    WORD    returned status (see below)
04h    DWORD   unused
08h    DWORD   poitner to ASCIZ name of the module to be prebind initialized
0Ch    WORD    unused

Format of request block for UnbindAndStop:
Offset  Size    Description
00h    WORD    08h
02h    WORD    returned status (see below)
04h    DWORD   failing modules as for BindAndStart
08h    DWORD   if not 0000h:0000h, pointer to ASCIZ name of module to unbind
if 0000h:0000h, terminate a set of previously dynamically
bound protocol modules
0Ch    WORD    unused

Format of request block for BindStatus:
Offset  Size    Description
00h    WORD    09h
02h    WORD    returned status (see below)
04h    DWORD   must be 0000h:0000h
on return, points to root tree
08h    DWORD   0000h:0000h
0Ch    WORD    unused under DOS

Format of request block for RegisterStatus:
Offset  Size    Description
00h    WORD    0Ah
02h    WORD    returned status (0000h, 0008h, 002Ch) (see below)
04h    DWORD   0000h:0000h
08h    DWORD   pointer to 16-byte ASCIZ module name
0Ch    WORD    0000h

Values of status code:
0000h success
0001h wait for release--protocol has retained control of the data buffer
0002h request queued
0003h frame not recognized
0004h frame rejected
0005h frame should be forwarded
0006h out of resource
0007h invalid parameter
0008h invalid function
0009h not supported
000Ah hardware error
000Bh transmit error
000Ch unrecognized destination
000Dh buffer too small
0020h already started
0021h binding incomplete
0022h driver not initialized
0023h hardware not found
0024h hardware failure
0025h configuration failure
0026h interrupt conflict
0027h MAC incompatible
0028h initialization failed
0029h no binding
002Ah network may be disconnected
002Bh incompatible OS version
002Ch already registered
002Dh path not found
002Eh insufficient memory
002Fh info not found
00FFh general failure
F000h-FFFFh reserved for vendor-specific codes, treated as general failure

Format of common characteristics table:
Offset  Size    Description
00h    WORD    size of table in bytes
02h    BYTE    NDIS major version
03h    BYTE    NDIS minor version
04h    WORD    reserved
06h    BYTE    module major version
07h    BYTE    module minor version
08h    DWORD   module function flag bits
bit 0: binding at upper boundary supported
bit 1: binding at lower boundary supported
bit 2: dynamically bound
bits 3-31 reserved, must be 0
0Ch 16 BYTEs   ASCIZ module name
1Ch    BYTE    upper boundary protocol level
01h Media Access Control
02h Data link
03h network
04h transport
05h session
FFh not specified
1Dh    BYTE    upper boundary interface type
for MACs: 1 = MAC
for data links and transports: to be defined
for session: 1 = NCB
any level: 0 = private (ISV-defined)
1Eh    BYTE    lower boundary protocol level
00h physical
01h Media Access Control
02h Data link
03h network
04h transport
05h session
FFh not specified
1Fh    BYTE    lower boundary interface type
same as offset 1Dh
20h    WORD    module ID filled in by protocol manager
22h    WORD    module DS
24h    DWORD   system request entry point
28h    DWORD   pointer to service-specific characteristics
0000h:0000h if none
2Ch    DWORD   pointer to service-specific status
0000h:0000h if none
30h    DWORD   pointer to upper dispatch table (see below)
0000h:0000h if none
34h    DWORD   pointer to lower dispatch table (see below)
0000h:0000h if none
38h    DWORD   reserved, must be 0
3Ch    DWORD   reserved, must be 0
Note:   for compatibility with NDIS 1.x.x, a major version of 00h is
interpreted as 01h

Format of MAC Service-Specific Characteristics Table:
Offset  Size    Description
00h    WORD    length of table in bytes
02h 16 BYTEs   ASCIZ MAC type name, "802.3", "802.4", "802.5", "802.6", "DIX",
"DIX+802.3", "APPLETALK", "ARCNET", "FDDI", "SDLC", "BSC",
"HDLC", or "ISDN"
12h    WORD    length of station addresses in bytes
14h 16 BYTEs   permanent station address
24h 16 BYTEs   current station address
34h    DWORD   current functional adapter address (00000000h if none)
38h    DWORD   pointer to multicast address list
3Ch    DWORD   link speed in bits/sec
40h    DWORD   service flags
bit 0: supports broadcast
1: supports multicast
2: supports functional/group addressing
3: supports promiscuous mode
4: station address software settable
5: statistics always current
6: supports InitiateDiagnostics
7: supports loopback
8: MAC does primarily ReceiveChain indications instead of
ReceiveLookahead indications
9: supports IBM source routing
10: supports MAC reset
11: supports Open/Close adapter
12: supports interrupt request
13: supports source routing bridge
14: supports GDT virtual addresses (OS/2 version)
15: multiple TransferDatas allowed durign a single
indication
16: MAC normally sets FrameSize = 0 in ReceiveLookahead
17-31: reserved, must be 0
44h    WORD    maximum frame size which may be both sent and received
46h    DWORD   total transmit buffer capacity in bytes
4Ah    WORD    transmit buffer allocation block size in bytes
4Ch    DWORD   total receive buffer capacity in bytes
50h    WORD    receive buffer allocation block size in bytes
52h  3 BYTEs   IEEE vendor code
55h    BYTE    vendor adapter code
56h    DWORD   pointer to ASCIZ vendor adapter description
5Ah    WORD    IRQ used by adapter
5Ch    WORD    transmit queue depth
5Eh    WORD    maximum supported number of data blocks in buffer descriptors
60h  N BYTEs   vendor-specific info

Format of NetBIOS Service-Specific Characteristics Table
Offset  Size    Description
00h    WORD    length of table in bytes
02h 16 BYTEs   ASCIZ type name of NetBIOS module
12h    WORD    NetBIOS module code
14h  N BYTEs   vendor-specific info

Format of MAC Service-Specific Status Table:
Offset  Size    Description
00h    WORD    length of table in bytes
02h    DWORD   seconds since 0:00 1/1/70 when diagnostics last run
(FFFFFFFFh = never)
06h    DWORD   MAC status bits
bits 0-2: 000 hardware not installed
001 hardware failed startup diagnostics
010 hardware configuration problem
011 hardware fault
100 operating marginally due to soft faults
101 reserved
110 reserved
111 hardware fully operational
bit 3:    MAC bound
4:    MAC open
5:    diagnostics in progress
6-31: reserved
0Ah    WORD    current packet filter flags
bit 0: directed/multicast or group/functional
1: broadcast
2: promiscuous
3: all source routing
4-15: reserved, must be zero
0Ch    DWORD   pointer to media-specific status table or 0000h:0000h
10h    DWORD   seconds past 0:00 1/1/70 of last ClearStatistics
14h    DWORD   total frames received (FFFFFFFFh = not counted)
18h    DWORD   frames with CRC error (FFFFFFFFh = not counted)
1Ch    DWORD   total bytes received (FFFFFFFFh = not counted)
20h    DWORD   frames discarded--no buffer space (FFFFFFFFh = not counted)
24h    DWORD   multicast frames received (FFFFFFFFh = not counted)
28h    DWORD   broadcast frames received (FFFFFFFFh = not counted)
2Ch    DWORD   frames with errors (FFFFFFFFh = not counted)
30h    DWORD   overly large frames (FFFFFFFFh = not counted)
34h    DWORD   frames less than minimum size (FFFFFFFFh = not counted)
38h    DWORD   multicast bytes received (FFFFFFFFh = not counted)
3Ch    DWORD   broadcast bytes received (FFFFFFFFh = not counted)
40h    DWORD   frames discarded--hardware error (FFFFFFFFh = not counted)
44h    DWORD   total frames transmitted (FFFFFFFFh = not counted)
48h    DWORD   total bytes transmitted (FFFFFFFFh = not counted)
4Ch    DWORD   multicast frames transmitted (FFFFFFFFh = not counted)
50h    DWORD   broadcast frames transmitted (FFFFFFFFh = not counted)
54h    DWORD   broadcast bytes transmitted (FFFFFFFFh = not counted)
58h    DWORD   multicast bytes transmitted (FFFFFFFFh = not counted)
5Ch    DWORD   frames not transmitted--timeout (FFFFFFFFh = not counted)
60h    DWORD   frames not transmitted--hardware error (FFFFFFFFh = not countd)
64h  N BYTEs   vendor-specific info


214402 - Network Driver Interface Spec 2.0.1 - PROTOCOL MANAGER