WBF wrapper architecture

flowchart LR
  Windows[Windows Biometric Framework] --> Adapter[Sensor / Engine / Storage adapters]
  Adapter --> Device[CBiometricDriver + CBiometricDevice]
  Device --> Capture[CaptureImage + worker threads]
  Device --> Power[Power, wake, pairing and side-channel control]
  Capture --> Bridge[vfmCoreEntry]
  Power --> Bridge
  Adapter --> Bridge
  Bridge --> Core[niseCore VFM API]
  Device --> Bus[USB / SPI / HID device classes]
  Bus --> Sensor[Fingerprint sensor]
  Customer[CustomerProjects props] -. configures .-> Adapter
  Customer -. configures .-> Device
  Services[Policy / reset / monitor / CTAP services] --> Device
  Package[Driver and service packages] -. delivers .-> Device

Boundaries

ComponentSourceArchitectural responsibility
WBDI driverwbdi/driver/Owns CBiometricDriver/CBiometricDevice, WDF requests, capture threads, power/wake handling and USB/SPI/HID transports.
WBF adaptersadapters/synaFpAdapter/Implements sensor, engine and storage adapter callbacks plus generic adapter state.
niseCore bridgewbdi/driver/vfmCoreEntry.*Maps Windows driver operations to the VFM/niseCore API.
Capture pipelinewbdi/driver/CaptureImage.* and BiometricDevice.*Coordinates asynchronous capture, cancellation, completion and notify-wake.
Customer projectsCustomerProjects/Defines per-customer properties, matcher/options, package and feature selection.
Servicesservices/Provides policy/reset/monitoring/analysis and CTAP-related services where selected.
Installer/packagewbdi/package/, services/package/, coInstallers/Builds driver/service packages and install-time components.
Optional UI/utilitiesapplications/, SynUwpService/, SynaSmi/, utilities/Supplies customer-selected applications, RPC/UWP service and diagnostics.

Change-safety rules

  • Follow calls and data across component boundaries; a changed header or customer property can affect multiple binaries.
  • Keep source revision and branch explicit because configured branches differ substantially.
  • Validate both the component and its direct consumers.
  • Treat optional/customer-selected components as conditional, not universally deployed.