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
}