Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La función miniportRestart de inicia una solicitud de reinicio para un adaptador de miniporte que está en pausa.
Sintaxis
MINIPORT_RESTART MiniportRestart;
NDIS_STATUS MiniportRestart(
[in] NDIS_HANDLE MiniportAdapterContext,
PNDIS_MINIPORT_RESTART_PARAMETERS RestartParameters
)
{...}
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.
RestartParameters
Puntero a un NDIS_MINIPORT_RESTART_PARAMETERS estructura que define los parámetros de reinicio para el adaptador de miniport.
Valor devuelto
MiniportRestart devuelve uno de los siguientes valores de estado:
Código devuelto | Descripción |
---|---|
|
MiniportRestart reiniciar correctamente el flujo de datos de red a través del adaptador de miniport. |
|
MiniportRestart no completó la operación de reinicio y la operación se completará de forma asincrónica. El controlador de miniport debe llamar a la función NdisMRestartComplete cuando se complete la operación. |
|
error de miniportRestart debido a recursos insuficientes. |
|
No se aplica ninguno de los valores de estado anteriores. En esta situación, el controlador debe llamar a la función NdisWriteErrorLogEntry con parámetros que especifican el motivo del error. |
Observaciones
Un controlador especifica el MiniportRestart punto de entrada cuando llama al función NdisMRegisterMiniportDriver.
El adaptador de miniporte especificado por el parámetro MiniportAdapterContext entra en el estado Restarting cuando NDIS llama a MiniportRestart.
Cuando NDIS llama a MiniportRestart, un controlador de miniport:
- Debe completar las tareas necesarias para reanudar las operaciones de envío y recepción.
- Opcionalmente, modifica los atributos de reinicio que se especifican en el RestartAttributes miembro del objeto NDIS_MINIPORT_RESTART_PARAMETERS estructura. Si el puntero de RestartAttributes es NULL, el controlador de miniport no debe modificar ni agregar a la lista de atributos de reinicio. Si el puntero de RestartAttributes no esNULL, apunta a una estructura NDIS_RESTART_ATTRIBUTES. Si un controlador de miniporte no se reinicia, no debe modificar ningún atributo.
- Puede proporcionar indicaciones de estado con función NdisMIndicateStatusEx.
- Debe controlar las solicitudes de estado en la función MiniportOidRequest.
- Puede agregar nuevos atributos específicos de medios a la lista de atributos de reinicio. En esta situación, el controlador de miniporte debe asignar un nuevo NDIS_RESTART_ATTRIBUTES estructura, por ejemplo, con NdisAllocateMemoryWithTagPriority function- y proporcionan espacio de memoria para los nuevos atributos. Después de propagar los atributos de reinicio a controladores excesivos, NDIS libera la memoria de atributos para los controladores de miniport.
- Puede modificar los atributos específicos de los medios en la lista de atributos de reinicio. Si el controlador de miniporte requiere más espacio de memoria, puede liberar una estructura de NDIS_RESTART_ATTRIBUTES con la función NdisFreeMemory y asignar una nueva estructura para contener la información modificada. Después de propagar los atributos de reinicio a controladores excesivos, NDIS libera la memoria de atributos para los controladores de miniport.
- Puede modificar cualquier campo del NDIS_RESTART_GENERAL_ATTRIBUTES estructura. Cuando NDIS proporciona un puntero deNULL que no es NULL en el RestartAttributes miembro del NDIS_MINIPORT_RESTART_PARAMETERS estructura, la lista de atributos contiene una entrada en la que el miembro Oid de la estructura NDIS_RESTART_ATTRIBUTES es OID_GEN_MINIPORT_RESTART_ATTRIBUTES y el miembro data de contiene una estructura de NDIS_RESTART_GENERAL_ATTRIBUTES.
- Debe asegurarse de que NDIS_RESTART_GENERAL_ATTRIBUTES estructura contiene la información correcta. Para asegurarse de que la estructura de NDIS_RESTART_GENERAL_ATTRIBUTES contiene la información necesaria, primero debe determinar la versión de la estructura comprobando el miembro revisión de en la estructura de NDIS_OBJECT_HEADER especificada en el encabezado miembro de la estructura NDIS_RESTART_GENERAL_ATTRIBUTES.
Una vez que el controlador de miniporte reinicie correctamente las operaciones de envío y recepción, debe completar la operación de reinicio. Si el controlador devuelve NDIS_STATUS_SUCCESS de MiniportRestart, se completa la operación de reinicio. Si el controlador devuelve NDIS_STATUS_PENDING, puede continuar con las operaciones de reinicio. La operación de reinicio se completa después de que el controlador llame a la función NdisMRestartComplete. Una vez completada la operación de reinicio, el adaptador de miniporte se encuentra en el estado En ejecución.
El controlador de miniport puede reanudarse indicando paquetes recibidos para el adaptador de miniport inmediatamente después de las llamadas NDIS MiniportRestart y antes de que el controlador llame a NdisMRestartComplete. El controlador de miniport debe estar listo para aceptar solicitudes de envío después de que el controlador complete la solicitud de reinicio.
Si el controlador de miniporte no reinicia las operaciones de envío y recepción, el controlador debe devolver un estado de error adecuado de MiniportRestart. En esta situación, el controlador debe detener las operaciones de envío o recepción que se iniciaron y, a continuación, volver al estado Pausado.
NDIS llama a miniportRestart en IRQL = PASSIVE_LEVEL.
Ejemplos de
Para definir una función MiniportRestart, 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 MiniportRestart denominada "MyRestart", use el tipo MINIPORT_RESTART tal como se muestra en este ejemplo de código:
MINIPORT_RESTART MyRestart;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyRestart(
NDIS_HANDLE MiniportAdapterContext,
PNDIS_MINIPORT_RESTART_PARAMETERS RestartParameters
)
{...}
El tipo de función MINIPORT_RESTART 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_RESTART 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 |