static NDIS_STATUS ReadGlobalConfigurationEntry(NDIS_HANDLE cfg, const char *_name, PULONG pValue) { NDIS_STATUS status; PNDIS_CONFIGURATION_PARAMETER pParam = NULL; NDIS_STRING name = {0}; const char *statusName; NDIS_PARAMETER_TYPE ParameterType = NdisParameterInteger; NdisInitializeString(&name, (PUCHAR)_name); #pragma warning(push) #pragma warning(disable:6102) NdisReadConfiguration( &status, &pParam, cfg, &name, ParameterType); if (status == NDIS_STATUS_SUCCESS) { *pValue = pParam->ParameterData.IntegerData; statusName = "value"; } else { statusName = "nothing"; } #pragma warning(pop) DPrintf(2, ("[%s] %s read for %s - 0x%x\n", __FUNCTION__, statusName, _name, *pValue)); if (name.Buffer) NdisFreeString(name); return status; }
static void RetrieveDriverConfiguration() { NDIS_CONFIGURATION_OBJECT co; NDIS_HANDLE cfg, params; NDIS_STATUS status; DEBUG_ENTRY(2); co.Header.Type = NDIS_OBJECT_TYPE_CONFIGURATION_OBJECT; co.Header.Revision = NDIS_CONFIGURATION_OBJECT_REVISION_1; co.Header.Size = NDIS_SIZEOF_CONFIGURATION_OBJECT_REVISION_1; co.Flags = 0; co.NdisHandle = DriverHandle; status = NdisOpenConfigurationEx(&co, &cfg); if (status == NDIS_STATUS_SUCCESS) { NDIS_STRING paramsName = {0}; #pragma warning(push) #pragma warning(disable:6102) NdisInitializeString(¶msName, (PUCHAR)"Parameters"); NdisOpenConfigurationKeyByName(&status, cfg, ¶msName, ¶ms); if (status == NDIS_STATUS_SUCCESS) { ReadGlobalConfigurationEntry(params, "DisableMSI", &bDisableMSI); ReadGlobalConfigurationEntry(params, "EarlyDebug", (PULONG)&resourceFilterLevel); NdisCloseConfiguration(params); } #pragma warning(pop) NdisCloseConfiguration(cfg); if (paramsName.Buffer) NdisFreeString(paramsName); } }
// Create a new Unicode string UNICODE *NewUnicode(char *str) { UNICODE *u; // Validate arguments if (str == NULL) { return NULL; } // Memory allocation u = NeoZeroMalloc(sizeof(UNICODE)); if (u == NULL) { return NULL; } // String initialization NdisInitializeString(&u->String, str); return u; }