af05f10145
Vendor the published, self-contained windows-drivers-rs 0.5.1 crates (wdk-build, wdk-sys) under vendor/ and add a first-class ApiSubset::Iddcx that bindgens iddcx/1.10/IddCx.h in an extra pass reusing bindgen::Builder::wdk_default (allowlist_file (?i).*iddcx.* — emits only IddCx items; WDF/DXGI types resolve to the shared base/wdf bindings, type-identity by construction). Mirrors the existing gpio/hid/spb subsets exactly: wdk-build gets the enum variant + iddcx_headers() (UMDF-only), wdk-sys gets generate_iddcx + the iddcx feature + pub mod iddcx. [patch.crates-io] redirects all wdk-sys/wdk-build (incl. wdk 0.4.1 transitive) to the patched copies. wdk-probe enables the iddcx feature. MAKE-OR-BREAK: does IddCx.h bindgen in wdk-sys config without a header conflict (issue #515) + does the generated module compile (type-identity)? CI answers it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
53 lines
1.9 KiB
Rust
53 lines
1.9 KiB
Rust
// Copyright (c) Microsoft Corporation
|
|
// License: MIT OR Apache-2.0
|
|
|
|
//! Any library dependency that depends on `wdk-sys` requires these stubs to
|
|
//! provide symbols to successfully compile and run tests.
|
|
//!
|
|
//! These stubs can be brought into scope by introducing `wdk-sys` with the
|
|
//! `test-stubs` feature in the `dev-dependencies` of the crate's `Cargo.toml`
|
|
|
|
#[cfg(any(driver_model__driver_type = "KMDF", driver_model__driver_type = "UMDF"))]
|
|
pub use wdf::*;
|
|
|
|
#[cfg(any(
|
|
driver_model__driver_type = "WDM",
|
|
driver_model__driver_type = "KMDF",
|
|
driver_model__driver_type = "UMDF"
|
|
))]
|
|
use crate::{DRIVER_OBJECT, NTSTATUS, PCUNICODE_STRING};
|
|
|
|
/// Stubbed version of `DriverEntry` Symbol so that test targets will compile
|
|
///
|
|
/// # Safety
|
|
///
|
|
/// This function should never be called, so its safety is irrelevant
|
|
#[cfg(any(
|
|
driver_model__driver_type = "WDM",
|
|
driver_model__driver_type = "KMDF",
|
|
driver_model__driver_type = "UMDF"
|
|
))]
|
|
// SAFETY: "DriverEntry" is the required symbol name for Windows driver entry points.
|
|
// No other function in this compilation unit exports this name, preventing symbol conflicts.
|
|
#[unsafe(export_name = "DriverEntry")] // WDF expects a symbol with the name DriverEntry
|
|
pub const unsafe extern "system" fn driver_entry_stub(
|
|
_driver: &mut DRIVER_OBJECT,
|
|
_registry_path: PCUNICODE_STRING,
|
|
) -> NTSTATUS {
|
|
0
|
|
}
|
|
|
|
#[cfg(any(driver_model__driver_type = "KMDF", driver_model__driver_type = "UMDF"))]
|
|
mod wdf {
|
|
use crate::ULONG;
|
|
|
|
/// Stubbed version of `WdfFunctionCount` Symbol so that test targets will
|
|
/// compile
|
|
// SAFETY: WdfFunctionCount is a required WDF symbol for test compilation.
|
|
// No other symbols in this crate export this name, preventing linker conflicts.
|
|
#[unsafe(no_mangle)]
|
|
pub static mut WdfFunctionCount: ULONG = 0;
|
|
|
|
include!(concat!(env!("OUT_DIR"), "/test_stubs.rs"));
|
|
}
|