Chapter 5  NDIS Object Identifiers

This chapter describes NDIS object identifiers, the set of system-defined constants of the form OID_XXX, that higher-level NDIS drivers set in an NDIS_REQUEST-type structure for their calls to NdisRequest. Each such request is classified as one of the following:

·A query is a call to retrieve information from or about the underlying NDIS driver, usually about the driver’s or NIC’s overall capabilities or current status.

An NDIS protocol driver sets NdisRequestQueryInformation for the RequestType parameter to NdisRequest when it makes global queries. Such requests are handled by the MiniportQueryInformation functions of underlying NIC drivers.

·A statistics query is a call to retrieve information about network performance. Such a request always originates in a user-mode application. Protocol drivers never set NdisRequestQueryStatistics for the RequestType parameter to NdisRequest. Such requests are handled either by NDIS or by the MiniportQueryInformation functions of underlying NIC drivers.

·A set is a call with directions for the underlying NDIS driver, such as the header format the protocol wants used for receive indications when the underlying driver offers a choice or which optional features the miniport should enable on its NIC.

An NDIS protocol driver sets NdisRequestSetInformation for the RequestType parameter to NdisRequest when it makes this type of request. Such requests are handled by the MiniportSetInformation functions of underlying NIC drivers.

Many system-defined OIDs are valid with more than one of the preceding NdisRequestXxx values. Associated with each NDIS object identified by an OID_XXX is a data buffer, which varies in size and format depending on the given OID. The caller of NdisRequest supplies a pointer to this data buffer in the InformationBuffer member of the NDIS_REQUEST structure.

OIDs are either general or media-specific in nature. Each defined OID is either an operational OID or a statistics OID. Support for each NDIS-defined OID is either mandatory or optional.

Some of the information about OIDs is presented in charts. For each entry (row), these charts contain the information summarized in Table 5.1.

Table 5.1    Key to OID Charts

Column Header Notation Meaning
Length By default, the value indicates the number of bytes of data associated with the OID.

For counters, a length of 4 indicates a 32-bit counter and 8 indicates a 64-bit counter.

The NIC driver cannot reset counters; counters wrap when they reach their maximum.

Values expressed in the form Arr(n), indicate an array of elements, each of size n.The underlying driver stores array elements consecutively, with no padding.

Q An “M” indicates the OID is valid in calls to NdisRequest with RequestType value NdisRequestQueryInformation or, from components other than protocols, NdisRequestQueryStatistics. An “O” indicates the optional OID is valid in the same type of request if the underlying NDIS driver supports the OID.
S An “M” indicates the OID is valid in calls to NdisRequest with RequestType value NdisRequestSetInformation. An “O” indicates the optional OID is valid in the same type of request if the underlying NDIS driver supports the OID.
Name The system-defined OID_XXX, followed by a brief explanation of the constant name.

NDIS-defined OID_XXX constants are 4-byte values, encoded as shown in the following chart. However, OIDs of the form OID_TAPI_XXX do not have values that explicitly indicate whether support of each OID is mandatory or optional.

Byte
(LSB to MSB)

Code(s)

Definition
1 0xN
(unique value)
Differentiates each OID from others with the same value in the three high-order bytes.
2 0x01 Mandatory
0x02 Optional
3 0x01 Operational Characteristics
0x02 Statistics
4 0x00 General Information
0x01-0xFE System-defined media-specific information, as follows:
0x01 Ethernet (802.3)
0x02 Token Ring (802.5)
0x03 Fiber Distributed Data Interface (FDDI)
0x05 LocalTalk
0x06 ARCNET
0x04 Wide area network (WAN)
0x07 TAPI
0x08 Reserved for future (native ATM)
0x09 Wireless
0x0A Reserved for infrared (IrDA)
0xFF Implementation-specific information

See the following for OID-specific references:

5.1  General Objects

5.2  Ethernet Objects

5.3  Token Ring Objects

5.4  FDDI Objects

5.5  LocalTalk Objects

5.6  ARCNET Objects

5.7  WAN Objects

5.8  TAPI Objects

5.9  Wireless Objects