What does HRESULT 0x80660001 (E_AUDIO_ENGINE_NODE_NOT_FOUND) mean?

 
Previous Next
E_BLUETOOTH_ATT_UNKNOWN_ERROR E_HDAUDIO_EMPTY_CONNECTION_LIST

E_AUDIO_ENGINE_NODE_NOT_FOUND

E_AUDIO_ENGINE_NODE_NOT_FOUND belongs to PortCls audio-engine node discovery. A miniport claimed IMiniportAudioEngineNode support but PortCls could not locate the corresponding audio-engine node in its topology. The diagnostic goal for E_AUDIO_ENGINE_NODE_NOT_FOUND is to identify the first rejecting object and transition, not merely the final high-level symptom.

Start with the returning API

For E_AUDIO_ENGINE_NODE_NOT_FOUND, an audio miniport that exposes the audio-engine interface must make its topology descriptor and node identifiers agree with that claim. When E_AUDIO_ENGINE_NODE_NOT_FOUND is returned, PortCls cannot infer a missing engine node from friendly endpoint names. The node table, KS topology, miniport interfaces, and subdevice on which the interface is exposed must all describe the same logical engine in the E_AUDIO_ENGINE_NODE_NOT_FOUND path.

For E_AUDIO_ENGINE_NODE_NOT_FOUND, inspect the following boundary: the interface claim and the KS topology must describe the same node. A missing node can result from a wrong node ID, inconsistent descriptor tables, exposing the interface on the wrong subdevice, or failing to create the topology expected by PortCls.

Diagnostic evidence matrix

RecordWhy it matters here
Adapter and subdevice instance IDsComparing adapter and subdevice instance IDs shows whether E_AUDIO_ENGINE_NODE_NOT_FOUND follows input, object state, or environment.
Miniport interface query result and audio-engine node IDPreserving miniport interface query result and audio-engine node ID provides the evidence needed to test this distinction: this differs from E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED: the current failure is a specific PortCls engine-node contract, not total failure to create codec subdevices.
KS filter node descriptors and automation tablesFor E_AUDIO_ENGINE_NODE_NOT_FOUND, recording KS filter node descriptors and automation tables separates the PortCls audio-engine node discovery boundary from a later wrapper symptom.
PortCls trace and the call that first asks for the engine nodeIn E_AUDIO_ENGINE_NODE_NOT_FOUND diagnostics, recording PortCls trace and the call that first asks for the engine node ties the HRESULT to the PortCls audio-engine node discovery boundary rather than to the final visible failure.

Reproduce without destructive cleanup

Compare the descriptor tables used at registration with the node ID returned by the miniport in the E_AUDIO_ENGINE_NODE_NOT_FOUND path. For E_AUDIO_ENGINE_NODE_NOT_FOUND, a minimal SysVAD-derived topology is a better control than an unrelated working USB or Bluetooth endpoint because those devices use different driver and topology paths.

  1. For E_AUDIO_ENGINE_NODE_NOT_FOUND, compare the node ID returned by the miniport with the published topology descriptors.
  2. When E_AUDIO_ENGINE_NODE_NOT_FOUND is returned, run the same topology through the SysVAD sample structure as a control.
  3. Verify WaveRT and topology subdevices are paired as intended in the E_AUDIO_ENGINE_NODE_NOT_FOUND path.
  4. For E_AUDIO_ENGINE_NODE_NOT_FOUND, check build-time descriptor counts and conditional feature flags.

Useful comparison axes

TestInterpretationHold constant
Same environment, reduced inputIf E_AUDIO_ENGINE_NODE_NOT_FOUND disappears with a smaller faithful case, complexity within PortCls audio-engine node discovery is implicated.For E_AUDIO_ENGINE_NODE_NOT_FOUND, keep adapter and subdevice instance IDs fixed while simplifying KS filter node descriptors and automation tables.
Same input, fresh object generationIf E_AUDIO_ENGINE_NODE_NOT_FOUND changes after rebuilding state, examine ownership across the codec parser, miniport, PortCls subdevice builder, and endpoint-construction layer.For E_AUDIO_ENGINE_NODE_NOT_FOUND, place miniport interface query result and audio-engine node ID on the timeline of the last successful transition.
Same operation on a controlled second pathIf E_AUDIO_ENGINE_NODE_NOT_FOUND follows one environment, the failure is not explained by source data alone.For E_AUDIO_ENGINE_NODE_NOT_FOUND, compare PnP instance, codec revision, driver package, power state, and logical-device generation while preserving PortCls trace and the call that first asks for the engine node.

Limits of this code

This differs from E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED: the current failure is a specific PortCls engine-node contract, not total failure to create codec subdevices. For E_AUDIO_ENGINE_NODE_NOT_FOUND, do not remove IMiniportAudioEngineNode support merely to suppress the status if the driver still depends on engine-node properties.

What success must demonstrate

A correction for E_AUDIO_ENGINE_NODE_NOT_FOUND should let the operation at the PortCls audio-engine node discovery boundary complete repeatedly under the original supported conditions. Repeat the control that begins with “Compare the node ID returned by the miniport with the published topology descriptors” and confirm that the following lifecycle step also succeeds. For E_AUDIO_ENGINE_NODE_NOT_FOUND, keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.

Technical references

When E_AUDIO_ENGINE_NODE_NOT_FOUND is returned, these references define the public API family, object model, or error list used to interpret this status.


Looking for a different code? Search another status or error code.