NDIS Objects (Windows Embedded CE 6.0)
1/6/2010
NDIS object identifiers are a collection of system-defined constants of the form OID_XXX. Higher-level NDIS drivers set object identifiers in an NDIS_REQUEST structure for calls to NdisRequest. Each such request is classified as one of the following:
- A Query
A querycalls to retrieve information from or about the underlying NDIS driver, usually about the driver's or NIC's overall capabilities or status.
An NDIS protocol driver sets NdisRequestQueryInformation for the RequestType parameter to NdisRequest when it makes global queries. The MiniportQueryInformation function of an underlying NIC driver handles these global queries. - A Statistics Query
A statistics query calls to retrieve information about network performance.
A statistics query always originates in a user-mode application, always handled by the MiniportQueryInformation function of an underlying NIC driver. Protocol drivers never set NdisRequestQueryStatistics for the RequestType parameter to NdisRequest. - A Set
A set calls with directions for the underlying NDIS driver, such as the header format the protocol wants used for receive indications or a selection value for the miniport to enable on its NIC.
An NDIS protocol driver sets NdisRequestSetInformation for the RequestType parameter to NdisRequest when it makes this type of request. The MiniportSetInformation function of the underlying NIC driver handles set requests.
Many system-defined objects are valid with more than one NdisRequestXXX value. Each NDIS object identified by an OID_XXX has an associated data buffer that varies in size and format. When a function calls NdisRequest, it supplies a pointer to this data buffer using the InformationBuffer member of its NDIS_REQUEST structure.
Object identifiers are either general or media-specific in nature. Support for each NDIS-defined object is either mandatory or optional.
The following table shows the notational meanings for the column headers in the object identifier charts.
Column header | Description |
---|---|
Length |
By default, the value indicates the number of bytes of data associated with the object. 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 object is valid in calls to NdisRequest with RequestType value NdisRequestQueryInformation or, from components other than protocols, NdisRequestQueryStatistics. An O indicates the optional object is valid in the same type of request if the underlying NDIS driver supports the object. |
S |
An M indicates the object is valid in calls to NdisRequest with RequestType value NdisRequestSetInformation. An O indicates the optional object is valid in the same type of request if the underlying NDIS driver supports the object. |
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, Object identifiers of the form OID_TAPI_XXX do not have values that explicitly indicate whether support of each object is mandatory or optional.
Byte (LSB to MSB) | Code | Definition |
---|---|---|
1 |
0xN (unique value) |
Differentiates each object 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) |
|
0x04 |
Wide area network (WAN) |
|
0x07 |
TAPI |
|
0x08 |
Native ATM |
|
0x09 |
Wireless |
|
0x0A |
Reserved for infrared (IrDA) |
|
0xFF |
Vendor-specific information |