Compartir a través de


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

La función de devolución de llamada de evento CLIENT_ReleaseController realiza operaciones necesarias cuando el dispositivo de controlador de E/S de uso general (GPIO) ya no es accesible.

Sintaxis

GPIO_CLIENT_RELEASE_CONTROLLER GpioClientReleaseController;

NTSTATUS GpioClientReleaseController(
  [in] WDFDEVICE Device,
  [in] PVOID Context
)
{...}

Parámetros

[in] Device

Un controlador WDFDEVICE para el objeto de dispositivo de marco que representa el controlador GPIO.

[in] Context

Puntero al contexto del dispositivo del controlador GPIO.

Valor devuelto

La función CLIENT_ReleaseController devuelve STATUS_SUCCESS si la llamada se realiza correctamente. 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 después de que el dispositivo del controlador GPIO ya no sea accesible.

Durante la devolución de llamada CLIENT_ReleaseController , el controlador del controlador GPIO debe liberar los recursos de hardware que adquirió como resultado de la llamada anterior a la función de devolución de llamada CLIENT_PrepareController . En el caso de un dispositivo de controlador GPIO asignado a memoria, el controlador debe desasignar el intervalo de direcciones de memoria o los intervalos asignados a los registros de hardware. Para un controlador que no está asignado a memoria, el controlador debe cerrar la conexión lógica abierta previamente al controlador.

Para registrar el CLIENT_ReleaseController función de devolución de llamada 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_ReleaseController .

Aunque se llama a la función de devolución de llamada CLIENT_ReleaseController en IRQL = PASSIVE_LEVEL, no debe hacer que esta función sea paginable. La CLIENT_ReleaseController devolución de llamada está en la ruta de acceso de tiempo crítica para restaurar la alimentación en los dispositivos de la plataforma de hardware y, por motivos de rendimiento, no debe retrasarse por errores de página.

Ejemplos

Para definir una función de devolución de llamada CLIENT_ReleaseController , primero debe proporcionar una declaración de función que identifique el tipo de función de devolución de llamada que está definiendo. 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 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 CLIENT_ReleaseController función de devolución de llamada denominada MyEvtGpioReleaseController, use el tipo de función GPIO_CLIENT_RELEASE_CONTROLLER, como se muestra en este ejemplo de código:

GPIO_CLIENT_RELEASE_CONTROLLER  MyEvtGpioReleaseController;

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

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioReleaseController(
    WDFDEVICE Device,
    PVOID Context
)
{ ... }

El tipo de función GPIO_CLIENT_RELEASE_CONTROLLER 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_RELEASE_CONTROLLER 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 rol 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.

Consulte también

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient