ae803b24d5
apple / swift (push) Failing after 2s
apple / screenshots (push) Has been skipped
windows-drivers / probe-and-proto (push) Successful in 19s
windows-drivers / driver-build (push) Successful in 1m6s
windows-host / package (push) Successful in 5m17s
ci / web (push) Has been cancelled
ci / docs-site (push) Has been cancelled
ci / bench (push) Has been cancelled
ci / rust (push) Has been cancelled
android / android (push) Has been cancelled
deb / build-publish (push) Has been cancelled
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 5s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 4s
decky / build-publish (push) Has been cancelled
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Has been cancelled
docker / deploy-docs (push) Has been cancelled
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Has been cancelled
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Has been cancelled
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Has been cancelled
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Has been cancelled
Port-plan critique #1: convert "the (?i).*iddcx.* allowlist may miss a symbol the full driver needs" from a box-only surprise into a CI compile gate. New wdk-probe/src/iddcx_surface_assert.rs size_of-asserts every *2/HDR struct (IDDCX_TARGET_MODE2/PATH2/METADATA2, IDARG_*RELEASEANDACQUIREBUFFER2 — these embed DISPLAYCONFIG_*/LUID, which RESOLVE from crate::types: no allowlist gap), None-asserts all 14 inbound PFN_IDD_CX_* callbacks, and confirms the .Size machinery (IddStructures/IddStructureCount/IddClientVersionHigherThanFramework/ _IDDSTRUCTENUM::INDEX_*) + the FP16/HIGH_COLOR_SPACE flags. Box-built green; the wdk-sys binding is proven complete for the ENTIRE driver, not just init. Also silence the bindgen naming lints in the iddcx module. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
44 lines
1.9 KiB
Rust
44 lines
1.9 KiB
Rust
// Copyright (c) Microsoft Corporation
|
|
// License: MIT OR Apache-2.0
|
|
|
|
//! Direct FFI bindings to IddCx APIs from the Windows Driver Kit (WDK)
|
|
//!
|
|
//! This module contains all bindings to functions, constants, methods,
|
|
//! constructors and destructors in the following headers: `iddcx/1.10/IddCx.h`. Types are not included in this module, but are available in the
|
|
//! top-level `wdk_sys` module.
|
|
|
|
#[allow(
|
|
missing_docs,
|
|
reason = "most items in the WDK headers have no inline documentation, so bindgen is unable to \
|
|
generate documentation for their bindings"
|
|
)]
|
|
mod bindings {
|
|
// The WDK IddCx C names (PFN_IDD_CX_*, EvtIddCx* fields, *TableIndex consts) are not Rust-cased;
|
|
// bindgen emits them verbatim. Suppress the style lints for the generated surface.
|
|
#![allow(non_camel_case_types, non_snake_case, non_upper_case_globals)]
|
|
#[allow(
|
|
clippy::wildcard_imports,
|
|
reason = "the underlying c code relies on all type definitions being in scope, which \
|
|
results in the bindgen generated code relying on the generated types being in \
|
|
scope as well"
|
|
)]
|
|
#[allow(
|
|
unused_imports,
|
|
reason = "in certain versions of the WDK, there are no functions related to IddCx that can \
|
|
be generated by bindgen, so these types are unused"
|
|
)]
|
|
use crate::types::*;
|
|
|
|
// `UINT` (= unsigned int) is referenced by IddCx/DXGI/OPM structs but wdk-sys never uses it, so it
|
|
// is absent from crate::types. Define it here, in the same scope the generated bindings see.
|
|
pub type UINT = ::core::ffi::c_uint;
|
|
|
|
include!(concat!(env!("OUT_DIR"), "/iddcx.rs"));
|
|
}
|
|
#[allow(
|
|
unused_imports,
|
|
reason = "in certain versions of the WDK, there are no functions related to IddCx that can be \
|
|
generated by bindgen, so the `bindings` module is empty"
|
|
)]
|
|
pub use bindings::*;
|