NdisCoRequest issues an OID_GEN_CO_XXX or connection-oriented medium-specific OID_XXX request from a client to a stand-alone call manager or vice versa and from either client or call manager to the underlying miniport driver.
NDIS_STATUS
NdisCoRequest(
IN NDIS_HANDLE NdisBindingHandle,
IN NDIS_HANDLE NdisAfHandle OPTIONAL,
IN NDIS_HANDLE NdisVcHandle OPTIONAL,
IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
IN OUT PNDIS_REQUEST NdisRequest
);
When NdisCoRequest returns anything other than NDIS_STATUS_PENDING, the caller should make an internal call to its ProtocolCl/CmRequestComplete function. Otherwise, NDIS calls that driver's ProtocolCl/CmRequestComplete function when this operation is completed.
Declared in Ndis.h. Include Ndis.h.
Before it calls NdisCoRequest, a protocol allocates a buffer for its request and initializes an NDIS_REQUEST structure. Such a driver sets the Oid member of the NDIS_REQUEST structure with a system-defined OID_GEN_CO_XXX code when communicating with the call manager or client. For requests directed to an underlying miniport driver, the protocol can set the Oid member either with an OID_GEN_CO_XXX or a connection-oriented, medium-specific OID_XXX code, such as OID_ATM_ALIGNMENT_REQUIRED when calling NdisCoRequest.
Depending on the value of NdisAfHandle, clients and stand-alone call managers call NdisCoRequest to communicate with each other or with the underlying connection-oriented miniport driver.
Passing a NULL NdisVcHandle makes such a request global in nature, whether the request is directed to the client, call manager, or miniport driver. For example, an OID_GEN_CO_RCV_CRC_ERROR request to an underlying connection-oriented miniport driver returns the number of CRC errors encountered in all receives the miniport driver has indicated on a particular VC if the caller supplies an explicit NdisVcHandle. For the same request with a NULL NdisVcHandle, the underlying miniport driver returns the total number of CRC errors encountered for all incoming receives through its NIC.
Clients and stand-alone call managers should call NdisRequest with all OIDs that are not connection-oriented, such as those returned for an OID_GEN_SUPPORTED_LIST query, commonly issued during initialization after the protocol has bound itself to the underlying NIC driver.
For more information about the sets of OIDs defined for use with NdisCoRequest and NdisRequest, see NDIS Object Identifiers.
Only clients and stand-alone call managers, which register themselves with NDIS as protocols, can call NdisCoRequest. Connection-oriented miniport drivers with integrated call-management support call NdisMCmRequest to communicate with their clients instead.
Callers of NdisCoRequest can be running at IRQL <= DISPATCH_LEVEL.
MiniportCoRequest, NdisClOpenAddressFamily, NdisCoCreateVc, NdisCoRequestComplete, NdisMCmRequest, NdisMCmRequestComplete, NdisMCoRequestComplete, NDIS_REQUEST, NdisRequest, ProtocolCmAddParty, ProtocolCmOpenAf, ProtocolCoCreateVc, ProtocolCoRequest, ProtocolCoRequestComplete