MINIPORT_PAUSE función de devolución de llamada (ndis.h)
NDIS llama a la función MiniportPause de un controlador de miniporte para detener el flujo de datos de red a través de un adaptador de minipuerto especificado.
Sintaxis
MINIPORT_PAUSE MiniportPause;
NDIS_STATUS MiniportPause(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] PNDIS_MINIPORT_PAUSE_PARAMETERS PauseParameters
)
{...}
Parámetros
[in] MiniportAdapterContext
Identificador de un área de contexto que el controlador de miniporta asignó en su función MiniportInitializeEx. El controlador de miniporte usa este área de contexto para mantener la información de estado de un adaptador de miniporte.
[in] PauseParameters
Puntero a un NDIS_MINIPORT_PAUSE_PARAMETERS estructura que define los parámetros de pausa del adaptador de miniport.
Valor devuelto
MiniportPause devuelve uno de los siguientes valores de estado:
Código devuelto | Descripción |
---|---|
|
MiniportPause detener correctamente el flujo de datos de red a través del adaptador de miniport. |
|
MiniportPause no completó la operación de pausa y la operación se completará de forma asincrónica. El controlador de miniport debe llamar a la función NdisMPauseComplete cuando se complete la operación. |
Observaciones
Un controlador especifica el MiniportPause punto de entrada cuando llama al función NdisMRegisterMiniportDriver.
NDIS pausa un adaptador de miniporte para detener el flujo de datos que podría interferir con las operaciones de PnP, como agregar o quitar un controlador de filtro, o enlazar o desenlatar un controlador de protocolo.
NDIS llama a la función MiniportPause de un controlador de miniporte para iniciar una solicitud de pausa para el adaptador de miniporte especificado en MiniportAdapterContext. El adaptador de miniporte permanece en el estado Pausa hasta que se complete la operación de pausa.
Para un adaptador de miniporte en el estado Pausa, el controlador de miniporte:
- Espera todas las llamadas a función NdisMIndicateReceiveNetBufferLists que se va a devolver.
- Espera a que NDIS devuelva la propiedad de todas las estructuras de NET_BUFFER_LIST de las indicaciones de recepción pendientes al controlador de miniport función MiniportReturnNetBufferLists.
- Completa todas las solicitudes de envío pendientes y llama a función NdisMSendNetBufferListsComplete para todas las solicitudes de envío pendientes.
- Rechaza todas las solicitudes de envío nuevas realizadas a su función de MiniportSendNetBufferLists inmediatamente llamando a NdisMSendNetBufferListsComplete. Debe establecer el estado completo en cada NET_BUFFER_LIST en NDIS_STATUS_PAUSED.
- Puede proporcionar indicaciones de estado con función NdisMIndicateStatusEx.
- Debe controlar las solicitudes de OID en la función MiniportOidRequest.
- No debe detener completamente el adaptador de miniporte si detener el adaptador de miniporte impide que el controlador controle las solicitudes o proporcione indicaciones de estado.
- No debe liberar los recursos asignados por el controlador durante la inicialización.
Una vez que un controlador de miniporte completa todas las solicitudes de envío pendientes y NDIS devuelve todas las estructuras de datos de red recibidas (de indicaciones de recepción pendientes), el controlador debe completar la operación de pausa. Si el controlador devuelve NDIS_STATUS_SUCCESS de MiniportPause, se completa la operación de pausa. Si el controlador devuelve NDIS_STATUS_PENDING, el adaptador de miniporte puede permanecer en el estado Pausa y la operación de pausa se completa después de que el controlador llame a la función NdisMPauseComplete. Una vez completada la operación de pausa, el adaptador de miniporte se encuentra en el estado Pausado.
Para un adaptador de miniporte en el estado pausado, el controlador de miniporte:
- Debe rechazar todas las solicitudes de envío realizadas a miniportSendNetBufferLists inmediatamente llamando a NdisMSendNetBufferListsComplete. Debe establecer el miembro Status en cada NET_BUFFER_LIST en NDIS_STATUS_PAUSED.
- Puede controlar las interrupciones de recepción (consulte la función MiniportInterrupt) e interrumpir los DPC (consulte la función miniportInterruptDPC), pero no debe indicar los datos de red recibidos.
- Puede proporcionar indicaciones de estado con la función NdisMIndicateStatusEx.
- Debe controlar las solicitudes de OID en la función MiniportOidRequest.
- Debe controlar las solicitudes para cambiar el estado de energía del dispositivo en función MiniportDevicePnPEventNotify.
- Puede controlar las llamadas a funciones de NetTimerCallback.
- Puede controlar las solicitudes para restablecer el hardware en la función MiniportResetEx.
NDIS llama a la función MiniportRestart para iniciar una solicitud de reinicio para un adaptador de miniporte en pausa.
NDIS llama a MiniportPause en IRQL = PASSIVE_LEVEL.
Ejemplos de
Para definir una función MiniportPause, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función MiniportPause denominada "MyPause", use el tipo MINIPORT_PAUSE tal como se muestra en este ejemplo de código:
MINIPORT_PAUSE MyPause;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyPause(
NDIS_HANDLE MiniportAdapterContext,
PNDIS_MINIPORT_PAUSE_PARAMETERS MiniportPauseParameters
)
{...}
El tipo de función MINIPORT_PAUSE se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función MINIPORT_PAUSE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.
Para obtener información sobre Use_decl_annotations, vea Anotación del comportamiento de la función.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Se admite en NDIS 6.0 y versiones posteriores. |
de la plataforma de destino de | Windows |
encabezado de | ndis.h (incluya Ndis.h) |
irQL | PASSIVE_LEVEL |