Функции обратного вызова
Функция обратного вызова — это программный код в управляемом приложении, который помогает неуправляемой функции DLL выполнить задачу. Вызовы функции обратного вызова косвенно, через функцию DLL, передаются из управляемого приложения и возвращаются в управляемую реализацию. Лишь некоторые из многих функций DLL, вызываемых в вызове неуправляемого кода, требуют для своего выполнения наличия в управляемом коде функции обратного вызова.
Для вызова большинства функций DLL из управляемого кода нужно создать управляемое определение функции и затем выполнить сам вызов. Этот процесс достаточно прост.
Применение функции DLL, требующей наличия функции обратного вызова, предполагает выполнение некоторых дополнительных шагов. Во-первых, необходимо определить, требуется ли для функции обратный вызов. Это можно выяснить в документации по функции. Далее нужно создать функцию обратного вызова в управляемом приложении. И, наконец, вы вызываете функцию DLL, передавая указатель на функцию обратного вызова в качестве аргумента.
На рисунке ниже показана функция обратного вызова и этапы ее реализации:
Функции обратного вызова — идеальное средство для многократного выполнения некоторой задачи. Другая область их применения — с функциями перечисления API Windows, такими как EnumFontFamilies, EnumPrinters и EnumWindows. Функция EnumWindows выполняет перечисление всех существующих на компьютере окон, используя функцию обратного вызова, чтобы выполнить задачу для каждого окна. Инструкции и пример см. в разделе Практическое руководство. Реализация функций обратного вызова.