Compartir a través de


PROTOCOL_CL_REGISTER_SAP_COMPLETE función de devolución de llamada (ndis.h)

Un cliente NDIS orientado a la conexión que acepta llamadas entrantes debe tener un ProtocolClRegisterSapComplete función para completar las operaciones asincrónicas que inicia con NdisClRegisterSap. De lo contrario, tal controlador de protocolo registrado ProtocolClRegisterSapComplete función puede simplemente devolver el control.

Nota Debe declarar la función mediante el tipo PROTOCOL_CL_REGISTER_SAP_COMPLETE. Para obtener más información, consulte la sección Ejemplos siguientes.
 

Sintaxis

PROTOCOL_CL_REGISTER_SAP_COMPLETE ProtocolClRegisterSapComplete;

VOID ProtocolClRegisterSapComplete(
  [in] NDIS_STATUS Status,
  [in] NDIS_HANDLE ProtocolSapContext,
  [in] PCO_SAP Sap,
  [in] NDIS_HANDLE NdisSapHandle
)
{...}

Parámetros

[in] Status

Especifica el estado final de la llamada del cliente a NdisClRegisterSap, que puede ser uno de los siguientes:

NDIS_STATUS_SUCCESS

SAP se ha registrado tanto con NDIS como con el administrador de llamadas, que posteriormente llamará a NdisCmDispatchIncomingCall cada vez que recibe una oferta de llamada entrante dirigida a sap dada, lo que provoca que NDIS llame al cliente. función ProtocolClIncomingCall.

NDIS_STATUS_RESOURCES

NDIS o el administrador de llamadas no pudieron asignar ni inicializar los recursos necesarios para registrar y mantener SAP.

NDIS_STATUS_INVALID_DATA

El cliente proporcionó una especificación no válida en sap a NDIS, que reenviaba a la función protocolCmRegisterSap del administrador de llamadas para la validación.

NDIS_STATUS_XXX

El administrador de llamadas encontró un error al intentar registrar el sap y NDIS especificado propagaron este estado de error determinado por CM al cliente.

[in] ProtocolSapContext

Especifica el identificador del área de contexto por SAP del cliente, que el cliente proporcionó originalmente a NDIS cuando llamó a NdisClRegisterSap. Si el registro se realiza correctamente, NDIS conserva este identificador de contexto y lo usa posteriormente en llamadas al ProtocolClIncomingCall del cliente función que pertenece a este SAP.

[in] Sap

Puntero al búfer asignado por el cliente que contiene la especificación para que se abra SAP. El cliente pasó originalmente este puntero a NdisClRegisterSap.

[in] NdisSapHandle

Si estado es NDIS_STATUS_SUCCESS, especifica un identificador válido proporcionado por NDIS para esta SAP registrada, de forma eficaz una asociación establecida con NDIS entre el cliente y un administrador de llamadas determinado para el SAP especificado por el cliente. De lo contrario, este parámetro es NULL. El cliente debe guardar un identificador válido, preferiblemente en su área de ProtocolSapContext, para una llamada eventual a NdisClDeregisterSap.

Valor devuelto

Ninguno

Observaciones

NDIS llama a protocolClRegisterSapComplete para indicar que la llamada anterior del cliente a NdisClRegisterSap ha sido procesada por NDIS y , si NDIS no produjo un error en la llamada, mediante el administrador de llamadas con el que el cliente comparte el NdisAfHandle que pasó a NdisClRegisterSap.

Para recibir llamadas entrantes a través de una NIC orientada a la conexión, el cliente ProtocolCoAfRegisterNotify o función ProtocolClOpenAfCompleteEx normalmente registra uno o varios SAP con el administrador de llamadas.

Para registrar cada SAP, el cliente llama a NdisClRegisterSap, pasando el NdisAfHandle que identifica el administrador de llamadas desde el que el cliente quiere recibir notificaciones de llamadas entrantes y NDIS devuelve al cliente un NdisSapHandle al SAP registrado si la llamada del cliente a NdisClRegisterSap se realiza correctamente. protocolClRegisterSapComplete debe guardar cada NdisSapHandle válido, normalmente en el área de protocolSapContext por sap del cliente para que pueda liberar SAP más adelante con NdisClDeregisterSap.

El formato de sap es específico del administrador de llamadas. Si el administrador de llamadas no reconoce a SAP que el cliente está intentando registrar o si el SAP especificado ya está en uso, el administrador de llamadas puede producir un error en el registro de SAP. ProtocolClRegisterSapComplete debe comprobar la estado de de entrada para NDIS_STATUS_SUCCESS antes de continuar. Si se produjo un error en el intento de registrar SAP,
ProtocolClRegisterSapComplete puede liberar el área de contexto por SAP y el búfer en Sap que el cliente asignó o preparar para su reutilización en otra llamada a NdisClRegisterSap.

Un cliente puede recibir llamadas entrantes en sap incluso mientras el registro de SAP sigue pendiente, es decir, antes de llamar a su ProtocolClRegisterSapComplete función.

Ejemplos de

Para definir una función ProtocolClRegisterSapComplete, 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 ProtocolClRegisterSapComplete función denominada "MyClRegisterSapComplete", use el tipo PROTOCOL_CL_REGISTER_SAP_COMPLETE tal como se muestra en este ejemplo de código:

PROTOCOL_CL_REGISTER_SAP_COMPLETE MyClRegisterSapComplete;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
VOID
 MyClRegisterSapComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  ProtocolSapContext,
    PCO_SAP  Sap,
    NDIS_HANDLE  NdisSapHandle
    )
  {...}

El tipo de función PROTOCOL_CL_REGISTER_SAP_COMPLETE 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_CL_REGISTER_SAP_COMPLETE 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 Compatible con controladores NDIS 6.0 y NDIS 5.1 (consulte ProtocolClRegisterSapComplete (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte ProtocolClRegisterSapComplete (NDIS 5.1)) en Windows XP.
de la plataforma de destino de Windows
encabezado de ndis.h (incluya Ndis.h)
irQL <= DISPATCH_LEVEL

Consulte también

NdisClDeregisterSap

NdisClRegisterSap

NdisCmDispatchIncomingCall

NdisCmRegisterSapComplete

NdisFreeMemory

NdisFreeToNPagedLookasideList

NdisMCmDispatchIncomingCall

NdisMCmRegisterSapComplete

ProtocolClIncomingCall

ProtocolClOpenAfCompleteEx

ProtocolCmRegisterSap de

ProtocolCoAfRegisterNotify