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 }