Поделиться через


Создание пользовательской процедуры обратного вызова очереди

Помимо использования обратного вызова очереди по умолчанию, можно написать настраиваемую процедуру обратного вызова. Эта функция должна иметь ту же форму, что и FileCallback. Это полезно, если необходимо использовать подпрограмму обратного вызова для обработки уведомления, отличным от того, который предусмотрен подпрограммой обратного вызова по умолчанию.

Если необходимо изменить только небольшую часть поведения процедуры обратного вызова очереди по умолчанию, можно создать настраиваемую процедуру обратного вызова для фильтрации уведомлений, обрабатывая только те, которые требуют специального поведения, и вызывать SetupDefaultQueueCallback для остальных.

Например, если вы хотите обрабатывать ошибки удаления файла специальным образом, можно создать пользовательскую функцию обратного вызова, MyCallback. Эта функция перехватывает и обрабатывает уведомления SPFILENOTIFY_DELETEERROR и вызывает функцию обратного вызова очереди по умолчанию для всех других уведомлений. MyCallback возвращает значение для уведомлений о неполадках при удалении. Для всех других уведомлений MyCallback передает в очередь любое значение, которое возвращает стандартная подпрограмма обратного вызова очереди.

Этот поток управления показан на следующей схеме.

стрелки и блоки, показывающие поток данных для пользовательской функции обратного вызова

Важный

Если пользовательская функция обратного вызова вызывает подпрограмму обратного вызова очереди по умолчанию, она должна передать указатель void, возвращаемый SetupInitDefaultQueueCallback или SetupInitDefaultQueueCallbackEx подпрограмме обратного вызова по умолчанию.