Add telemetry for logging GPU and NPU driver information in ONNX Runtime (#24734)
### Description
This feature enhances telemetry by gathering and logging driver
information for GPU and NPU devices detected on Windows systems. The
implementation includes:
- **Driver Information Collection**:
- Introduced a `device_version_info` map to categorize driver
information by device type (GPU or NPU).
- For each detected device:
- Queries the Windows Registry for driver version information using
`RegQueryValueExW`.
- Collects driver names (device descriptions) and versions into the
appropriate device type category.
- **Telemetry Logging**:
- Calls `LogDriverInfoEvent` with the following parameters:
- `device_class`: Indicates the device type ("GPU" or "NPU").
- `driver_names`: Comma-separated list of driver names as wide strings.
- `driver_versions`: Comma-separated list of driver versions as wide
strings.
### Motivation and Context
Having telemetry for GPU and NPU driver information is essential for
monitoring and diagnosing performance issues between driver versions.
### Performance and Testing
This change was tested on Windows with a variety of sample apps along
with onnxruntime_test_all
and onnxruntime_perf_test
The code adds an additional 25-30 microseconds for each NPU/GPU that
gets enumerated.
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>