Вот по вашей теме нашлось
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registerdevicenotificationw и пример использования
https://docs.microsoft.com/ru-ru/windows/win32/devio/registering-for-device-notification.
Т.е. вам нужно иметь winapi-Окно b зарегистрировать его, чтобы оно получало сообщения от системы о наступлении событий, в этом случае - какие-то события с усб. И будут прилетать эти сообщения в оконную процедуру.
Вы знаете, что такое оконная процедура, и как в целом ето работает? В ББ можно сделать такую процедуру, и получать любые уведомления от ОС.
********* ПРо Callback:
Вот например DialogBoxParamA, которая создает диалоговое окно из какого-то шаблона lpTemplateName, и прежде чем его показать вызывает функцию, адрес которой вы должны передать ей в параметре lpDialogFunc.
Код:
INT_PTR DialogBoxParamA(
HINSTANCE hInstance,
LPCSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogFunc,
LPARAM dwInitParam
);
lpDialogFunc - это указатель на функцию, или ее адрес. Вы должны написать эту функцию, потом вызвать DialogBoxParamA, передав ей адрес своей функции; и тогда в нужный момент Windows вызовет вашу функцию.