MINIPORT_ADD_DEVICE función de devolución de llamada (ndis.h)
La función MiniportAddDevice permite que un controlador de miniporte establezca un área de contexto para un dispositivo agregado.
Sintaxis
MINIPORT_ADD_DEVICE MiniportAddDevice;
NDIS_STATUS MiniportAddDevice(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] NDIS_HANDLE MiniportDriverContext
)
{...}
Parámetros
[in] NdisMiniportHandle
Identificador NDIS que identifica el adaptador de minipuerto que el administrador plug and play (PnP) está agregando. NDIS también pasa este identificador al función miniportInitializeEx.
[in] MiniportDriverContext
Identificador de un área de contexto asignada por el controlador donde el controlador mantiene la información de estado y configuración. El controlador de miniporte pasó este área de contexto al función NdisMRegisterMiniportDriver.
Valor devuelto
miniportAddDevice devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
El controlador de miniporte asignó correctamente los recursos que requiere para agregar el dispositivo. |
|
El controlador miniport no pudo asignar los recursos necesarios. |
|
MiniportAddDevice falló por motivos distintos de recursos insuficientes. |
Si se produce un error MiniportAddDevice, NDIS no llamará a la función MiniportInitializeEx para inicializar el adaptador de miniport.
Observaciones
La función MiniportAddDevice es una función opcional. Los controladores de miniporte que admiten MSI-X deben especificar un punto de entrada para esta función en . NDIS_MINIPORT_PNP_CHARACTERISTICS estructura.
miniportAddDevice puede asignar un área de contexto para controlar IRP_MN_FILTER_RESOURCE_REQUIREMENTS paquetes de solicitud de E/S (IRP) que el identificadores de función miniportFilterResourceResourceRequirements. Los controladores de miniporte especifican el área de contexto inicializando un NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES estructura y, a continuación, llamar a función NdisMSetMiniportAttributes. NDIS más adelante proporciona este identificador de contexto al MiniportRemoveDevice , MiniportFilterResourceRequirements, miniportStartDevicey funciones de MiniportInitializeEx. Para miniportInitializeEx, el identificador de contexto se pasa en el miembro MiniportAddDeviceContext del del elemento NDIS_MINIPORT_INIT_PARAMETERS estructura a la que apunta el parámetro MiniportInitParameter s.
Si se produce un error en el controlador de miniporte el MiniportAddDevice llamada después de asignar el área de contexto, el controlador debe liberar el área de contexto antes de volver de MiniportAddDevice.
Los controladores de miniport deben usar un área de contexto diferente para el miembro MiniportAddDeviceContext de la estructura de NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES y el miembro MiniportAdapterContext de la estructura NDIS_MINIPORT_INIT_PARAMETERS. Las áreas de contexto independientes garantizarán que la información del área de contexto no se reinicializa, lo que puede ocurrir en la función MiniportInitializeEx si el adaptador de miniporte se detiene y reinicializa.
Cuando el administrador de PnP solicita que NDIS quite el dispositivo, NDIS llama a la función MiniportRemoveDevice para deshacer las operaciones que MiniportAddDevice realizó.
NDIS llama a miniportAddDevice en IRQL = PASSIVE_LEVEL.
Ejemplos de
Para definir una función MiniportAddDevice, 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 un miniportAddDevice función denominada "MyAddDevice", use el tipo MINIPORT_ADD_DEVICE tal como se muestra en este ejemplo de código:
MINIPORT_ADD_DEVICE MyAddDevice;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyAddDevice(
NDIS_HANDLE NdisMiniportHandle,
NDIS_HANDLE MiniportDriverContext
)
{...}
El tipo de función MINIPORT_ADD_DEVICE 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_ADD_DEVICE 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 |