Función NdisIMInitializeDeviceInstanceEx (ndis.h)
La función NdisIMInitializeDeviceInstanceEx inicia la operación de inicialización para un miniport virtual y, opcionalmente, configura información de estado sobre el miniport virtual para controladores de protocolo enlazados posteriormente.
Sintaxis
NDIS_STATUS NdisIMInitializeDeviceInstanceEx(
[in] NDIS_HANDLE DriverHandle,
[in] PNDIS_STRING DriverInstance,
[in, optional] NDIS_HANDLE DeviceContext
);
Parámetros
[in] DriverHandle
Controlador de miniporte que controla el función NdisMRegisterMiniportDriver devuelve en NdisMiniportDriverHandle .
[in] DriverInstance
Puntero a un tipo de NDIS_STRING que describe una cadena con recuento inicializado por el autor de la llamada en el conjunto de caracteres predeterminado del sistema. La cadena contiene el nombre de la clave del Registro en la que el controlador almacena información sobre un miniport virtual y, posiblemente, información específica del enlace. Para los controladores De Microsoft Windows 2000 y versiones posteriores, esta cadena contiene caracteres Unicode. Es decir, para Windows 2000 y versiones posteriores, NDIS define el tipo de NDIS_STRING como un tipo de UNICODE_STRING.
[in, optional] DeviceContext
Puntero a la memoria proporcionada por el autor de la llamada que se va a configurar con información de contexto del dispositivo definida por el controlador sobre el miniport virtual, que los controladores de protocolo de nivel aún más altos que posteriormente se enlazan a este miniport virtual pueden usar. Este parámetro puede ser NULL si el controlador intermedio no tiene este área de contexto del dispositivo.
Valor devuelto
NdisIMInitializeDeviceInstanceEx puede devolver cualquiera de las siguientes opciones:
Código devuelto | Descripción |
---|---|
|
NDIS inició la operación de inicialización para el miniport virtual del controlador intermedio. |
|
NdisIMInitializeDeviceInstanceEx produjo un error porque el dispositivo especificado por driverHandle ya se ha inicializado. |
Observaciones
Un controlador intermedio NDIS debe llamar a NdisIMInitializeDeviceInstanceEx desde su función ProtocolBindAdapterEx. Un error al llamar a NdisIMInitializeDeviceInstanceEx desde un controlador intermedio NDIS impide que ese controlador se cargue correctamente.
Antes de llamar a NdisIMInitializeDeviceInstanceEx, la función ProtocolBindAdapterEx del controlador intermedio debe enlazarse a los controladores de miniport subyacentes necesarios para que el controlador intermedio funcione. La función ProtocolBindAdapterEx puede asignar un área en DeviceContext, posiblemente configurándolo con información intermedia determinada por controladores sobre las funcionalidades del adaptador de miniport subyacente y que se recopiló ProtocolBindAdapterEx. La función MiniportInitializeEx del controlador intermedio podría usar dicha información posteriormente para configurar este área de contexto con información sobre la minipuerto virtual del controlador.
La llamada del controlador intermedio a NdisIMInitializeDeviceInstanceEx hace que NDIS llame a la función del controlador intermedio MiniportInitializeEx, si NDIS recibe un IRP de IRP_MN_START_DEVICE para iniciar el dispositivo. Si NDIS no recibe este IRP, NDIS no llamará a la función MiniportInitializeEx del controlador intermedio.
La llamada a miniportInitializeEx puede ocurrir más adelante y, por lo tanto, no está necesariamente dentro del contexto de la llamada a NdisIMInitializeDeviceInstanceEx. Si NDIS nunca llama a MiniportInitializeEx para el miniport virtual al que se hace referencia en una llamada a NdisIMInitializeDeviceInstanceEx y el controlador intermedio ya no requiere la miniport virtual, el controlador intermedio debe llamar al función NdisIMCancelInitializeDeviceInstance para cancelar la inicialización del miniport virtual. Por ejemplo, supongamos que un controlador intermedio crea un miniport virtual en respuesta a un enlace correcto a un adaptador de miniport subyacente. Si ese enlace se quita antes de llamar a NDIS MiniportInitializeEx, el controlador intermedio debe llamar a NdisIMCancelInitializeDeviceInstance para cancelar la inicialización de la miniport virtual.
MiniportInitializeEx asigna los recursos que el controlador necesita para llevar a cabo operaciones de E/S de red, como llamar a . función NdisMSetMiniportAttributes e inicializar la miniporte virtual del controlador en un estado operativo. A continuación, los controladores de protocolo de nivel superior se pueden enlazar a su miniport virtual cuando la inicialización del controlador intermedio se completa correctamente.
Después de MiniportInitializeEx devuelve el control, el área de contexto del dispositivo del controlador intermedio, si existe, puede contener datos definidos por el controlador intermedio que posteriormente permiten que todos los controladores de protocolo de nivel superior que estén enlazados al mismo miniport virtual accedan a la información en ese área de contexto. Este tipo de controlador de protocolo de nivel superior puede consultar el contexto del dispositivo proporcionado por el controlador intermedio con el función NdisIMGetBindingContext.
Antes de que NDIS llame a la función MiniportInitializeEx de un controlador intermedio, el controlador puede llamar a NdisIMCancelInitializeDeviceInstance para cancelar la operación de inicialización.
Después de que NDIS llame a la función miniportInitializeEx de un controlador intermedio, el controlador debe llamar a NdisIMDeInitializeDeviceInstance para invertir la operación de inicialización.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Compatible con los controladores NDIS 6.0 y NDIS 5.1 (consulte NdisIMInitializeDeviceInstanceEx (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte NdisIMInitializeDeviceInstanceEx (NDIS 5.1)) en Windows XP. |
de la plataforma de destino de | Escritorio |
encabezado de | ndis.h (incluya Ndis.h) |
biblioteca de | Ndis.lib |
irQL | PASSIVE_LEVEL |
reglas de cumplimiento de DDI | Irql_IM_Function(ndis) |