Control de solicitudes de OID en un adaptador de minipuerto
NDIS llama a la función MiniportOidRequest del controlador de miniporte para enviar una solicitud OID para consultar o establecer información en el controlador. NDIS llama a la función MiniportOidRequest en su propio nombre o en nombre de un controlador que llamó a la función NdisOidRequest o NdisFOidRequest .
NDIS pasa MiniportOidRequest un puntero a una estructura de NDIS_OID_REQUEST que contiene la información de solicitud. La estructura de la solicitud contiene un identificador de OID_Xxx que indica el tipo de solicitud y otros miembros para definir los datos de la solicitud.
El miembro Timeout especifica un tiempo de espera, en segundos, para la solicitud. NDIS puede restablecer el controlador o cancelar la solicitud si expira el tiempo de espera antes de que el controlador complete la solicitud.
El miembro RequestId especifica un identificador opcional para la solicitud. Los controladores de miniport pueden establecer el miembro RequestId de una indicación de estado en el valor obtenido del miembro RequestId de una solicitud OID asociada. Normalmente, los controladores de minipuerto pueden ignorar este miembro. Si un controlador debe establecer este miembro, la página de referencia del OID determinado proporciona los valores necesarios. Para obtener más información sobre las indicaciones de estado, vea Indicaciones de estado del adaptador.
Un controlador de minipuerto que controle correctamente una solicitud de conjunto de OID debe establecer el miembro SupportedRevision en la estructura NDIS_OID_REQUEST al volver de la solicitud de conjunto de OID. El miembro SupportedRevision notifica al iniciador de la solicitud de la revisión que admitía el controlador. Por ejemplo, un controlador de minipuerto puede crear una estructura Xxx_REVISION_2, proporcionar valores adecuados para una estructura de Xxx_REVISION_1 y rellenar el resto de la estructura con ceros. El controlador de minipuerto notificaría Xxx_REVISION_1 en el miembro SupportedRevision . En este caso, un controlador de protocolo que pueda admitir un Xxx_REVISION_2 usará Xxx_REVISION_1 información que admita el controlador de miniporte. Para obtener más información sobre la información de versión en estructuras NDIS, vea Especificar información de versión de NDIS.
Un controlador de minipuerto puede completar una solicitud OID de forma sincrónica devolviendo un estado correcto o de error.
Un controlador de minipuerto puede completar una solicitud OID de forma asincrónica devolviendo NDIS_STATUS_PENDING. En este caso, el controlador de minipuerto debe llamar a la función NdisMOidRequestComplete para completar la operación.
Si MiniportOidRequest devuelve NDIS_STATUS_PENDING, NDIS no llamará a MiniportOidRequest con otra solicitud para el adaptador hasta que se complete la solicitud pendiente.
NDIS puede llamar a la función MiniportCancelOidRequest del controlador de miniporte para cancelar una solicitud de OID.