GPIO_CLIENT_ENABLE_INTERRUPT función de devolución de llamada (gpioclx.h)
La función de devolución de llamada de eventos CLIENT_EnableInterrupt habilita interrupciones en un pin de E/S de uso general (GPIO) que está configurado como entrada de interrupción.
Sintaxis
GPIO_CLIENT_ENABLE_INTERRUPT GpioClientEnableInterrupt;
NTSTATUS GpioClientEnableInterrupt(
[in] PVOID Context,
[in] PGPIO_ENABLE_INTERRUPT_PARAMETERS EnableParameters
)
{...}
Parámetros
[in] Context
Puntero al contexto del dispositivo del controlador GPIO.
[in] EnableParameters
Puntero a una estructura GPIO_ENABLE_INTERRUPT_PARAMETERS que especifica un pin GPIO y describe los atributos de interrupción de este pin.
Valor devuelto
La función CLIENT_EnableInterrupt devuelve STATUS_SUCCESS si la llamada es correcta. De lo contrario, devuelve un código de error adecuado.
Comentarios
El controlador del controlador GPIO implementa esta función de devolución de llamada. La extensión de marco gpIO (GpioClx) llama a esta función para habilitar interrupciones en un pin GPIO configurado como entrada de solicitud de interrupción.
Para registrar la función de devolución de llamada CLIENT_EnableInterrupt del controlador, llame al método GPIO_CLX_RegisterClient . Este método acepta, como parámetro de entrada, un puntero a una estructura de GPIO_CLIENT_REGISTRATION_PACKET que contiene un puntero de función CLIENT_EnableInterrupt .
GpioClx siempre llama a las funciones de devolución de llamada CLIENT_EnableInterrupt y CLIENT_DisableInterrupt en IRQL = PASSIVE_LEVEL. Sin embargo, si los registros GPIO están asignados a memoria, GpioClx llama a las otras funciones de devolución de llamada relacionadas con interrupciones desde su ISR en DIRQL. En este caso, las funciones CLIENT_EnableInterrupt y CLIENT_DisableInterrupt deben usar el bloqueo de interrupción GPIO para sincronizar sus operaciones relacionadas con la interrupción con el ISR. Para obtener más información, consulte Sincronización de interrupciones para controladores de controlador GPIO.
Ejemplos
Para definir una función de devolución de llamada CLIENT_EnableInterrupt, primero debe proporcionar una declaración de función que identifique el tipo de función de devolución de llamada que va a definir. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada ayuda a Code Analysis for Drivers, Static Driver Verifier (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 una función de devolución de llamada CLIENT_EnableInterrupt denominada MyEvtGpioEnableInterrupt
, use el tipo de función GPIO_CLIENT_ENABLE_INTERRUPT, como se muestra en este ejemplo de código:
GPIO_CLIENT_ENABLE_INTERRUPT MyEvtGpioEnableInterrupt;
A continuación, implemente la función de devolución de llamada de la siguiente manera:
_Use_decl_annotations_
NTSTATUS
MyEvtGpioEnableInterrupt(
PVOID Context,
PGPIO_ENABLE_INTERRUPT_PARAMETERS InterruptParameters
)
{ ... }
El tipo de función GPIO_CLIENT_ENABLE_INTERRUPT se define en el archivo de encabezado Gpioclx.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 GPIO_CLIENT_ENABLE_INTERRUPT 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 tipos de roles de función para controladores KMDF. Para obtener más información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Se admite a partir de Windows 8. |
Plataforma de destino | Escritorio |
Encabezado | gpioclx.h |
IRQL | Se llama en PASSIVE_LEVEL. |