Index: /trunk/src/VBox/Main/BusAssignmentManager.cpp
===================================================================
--- /trunk/src/VBox/Main/BusAssignmentManager.cpp	(revision 33687)
+++ /trunk/src/VBox/Main/BusAssignmentManager.cpp	(revision 33688)
@@ -30,4 +30,9 @@
     {
         char szDevName[16];
+
+        PciDeviceRecord(const char* pszName)
+        {
+            ::strncpy(szDevName, pszName, sizeof(szDevName));
+        }
     };
 
@@ -46,6 +51,7 @@
     HRESULT init(ChipsetType_T chipsetType);
 
+    HRESULT record(const char* pszName, PciBusAddress& Address);
     HRESULT autoAssign(const char* pszName, PciBusAddress& Address);
-    bool checkAvailable(PciBusAddress& Address);    
+    bool    checkAvailable(PciBusAddress& Address);
 };
 
@@ -53,4 +59,11 @@
 {
     mChipsetType = chipsetType;
+    return S_OK;
+}
+
+
+HRESULT BusAssignmentManager::State::record(const char* pszName, PciBusAddress& Address)
+{
+    mPciMap.insert(PciMap::value_type(Address, PciDeviceRecord(pszName)));
     return S_OK;
 }
@@ -66,5 +79,5 @@
 {
     PciMap::const_iterator it = mPciMap.find(Address);
-    
+
     return (it == mPciMap.end());
 }
@@ -123,5 +136,5 @@
 
 HRESULT BusAssignmentManager::assignPciDevice(const char* pszDevName, PCFGMNODE pCfg,
-                                           PciBusAddress& Address,    bool fAddressRequired)
+                                              PciBusAddress& Address,    bool fAddressRequired)
 {
     HRESULT rc = S_OK;
@@ -147,4 +160,8 @@
     Assert(Address.valid());
 
+    rc = pState->record(pszDevName, Address);
+    if (FAILED(rc))
+        return rc;
+
     rc = InsertConfigInteger(pCfg, "PCIBusNo",             Address.iBus);
     if (FAILED(rc))
