Создание настраиваемой процедуры обратного вызова очереди
Помимо использования обратного вызова очереди по умолчанию, можно написать настраиваемую подпрограмму обратного вызова. Эта функция должна иметь ту же форму, что и FileCallback. Это полезно, если требуется подпрограмма обратного вызова для обработки уведомления способом, отличающимся от того, который предоставляется подпрограммой обратного вызова очереди по умолчанию.
Если необходимо изменить только небольшую часть поведения подпрограммы обратного вызова очереди по умолчанию, можно создать настраиваемую процедуру обратного вызова для фильтрации уведомлений, обрабатывая только те, которые требуют особого поведения, и вызывая SetupDefaultQueueCallback для других.
Например, если требуется пользовательская обработка ошибок удаления файлов, можно создать пользовательскую функцию обратного вызова MyCallback. Эта функция будет перехватывать и обрабатывать уведомления SPFILENOTIFY_DELETEERROR , а также вызывать функцию обратного вызова очереди по умолчанию для всех остальных уведомлений. MyCallback возвращает значение для уведомлений об ошибках удаления. Для всех остальных уведомлений MyCallback передает любое значение, возвращаемое в очередь подпрограммой обратного вызова очереди по умолчанию.
Этот поток управления показан на следующей схеме.
Важно!
Если пользовательская функция обратного вызова вызывает подпрограмму обратного вызова очереди по умолчанию, она должна передать указатель void, возвращенный SetupInitDefaultQueueCallback или SetupInitDefaultQueueCallbackEx , в подпрограмму обратного вызова по умолчанию.