NdisReadConfiguration returns the value of a named entry of the specified type from the registry, given the handle to an open registry key.
VOID
NdisReadConfiguration(
OUT PNDIS_STATUS Status,
OUT PNDIS_CONFIGURATION_PARAMETER *ParameterValue,
IN NDIS_HANDLE ConfigurationHandle,
IN PNDIS_STRING Keyword,
IN NDIS_PARAMETER_TYPE ParameterType
);
typedef struct _NDIS_CONFIGURATION_PARAMETER {
NDIS_PARAMETER_TYPE ParameterType;
union {
ULONG IntegerData;
NDIS_STRING StringData;
} ParameterData;
} NDIS_CONFIGURATION_PARAMETER, *PNDIS_CONFIGURATION_PARAMETER;
The members of this structure contain the following data:
Alternatively, pointer to a caller-supplied NDIS_STRING_CONSTANT specifying one of the following predefined entry names along with predefined return values:
| Predefined Entry Name | Predefined Return Values |
|---|---|
| Environment | NdisEnvironmentWindowsNt NdisEnvironmentWindows |
| ProcessorType | NdisProcessorX86 // // Following possible only if // current machine’s Environment == // NdisEnvironmentWindowsNt // NdisProcessorAlpha // Following possible only if legacy driver NdisProcessorMips NdisProcessorPpc |
| NdisVersion | 0xMMMMmmmm // where MMMM is the major version and // mmmm the minor version number. // For example, 0x00050000 indicates that // the highest NDIS version supported by // the system is major version 5, minor // version 0. |
Declared in Ndis.h. Include Ndis.h.
In the configuration registry of Windows 2000 and later versions, an NDIS keyword is a synonym for a value entry name. Such a name is a counted sequence of Unicode characters, terminated with a NULL.
Every NDIS driver can set up configuration information in the registry for itself under the driver’s Parameters key using an installation script. For example, a protocol driver might store its own name as an entry with a preformatted string value that can be passed in calls to NdisRegisterProtocol.
Each NIC driver also has associated value entries under the driver’s Parameters registry key. The value entries for any particular NIC driver can be device-dependent in nature. For example, an Ethernet NIC driver might have keywords such as InterruptNumber, SharedMemoryAddress, and MulticastListSize. The value associated with such an NDIS keyword can be either an integer (ULONG-type) or a string (NDIS_STRING-type). For example, the set of possible values for the already mentioned InterruptNumber entry might be NdisParameterInteger values 2, 3, 4, or 5, or the equivalents in hexadecimal as NdisParameterHexInteger values.
NdisReadConfiguration buffers and copies the caller-supplied string at Keyword and releases the storage it allocates for this copy before it returns control to the caller. The memory it allocates for the NDIS_CONFIGURATION_PARAMETER structure is freed when the driver releases the ConfigurationHandle with NdisCloseConfiguration. The caller of NdisReadConfiguration is responsible for releasing the buffered string at Keyword.
Note that NDIS does not validate values that a driver reads from the registry. The caller of NdisReadConfiguration must therefore not make any assumptions about such values and must validate each value read from the registry. If the caller determines that a value is out of bounds, it should use a default value instead.
For more information about setup and installation scripts, see Device Installation Overview.
Callers of NdisReadConfiguration run at IRQL = PASSIVE_LEVEL.
ANSI_STRING, NdisAnsiStringToUnicodeString, NdisCloseConfiguration, NdisFreeString, NdisInitAnsiString, NdisInitializeString, NdisInitUnicodeString, NdisOpenConfiguration, NdisOpenConfigurationKeyByIndex, NdisOpenConfigurationKeyByName, NdisOpenProtocolConfiguration, NdisReadNetworkAddress, NdisUnicodeStringToAnsiString, NdisWriteConfiguration, UNICODE_STRING