What does HRESULT 0x00340001 (ERROR_NDIS_INDICATION_REQUIRED) mean?

 
Previous Next
PLA_S_PROPERTY_IGNORED ERROR_HV_PENDING_PAGE_REQUESTS

ERROR_NDIS_INDICATION_REQUIRED

NDIS request will complete through a later status indication

ERROR_NDIS_INDICATION_REQUIRED is HRESULT 3407873 (0x00340001) from winerror.h. AllStat describes it as “The request will be completed later by NDIS status indication.” In the Windows platform service that returned an informational HRESULT, the value reports a nonfailure state that must not be collapsed into plain S_OK.

The high-level request that returned ERROR_NDIS_INDICATION_REQUIRED is complete only after the caller validates the represented condition.

What must be true before accepting it

Verify that the driver retains request context and completion occurs exactly once through the indicated NDIS path. For ERROR_NDIS_INDICATION_REQUIRED, that proof prevents usable partial state from being confused with full completion.

For ERROR_NDIS_INDICATION_REQUIRED, also confirm that returned outputs belong to the current operation generation and were not inherited from an earlier attempt.

Where the status is encountered

  • ERROR_NDIS_INDICATION_REQUIRED can appear during certificate provisioning, app activation, performance data collection, NDIS, or troubleshooting; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.
  • ERROR_NDIS_INDICATION_REQUIRED can appear during system management code that must preserve a nonfailure result; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.
  • ERROR_NDIS_INDICATION_REQUIRED can appear during automation that would otherwise collapse the HRESULT to a Boolean; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.

Keep ERROR_NDIS_INDICATION_REQUIRED attached to the operation that returned it. Interpreting ERROR_NDIS_INDICATION_REQUIRED outside that API contract can turn a normal continuation or partial result into an incorrect retry or false completion.

Diagnostic sequence

  • Capture raw 0x00340001 and ERROR_NDIS_INDICATION_REQUIRED before exceptions, signed formatting, or a generic success wrapper removes the symbolic value.
  • Identify the interface, method, callback, service, driver, or broker that returned ERROR_NDIS_INDICATION_REQUIRED, including component version, process, thread, and correlation ID.
  • Prove the decisive condition for ERROR_NDIS_INDICATION_REQUIRED: the driver retains request context and completion occurs exactly once through the indicated NDIS path.
  • For ERROR_NDIS_INDICATION_REQUIRED, inspect every output, count, object handle, callback, queue entry, media item, report, transaction, topology element, or signaling response the call produced.
  • Compare state immediately before and after ERROR_NDIS_INDICATION_REQUIRED and verify that ownership, lifetime, persistence, and user-visible effects match the status.
  • Reproduce ERROR_NDIS_INDICATION_REQUIRED with the smallest input, then change only the suspected cause and confirm that the return value or postcondition changes as predicted.

Evidence and telemetry

  • Preserve OID or request ID for ERROR_NDIS_INDICATION_REQUIRED.
  • Preserve adapter and miniport state for ERROR_NDIS_INDICATION_REQUIRED.
  • Preserve pending buffers for ERROR_NDIS_INDICATION_REQUIRED.
  • Preserve expected indication code for ERROR_NDIS_INDICATION_REQUIRED.
  • Preserve completion time and result for ERROR_NDIS_INDICATION_REQUIRED.

For ERROR_NDIS_INDICATION_REQUIRED, also record UTC time, process and thread IDs, component version, operation generation, and a correlation ID. Keep sensitive ERROR_NDIS_INDICATION_REQUIRED content out of logs; use lengths, hashes, GUIDs, and policy-safe metadata where possible.

Correct handling and recovery

Return pending semantics to the caller, keep buffers and state valid, and complete from the matching status indication. Add timeout diagnostics without completing twice.

Do not use an unchanged tight retry loop for ERROR_NDIS_INDICATION_REQUIRED; it can duplicate effects or conceal a terminal state.

Practical scenario

A miniport starts an asynchronous link operation and returns this status. It later emits the documented indication and releases request context once.

A regression test should reproduce ERROR_NDIS_INDICATION_REQUIRED, assert all relevant outputs and state, then change only the decisive condition and verify ordinary completion or the expected neighboring result.

Difference from nearby results

This is not immediate request success; it transfers completion responsibility to a later NDIS indication.

For ERROR_NDIS_INDICATION_REQUIRED, the neighboring result changes whether output is final, more work remains, or fallback is required.

Developer and administrator guidance

When ERROR_NDIS_INDICATION_REQUIRED crosses COM, RPC, managed, scripting, driver, or service boundaries, preserve the unsigned 32-bit value. Unit tests for ERROR_NDIS_INDICATION_REQUIRED should assert the code-specific postcondition, not only success severity.

For ERROR_NDIS_INDICATION_REQUIRED, preserve first-occurrence context before restarting services, clearing stores, or rebuilding configuration. Document who owns continuation, cancellation, cleanup, fallback, and user messaging for ERROR_NDIS_INDICATION_REQUIRED.

References


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