NDIS_REQUEST
typedef struct _NDIS_REQUEST {
UCHAR MacReserved[16];
NDIS_REQUEST_TYPE RequestType;
union _DATA {
struct QUERY_INFORMATION {
NDIS_OID Oid;
PVOID InformationBuffer;
UINT InformationBufferLength;
UINT BytesWritten;
UINT BytesNeeded;
} QUERY_INFORMATION;
struct SET_INFORMATION {
NDIS_OID Oid;
PVOID InformationBuffer;
UINT InformationBufferLength;
UINT BytesRead;
UINT BytesNeeded;
} SET_INFORMATION;
} DATA;
} NDIS_REQUEST, *PNDIS_REQUEST;
NDIS_REQUEST specifies a packet set up by NDIS or by a protocol for a call to NdisRequest.
NDIS submits these requests to the underlying driver’s
MiniportQueryInformation or MiniportSetInformation functions.
Members
-
MacReserved[16]
-
Specifies a 16-byte area reserved for use by the underlying driver.
-
RequestType
-
Specifies the request type as one of the following:
-
NdisRequestQueryInformation
-
Specifies a query-information request. NDIS forwards such a request to the
underlying driver’s MiniportQueryInformation function.
-
NdisRequestSetInformation
-
Specifies a set-information request. NDIS forwards such a request to the
underlying driver’s MiniportSetInformation function.
-
NdisRequestQueryStatistics
-
Specifies a query-statistics request. For most statistics queries, NDIS
satisfies the request itself. Otherwise, NDIS forwards such request to the
underlying driver’s MiniportQueryInformation function. This type of request
originates in a user-mode application, never in a protocol driver.
For any of the preceding values, the OID_XXX specified in the Oid
member must be compatible with the type of operation requested.
-
NdisRequestOpen
-
This type is obsolete. A protocol driver calls NdisOpenAdapter instead.
-
NdisRequestClose
-
This type is obsolete. A protocol driver calls NdisCloseAdapter
instead.
-
NdisRequestSend
-
This type is obsolete. A protocol driver calls NdisSend or NdisSendPackets
instead.
-
NdisRequestTransferData
-
This type is obsolete. A protocol driver calls NdisTransferData
instead.
-
NdisRequestReset
-
This type is obsolete. A protocol driver calls NdisReset instead.
-
NdisRequestGeneric1
-
Specifies a NIC-driver-specific request.
-
NdisRequestGeneric2
-
Specifies a NIC-driver-specific request.
-
NdisRequestGeneric3
-
Specifies a NIC-driver-specific request.
-
NdisRequestGeneric4
-
Specifies a NIC-driver-specific request.
-
Oid
-
Specifies the object identifier of the requested operation. The value is an
OID_XXX code.
-
InformationBuffer
-
Points to a buffer into which the underlying driver or NDIS returns the
requested information for queries or from which the underlying driver reads
caller-supplied information for sets.
-
InformationBufferLength
-
Specifies the size in bytes of the buffer at InformationBuffer. The
value at Oid determines the value appropriate to this member.
-
BytesWritten
-
Specifies the number of bytes that the underlying driver or NDIS transfers
into the buffer at InformationBuffer for query-information requests. If
NdisRequest returns NDIS_STATUS_INVALID_LENGTH, the value of this
member is meaningless.
-
BytesRead
-
Specifies the number of bytes that the underlying driver read from the buffer
at InformationBuffer for set-information requests.
-
BytesNeeded
-
Specifies the number of bytes needed to return query information or to carry
out the set operation requested by the given OID_XXX code.
If NdisRequest returns NDIS_STATUS_SUCCESS, the value of this member is
meaningless. If the InformationBufferLength is too small for the given
OID_XXX on a query, this member indicates how large a buffer is
required to satisfy the request. If the buffer at InformationBuffer
does not contain sufficient data for the given OID_XXX on a set, this
member indicates how much data is required.
Comments
A protocol should allocate nonpaged memory for the buffer at InformationBuffer
and for the NDIS_REQUEST packet itself. Passing in a packet or buffer
allocated from paged memory can cause fatal page faults because the underlying
driver(s) run at IRQL DISPATCH_LEVEL to carry out the requested operation.
NDIS_REQUEST contains a DATA substructure for each type of operation that a
protocol driver can request of an underlying driver. Before calling NdisRequest,
the protocol fills in the relevant members of the substructure that represents
the query or set operation it specified in the Oid member. NDIS or the
underlying driver fills in the remaining members before it returns control to
the caller.
For more information about OID_XXX codes and which system-defined OIDs
permit queries, statistics queries, and/or set requests, see Chapter
5.
The NdisRequestGeneric types are available for NIC drivers that create
their own internal requests. To indicate a requested operation, a NIC driver
sets an internal variable to one of these types.
See Also
MiniportQueryInformation, MiniportSetInformation,
NdisCloseAdapter, NdisMQueryInformationComplete,
NdisMSetInformationComplete,
NdisOpenAdapter, NdisRequest,
NdisReset, NdisSend,
NdisSendPackets, NdisTransferData,
ProtocolRequestComplete