Compartir a través de


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_STATUS_SUCCESS
NDIS inició la operación de inicialización para el miniport virtual del controlador intermedio.
NDIS_STATUS_NOT_ACCEPTED
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)

Consulte también

IRP_MN_START_DEVICE

MiniportInitializeEx

NdisAllocateMemoryWithTagPriority NdisIMCancelInitializeDeviceInstance NdisIMDeInitializeDeviceInstance

NdisIMGetBindingContext

NdisIMInitializeDeviceInstanceEx

NdisInitializeString

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes

NdisOpenAdapterEx

ProtocolBindAdapterEx

UNICODE_STRING