Querying or Setting Information (NDIS 5.1)
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
A connection-oriented client or call manager calls NdisCoRequestto query or set information maintained by another protocol driver on a binding or by the underlying miniport driver.
Before it calls NdisCoRequest, a client or call manager allocates a buffer for its request and initializes an NDIS_REQUESTstructure. This structure specifies the type of request (query or set), identifies the information (OID) being queried or set, and points to buffers used for passing OID data.
If the connection-oriented client or call manager passes a valid NdisAfHandle(see Address Families), NDIS calls the ProtocolCoRequestfunction of each protocol driver on the binding (see the following figure).
If the underlying miniport driver is an MCM driver, NDIS calls the ProtocolCoRequestfunction of the MCM driver (see the following figure):
If the connection-oriented client or call manager passes a NULL address family handle, NDIS calls the MiniportCoRequestfunction of the underlying miniport driver or MCM driver.
The following figure shows a client or a call manager querying or setting miniport driver information.
The next figure shows a client querying or setting an MCM driver's miniport driver information.
To query or set information maintained by its clients, an MCM driver calls NdisMCmRequest(see the following figure).
The caller of NdisCoRequestor NdisMCmRequestcan narrow the scope of the request by specifying a VC handle that identifies a VC, or a party handle that identifies a party on a multipoint VC. Passing a NULLNdisVcHandlemakes such a request global in nature, whether the request is directed to the client, call manager, miniport driver, or MCM driver.
ProtocolCoRequestor MiniportCoRequestcan complete synchronously, or these functions can complete asynchronously with NdisCoRequestComplete. The call to NdisCoRequestCompletecauses NDIS to call the ProtocolCoRequestCompletefunction of the driver that called NdisCoRequest.