static MI_Result NewDynamicInstance(_In_ MI_Context* context, _In_ const MI_Char* className, MI_Uint32 flags, _Outptr_ MI_Instance** instance) { #if defined(_MSC_VER) return Instance_InitDynamic(instance, className, flags); #else return Instance_NewDynamic(instance, className, flags, NULL); #endif }
/* Convert config to instance */ _Use_decl_annotations_ MI_Result Config_ToInstance( Batch* batch, const Config* config, MI_Instance **instanceOut) { MI_Instance *instance; MI_Result r; MI_Value value; MI_Char* className = Batch_StrTcsdup(batch, config->className); r = Instance_NewDynamic(&instance, CONFIG_CLASSNAME, MI_FLAG_CLASS, batch); if (r != MI_RESULT_OK) return r; value.string = className; r = MI_Instance_AddElement(instance, MI_T("className"), &value, MI_STRING, MI_FLAG_KEY); if (r != MI_RESULT_OK) return r; /* value.string = Batch_StrTcsdup(batch, config->configFilepath); r = MI_Instance_AddElement(instance, MI_T("configFilepath"), &value, MI_STRING, 0); if (r != MI_RESULT_OK) return r; */ value.uint32 = config->testGroup; r = MI_Instance_AddElement(instance, MI_T("testGroup"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->intervalMS; r = MI_Instance_AddElement(instance, MI_T("intervalMS"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->failAfterCount; r = MI_Instance_AddElement(instance, MI_T("failAfterCount"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->failResult; r = MI_Instance_AddElement(instance, MI_T("failResult"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->initBehavior; r = MI_Instance_AddElement(instance, MI_T("initBehavior"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->initResultCode; r = MI_Instance_AddElement(instance, MI_T("initResultCode"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->initTimeoutMS; r = MI_Instance_AddElement(instance, MI_T("initTimeoutMS"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->finalizeBehavior; r = MI_Instance_AddElement(instance, MI_T("finalizeBehavior"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->finalizeResultCode; r = MI_Instance_AddElement(instance, MI_T("finalizeResultCode"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->postBehavior; r = MI_Instance_AddElement(instance, MI_T("postBehavior"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->miscTestSubGroup; r = MI_Instance_AddElement(instance, MI_T("miscTestSubGroup"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; if (config->subscribeBookmark) { value.string = Batch_StrTcsdup(batch, config->subscribeBookmark); r = MI_Instance_AddElement(instance, MI_T("subscribeBookmark"), &value, MI_STRING, 0); if (r != MI_RESULT_OK) return r; } if (config->providerBookmark) { value.string = Batch_StrTcsdup(batch, config->providerBookmark); r = MI_Instance_AddElement(instance, MI_T("providerBookmark"), &value, MI_STRING, 0); if (r != MI_RESULT_OK) return r; } if (config->dialect) { value.string = Batch_StrTcsdup(batch, config->dialect); r = MI_Instance_AddElement(instance, MI_T("dialect"), &value, MI_STRING, 0); if (r != MI_RESULT_OK) return r; } if (config->expression) { value.string = Batch_StrTcsdup(batch, config->expression); r = MI_Instance_AddElement(instance, MI_T("expression"), &value, MI_STRING, 0); if (r != MI_RESULT_OK) return r; } value.uint32 = config->evalResult; r = MI_Instance_AddElement(instance, MI_T("evalResult"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->logLoadUnloadCall; r = MI_Instance_AddElement(instance, MI_T("logLoadUnloadCall"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->currentSubscriptionTypes; r = MI_Instance_AddElement(instance, MI_T("currentSubscriptionTypes"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; value.uint32 = config->supportedSubscriptionTypes; r = MI_Instance_AddElement(instance, MI_T("supportedSubscriptionTypes"), &value, MI_UINT32, 0); if (r != MI_RESULT_OK) return r; *instanceOut = instance; return MI_RESULT_OK; }