PROTOCOL_CM_OPEN_AF función de devolución de llamada (ndis.h)
Se requiere la función ProtocolCmOpenAf . Esta función asigna recursos por apertura para que un administrador de llamadas interactúe con un cliente NDIS orientado a la conexión que abre la familia de direcciones.
Sintaxis
PROTOCOL_CM_OPEN_AF ProtocolCmOpenAf;
NDIS_STATUS ProtocolCmOpenAf(
[in] NDIS_HANDLE CallMgrBindingContext,
[in] PCO_ADDRESS_FAMILY AddressFamily,
[in] NDIS_HANDLE NdisAfHandle,
[out] PNDIS_HANDLE CallMgrAfContext
)
{...}
Parámetros
[in] CallMgrBindingContext
Para un administrador de llamadas no integrado, CallMgrBindingContext especifica el identificador de un área de contexto asignada por el administrador de llamadas en la que los administradores de llamadas mantienen su información de estado por enlace. El administrador de llamadas proporcionó este identificador cuando llamó a NdisOpenAdapterEx.
Para un administrador de llamadas integrado (MCM), CallMgrBindingContext especifica el identificador de un área de contexto asignada por miniporte en la que el miniporte mantiene su información de estado por adaptador. El miniporte proporcionó este controlador en su llamada NdisMSetAttributesEx (para controladores 5.x) o su llamada NdisMSetMiniportAttributes (para controladores 6.x).
[in] AddressFamily
Especifica la familia de direcciones que abre un cliente. El administrador de llamadas registró esta familia de direcciones cuando llamó NdisCmRegisterAddressFamilyEx.
[in] NdisAfHandle
Especifica un identificador, proporcionado por NDIS, que identifica de forma única esta instancia de familia de direcciones. Este identificador es opaco para el administrador de llamadas y está reservado para el uso del sistema.
[out] CallMgrAfContext
Especifica el identificador de un área de contexto proporcionada por el administrador de llamadas en la que el administrador de llamadas mantiene el estado sobre esta apertura de una familia de direcciones que proporciona.
Valor devuelto
ProtocolCmOpenAf devuelve el estado de sus operaciones como una de las siguientes:
Código devuelto | Descripción |
---|---|
|
Indica que el administrador de llamadas ha asignado e inicializado correctamente los recursos necesarios para aceptar las solicitudes del cliente a esta familia de direcciones. |
|
Indica que la operación solicitada se controla de forma asincrónica. El administrador de llamadas debe llamar a NdisCmOpenAddressFamilyComplete cuando haya completado todas sus operaciones de af abierta para indicar a NDIS (y al cliente) que se han completado las operaciones. |
|
Indica que el administrador de llamadas no pudo completar sus operaciones necesarias debido a la falta de recursos del sistema disponibles, como la memoria. |
|
Indica que el administrador de llamadas no se pudo establecer en un estado en el que puede aceptar solicitudes del cliente para operar en esta familia de direcciones. Podría tratarse de un estado de error propagado desde otra función de biblioteca NDIS o cualquier estado de error determinado por el escritor de controladores. |
Comentarios
ProtocolCmOpenAf realiza las asignaciones necesarias de recursos dinámicos y estructuras que el escritor del administrador de llamadas considera necesario para realizar operaciones en nombre del cliente que está abriendo una instancia de esta familia de direcciones. Estos recursos incluyen, entre otros, búferes de memoria, estructuras de datos, eventos y otros recursos similares. Un administrador de llamadas también debe inicializar los datos pertinentes por apertura antes de devolver el control a NDIS.
Cuando un administrador de llamadas ha asignado su área de estado por apertura, la dirección del área de estado debe establecerse en el identificador CallMgrAfContext antes de devolver el control a NDIS. Para ello, desreferencia CallMgrAfContext y almacene un puntero al área de datos como valor del identificador. Por ejemplo:
*CallMgrAfContext = SomeBuffer;
Si ProtocolCmOpenAf no puede asignar los recursos por apertura que necesita para llevar a cabo solicitudes posteriores en nombre del cliente que abren esta familia de direcciones, debe liberar todos los recursos asignados para el control abierto y devolver al NDIS con NDIS_STATUS_RESOURCES.
Si ProtocolCmOpenAf ha completado sus operaciones necesarias y cm está listo para aceptar solicitudes del cliente, ProtocolCmOpenAf debe devolver el control lo antes posible con un estado de NDIS_STATUS_SUCCESS.
Ejemplos
Para definir una función ProtocolCmOpenAf , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función ProtocolCmOpenAf denominada "MyCmOpenAf", use el tipo de PROTOCOL_CM_OPEN_AF como se muestra en este ejemplo de código:
PROTOCOL_CM_OPEN_AF MyCmOpenAf;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyCmOpenAf(
NDIS_HANDLE CallMgrBindingContext,
PCO_ADDRESS_FAMILY AddressFamily,
NDIS_HANDLE NdisAfHandle,
PNDIS_HANDLE CallMgrAfContext
)
{...}
El tipo de función PROTOCOL_CM_OPEN_AF 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 PROTOCOL_CM_OPEN_AF en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte 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, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con los controladores NDIS 6.0 y NDIS 5.1 (consulte ProtocolCmOpenAf (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte ProtocolCmOpenAf (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | <= DISPATCH_LEVEL |