Compartir a través de


GPIO_CLIENT_MASK_INTERRUPTS función de devolución de llamada (gpioclx.h)

El CLIENT_MaskInterrupts función de devolución de llamada de eventos enmascara las interrupciones en un conjunto de patillas de E/S de uso general (GPIO) configuradas como entradas de interrupción.

Sintaxis

GPIO_CLIENT_MASK_INTERRUPTS GpioClientMaskInterrupts;

NTSTATUS GpioClientMaskInterrupts(
  [in]      PVOID Context,
  [in, out] PGPIO_MASK_INTERRUPT_PARAMETERS MaskParameters
)
{...}

Parámetros

[in] Context

Puntero al contexto del dispositivo del controlador GPIO.

[in, out] MaskParameters

Puntero a una estructura de GPIO_MASK_INTERRUPT_PARAMETERS que, en la entrada, describe las patillas de interrupción gpIO para enmascarar y, al salir, contiene el estado de la operación de máscara.

Valor devuelto

La función CLIENT_MaskInterrupts 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 del marco gpIO (GpioClx) llama a esta función para enmascarar las interrupciones en los patillas GPIO configuradas como entradas de solicitud de interrupción. Para obtener más información, consulte Máscaras de interrupción gpIO.

Para registrar la función de devolución de llamada CLIENT_MaskInterrupts 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_MaskInterrupts .

Se llama a la función CLIENT_MaskInterrupts desde la rutina de servicio de interrupción (ISR) en GpioClx. Este ISR se ejecuta en PASSIVE_LEVEL o DIRQL, en función de la información del dispositivo que la función de devolución de llamada CLIENT_QueryControllerBasicInformation proporciona a GpioClx. La función CLIENT_QueryControllerBasicInformation proporciona información del dispositivo en forma de una estructura de CLIENT_CONTROLLER_BASIC_INFORMATION . Si el bit de marca MemoryMappedController se establece en el miembro Flags de esta estructura, gpioClx ISR se ejecuta en DIRQL y llama a la función CLIENT_MaskInterrupts en DIRQL. De lo contrario, el ISR se ejecuta en PASSIVE_LEVEL y llama a la función en PASSIVE_LEVEL. Para obtener más información sobre este bit de marca, vea Funciones de devolución de llamada GPIO opcionales y necesarias.

Una llamada CLIENT_MaskInterrupts que no puede establecer la máscara de interrupción en el valor solicitado debe establecer el miembro FailedMask de la estructura GPIO_MASK_INTERRUPT_PARAMETERS en un valor distinto de cero y devolver un código de estado de error adecuado. Se espera que la función CLIENT_MaskInterrupts de un controlador GPIO asignado a memoria siempre establezca la máscara de interrupción en el valor solicitado. Sin embargo, la función CLIENT_MaskInterrupts para un controlador que no está asignado a memoria debe enviar una solicitud de E/S al controlador para establecer la máscara y esta solicitud podría producir un error. Si la solicitud no puede establecer la máscara, la función debe indicar este error en el valor que escribe en el miembro FailedMask .

Ejemplos

Para definir una función de devolución de llamada CLIENT_MaskInterrupts , 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_MaskInterrupts denominada MyEvtGpioMaskInterrupts, use el tipo de función GPIO_CLIENT_MASK_INTERRUPTS, como se muestra en este ejemplo de código:

GPIO_CLIENT_MASK_INTERRUPTS MyEvtGpioMaskInterrupts;

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

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioMaskInterrupts(
    PVOID Context,
    PGPIO_MASK_INTERRUPT_PARAMETERS MaskParameters
    )
{ ... }

El tipo de función GPIO_CLIENT_MASK_INTERRUPTS 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_MASK_INTERRUPTS 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 Vea la sección Comentarios.

Consulte también

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryControllerBasicInformation

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient

GPIO_MASK_INTERRUPT_PARAMETERS