NdisWriteErrorLogEntry function (ndis.h)

NdisWriteErrorLogEntry writes an entry to the system I/O error log file.

Syntax

void NdisWriteErrorLogEntry(
  [in] NDIS_HANDLE     NdisAdapterHandle,
  [in] NDIS_ERROR_CODE ErrorCode,
  [in] ULONG           NumberOfErrorValues,
       ...             
);

Parameters

[in] NdisAdapterHandle

Specifies the handle representing the NIC that is the cause of the I/O error to be logged. This handle is an input parameter to MiniportInitializeEx.

[in] ErrorCode

Specifies the NDIS_ERROR_CODE_XXX code that best describes the I/O error as one of the following values:

NDIS_ERROR_CODE_RESOURCE_CONFLICT

The driver could not access a required resource.

NDIS_ERROR_CODE_OUT_OF_RESOURCES

The hardware or driver ran out of resources.

NDIS_ERROR_CODE_HARDWARE_FAILURE

The driver detected a hardware error.

NDIS_ERROR_CODE_ADAPTER_NOT_FOUND

The network adapter was not found.

NDIS_ERROR_CODE_INTERRUPT_CONNECT

The interrupt registration failed.

NDIS_ERROR_CODE_DRIVER_FAILURE

A driver failure occurred that does not match any of the other error conditions.

NDIS_ERROR_CODE_BAD_VERSION

The driver detected a version mismatch.

NDIS_ERROR_CODE_TIMEOUT

A timeout expired.

NDIS_ERROR_CODE_NETWORK_ADDRESS

A network address is invalid.

NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION

The requested driver configuration is not supported.

NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER

The network adapter hardware provided an invalid value.

NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER

A driver configuration parameter is missing in the registry.

NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS

The I/O base address for the network adapter hardware is invalid.

NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL

The amount of receive buffer memory that is available is too small to receive data.

NDIS_ERROR_CODE_ADAPTER_DISABLED

The network adapter hardware is disabled.

[in] NumberOfErrorValues

Specifies the number of ULONG values to follow this parameter.

...

Specifies a variable-sized array of ULONGs associated with the error to be logged.

Return value

None

Remarks

NdisWriteErrorLogEntry allocates an I/O error log record, fills in the record with the supplied information about the error, and then writes the record to the I/O error log file.

The system places a limit on the potential size of an error log record. For Windows 2000 and later versions, the limit is defined as ERROR_LOG_MAXIMUM_SIZE. The NumberOfErrorValues passed to NdisWriteErrorLogEntry therefore has a system-enforced limit, which is considerably less than the maximum possible value for a ULONG.

In practice, few callers of NdisWriteErrorLogEntry even approach the limit for NumberOfErrorValues because supplying many additional NDIS_STATUS_XXX values is not particularly helpful to the user or system administrator who later reads the error log, using the Win32 event viewer. Logging an I/O error at every possible opportunity is not particularly helpful to users either, so a miniport driver should log only critical I/O errors that can help a user or system administrator to debug a network failure for which the NIC is responsible on a particular machine or a configuration resource conflict discovered during driver initialization.

In general, a miniport driver calls NdisWriteErrorLogEntry during initialization from its MiniportInitializeEx function if it cannot initialize a NIC that it controls or cannot allocate the hardware resources it needs to carry out I/O operations on a NIC. A miniport driver also can call NdisWriteErrorLogEntry when a device-reset operation fails due to unrecoverable hardware error(s). Logging these kinds of I/O errors helps users or system administrators to identify a badly configured NIC or a NIC with failing hardware components.

Requirements

Requirement Value
Minimum supported client Supported for NDIS 6.0 and NDIS 5.1 drivers (see NdisWriteErrorLogEntry (NDIS 5.1)) in Windows Vista. Supported for NDIS 5.1 drivers (see NdisWriteErrorLogEntry (NDIS 5.1)) in Windows XP.
Target Platform Universal
Header ndis.h (include Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI compliance rules Irql_Miscellaneous_Function(ndis)

See also

MiniportInitializeEx

MiniportResetEx

NdisMSetMiniportAttributes