To remove a component from the MIF database, the component instrumentation fills out a DmiCiUninstallData block and sends it to the service layer with the DmiInvoke() function call.
The format for the command block is: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
Variable Name
³ Table 43. DmiCiUninstallData Command Block ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ OFFSET ³ SIZE ³ TYPE ³ VARIABLE NAME ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 0 ³ 64 ³ STRUCT ³ DmiMgmtCommand ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 64 ³ 4 ³ INT ³ iComponentId ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DmiMgmtCommand
Variable Description
Issuing DmiCiUninstallData displays an example of how to issue the DmiCiUninstallData
command to the CI. IssuingDmiCiUninstallData
ULONG UnInstallMIF(ULONG CompID) // Receive thread -- handles all confirm processing { DMI_CiUninstallData_t Unload; ULONG RC; memset(&Unload,0,sizeof(DMI_CiUninstallData_t)); // clear it out first Unload.DmiMgmtCommand.iLevelCheck = DMI_LEVEL_CHECK; Unload.DmiMgmtCommand.iCommand = DmiCiUninstallCmd; Unload.DmiMgmtCommand.iCmdLen = sizeof(DMI_CiUninstallData_t); Unload.DmiMgmtCommand.iMgmtHandle = YOUR_MGMT_HANDLE; Unload.DmiMgmtCommand.iCmdHandle = YOUR_COMMAND_HANDLE; Unload.DmiMgmtCommand.iRequestCount = 1; Unload.iComponentId = CompID; return DmiInvoke((DMI_MgmtCommand_t *)&Unload); // issue the unload command }