| Previous | Next |
| INPUT_E_DEVICE_INFO | INPUT_E_DEVICE_PROPERTY |
INPUT_E_TRANSFORM
The scope of INPUT_E_TRANSFORM is pointer coordinate transformation. The coordinate transform required to map pointer data into the target coordinate system failed. Keep 0x80400007 beside the returning method because a wrapper can replace this distinction with a generic subsystem message.
Where the failure occurs
When it is returned, pointer coordinates can pass through physical-device units, desktop coordinates, per-monitor DPI scaling, client coordinates, rotation, and an application transform. Each stage must produce finite values and an invertible mapping where an inverse is required. Logging only the final x and y values hides singular matrices, stale HWND geometry, mixed units, and overflow introduced earlier.
Inspect the following boundary: pointer input can cross device, screen, client, logical, DPI-scaled, rotated, and application-defined spaces. A singular matrix, invalid calibration, stale window geometry, overflow, or mismatched units can make the mapping impossible or non-finite.
Avoid broad resets
INPUT_E_PACKET may flag invalid source coordinates; this result indicates that valid-looking data could not be converted through the requested mapping. Do not clamp every failed result into the window bounds. Clamping hides a broken matrix and can synthesize clicks at an unrelated edge.
Telemetry with explanatory value
| Record | Why it matters here |
|---|---|
| Source and destination coordinate spaces with DPI and orientation | Preserving source and destination coordinate spaces with DPI and orientation provides the evidence needed to test this distinction: iNPUT_E_PACKET may flag invalid source coordinates; this result indicates that valid-looking data could not be converted through the requested mapping. |
| Full transform matrix and determinant | Recording full transform matrix and determinant separates the pointer coordinate transformation boundary from a later wrapper symptom. |
| Raw and transformed coordinates around the failure | In this result diagnostics, recording raw and transformed coordinates around the failure ties the HRESULT to the pointer coordinate transformation boundary rather than to the final visible failure. |
| Window bounds, monitor identity, and display-change generation | Comparing window bounds, monitor identity, and display-change generation shows whether this result follows input, object state, or environment. |
Smallest faithful reproducer
Start with identity transforms and a stable window on one monitor., add DPI conversion, rotation, calibration, and application matrices one at a time while retaining both the source and destination rectangles used for each conversion.
- When it is returned, test the identity transform with the same packets.
- Apply translation and scale before adding rotation or calibration.
- reject NaN, infinity, and singular matrices at construction time.
- When it is returned, rebuild transforms after DPI, orientation, monitor, or window changes.
Separate object, input, and environment
| Test | Interpretation | Hold constant |
|---|---|---|
| Same environment, reduced input | If it disappears with a smaller faithful case, complexity within pointer coordinate transformation is implicated. | Keep source and destination coordinate spaces with DPI and orientation fixed while simplifying raw and transformed coordinates around the failure. |
| Same input, fresh object generation | If it changes after rebuilding state, examine ownership across the packet producer, frame collector, and interaction consumer. | Place full transform matrix and determinant on the timeline of the last successful transition. |
| Same operation on a controlled second path | If it follows one environment, the failure is not explained by source data alone. | Compare pointer type, device identity, window, DPI context, and callback phase while preserving window bounds, monitor identity, and display-change generation. |
Completion test
A correction for it should let the operation at the pointer coordinate transformation boundary complete repeatedly under the original supported conditions. Repeat the control that begins with “Test the identity transform with the same packets” and confirm that the following lifecycle step also succeeds. Keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.
Technical references
When it is returned, these references define the public API family, object model, or error list used to interpret this status.
- Microsoft: COM error codes for Input and graphics.
- Microsoft: Pointer Input Messages and Notifications.
- Microsoft: POINTER_INFO structure and pointer lifetime.
- Microsoft: GetPointerFrameInfoHistory.
- Microsoft: Interaction Context API.
Looking for a different code? Search another status or error code.