#define WinUSB_Set(h, fn, required) \
do { \
WinUSBX[SUB_API_WINUSB].fn = (WinUsb_##fn##_t)GetProcAddress(h, "WinUsb_" #fn); \
if (required && (WinUSBX[SUB_API_WINUSB].fn == NULL)) { \
usbi_err(ctx, "GetProcAddress() failed for WinUsb_%s", #fn); \
goto cleanup_winusb; \
} \
} while (0)