MiniportSetInformation
NDIS_STATUS
MiniportSetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
MiniportSetInformation is a required function that allows bound protocol
drivers (or NDIS) to request changes in the state information that the
miniport maintains for particular OIDs, such as changes in multicast
addresses.
Parameters
-
MiniportAdapterContext
-
Specifies the handle to a miniport-allocated context area in which the driver
maintains per-NIC state, set up by MiniportInitialize.
-
Oid
-
Specifies the system-defined OID_XXX code designating the set operation
the driver should carry out.
-
InformationBuffer
-
Points to a buffer containing the OID-specific data used by
MiniportSetInformation for the set.
-
InformationBufferLength
-
Specifies the number of bytes at InformationBuffer.
-
BytesRead
-
Points to a variable that MiniportSetInformation sets to the number of bytes
it read from the buffer at InformationBuffer.
-
BytesNeeded
-
Points to a variable that MiniportSetInformation sets to the number of
additional bytes it needs to satisfy the request if InformationBufferLength
is less than Oid requires.
Return Value
MiniportSetInformation can return one of the following:
-
NDIS_STATUS_SUCCESS
-
MiniportSetInformation used the data at InformationBuffer to set itself
or its NIC to the state required by the given Oid, and it set
the variable at BytesRead to the amount of supplied data it used.
-
NDIS_STATUS_PENDING
-
The driver will complete the request asynchronously with a call to NdisMSetInformationComplete
when it has set itself or its NIC to the state requested.
-
NDIS_STATUS_INVALID_OID
-
MiniportSetInformation did not recognize the Oid.
-
NDIS_STATUS_INVALID_LENGTH
-
The InformationBufferLength does not match the length required by the
given Oid. MiniportSetInformation returned how many bytes the buffer
should be at BytesNeeded.
-
NDIS_STATUS_INVALID_DATA
-
The data supplied at InformationBuffer was invalid for the given Oid.
-
NDIS_STATUS_NOT_ACCEPTED
-
MiniportSetInformation attempted the requested set operation on the NIC but
was unsuccessful.
-
NDIS_STATUS_NOT_SUPPORTED
-
MiniportSetInformation does not support the Oid, which is optional.
-
NDIS_STATUS_RESOURCES
-
MiniportSetInformation could not carry out the requested operation due to
resource constraints. This return value does not necessarily mean that the
same request, submitted at a later time, will be failed for the same reason.
Comments
NDIS calls MiniportSetInformation either on its own behalf, such as to manage
bindings to the miniport, or when a bound protocol driver calls NdisRequest.
If MiniportSetInformation returns NDIS_STATUS_PENDING, the driver must
complete the request later by calling NdisMSetInformationComplete.
Until it completes any request, the miniport can safely access the memory at InformationBuffer,
BytesRead, and BytesNeeded. After the miniport completes any set
request, ownership of these variables and the buffer reverts to NDIS or the
caller of NdisRequest, whichever allocated the memory.
After a call to MiniportSetInformation, NDIS submits no other requests to the
driver until it has completed the operation, either synchronously or
asynchronously. Instead, NDIS holds requests queued until the current set
operation is completed.
For more information about the system-defined OIDs, see Chapter
5.
MiniportSetInformation can be pre-empted by an interrupt.
By default, MiniportSetInformation runs at IRQL DISPATCH_LEVEL.
See Also
MiniportInitialize, MiniportQueryInformation,
NdisMSetInformationComplete,
NdisRequest, NDIS_REQUEST