Index: /trunk/src/VBox/Devices/Storage/DevFdc.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevFdc.cpp	(revision 64845)
+++ /trunk/src/VBox/Devices/Storage/DevFdc.cpp	(revision 64846)
@@ -141,4 +141,6 @@
     BlockDriverState *bs;
 #else /* VBOX */
+    /** Pointer to the owning device instance. */
+    R3PTRTYPE(PPDMDEVINS)           pDevIns;
     /** Pointer to the attached driver's base interface. */
     R3PTRTYPE(PPDMIBASE)            pDrvBase;
@@ -2669,4 +2671,24 @@
 
 
+/**
+ * @interface_method_impl{PDMIMEDIAPORT,pfnQueryDeviceLocation}
+ */
+static DECLCALLBACK(int) fdQueryDeviceLocation(PPDMIMEDIAPORT pInterface, const char **ppcszController,
+                                               uint32_t *piInstance, uint32_t *piLUN)
+{
+    fdrive_t *pDrv = RT_FROM_MEMBER(pInterface, fdrive_t, IPort);
+    PPDMDEVINS pDevIns = pDrv->pDevIns;
+
+    AssertPtrReturn(ppcszController, VERR_INVALID_POINTER);
+    AssertPtrReturn(piInstance, VERR_INVALID_POINTER);
+    AssertPtrReturn(piLUN, VERR_INVALID_POINTER);
+
+    *ppcszController = pDevIns->pReg->szName;
+    *piInstance = pDevIns->iInstance;
+    *piLUN = pDrv->iLUN;
+
+    return VINF_SUCCESS;
+}
+
 /* -=-=-=-=-=-=-=-=- Controller level interfaces -=-=-=-=-=-=-=-=- */
 
@@ -2927,10 +2949,12 @@
         fdrive_t *pDrv = &pThis->drives[i];
 
-        pDrv->drive = FDRIVE_DRV_NONE;
-        pDrv->iLUN = i;
+        pDrv->drive   = FDRIVE_DRV_NONE;
+        pDrv->iLUN    = i;
+        pDrv->pDevIns = pDevIns;
 
         pDrv->IBase.pfnQueryInterface       = fdQueryInterface;
         pDrv->IMountNotify.pfnMountNotify   = fdMountNotify;
         pDrv->IMountNotify.pfnUnmountNotify = fdUnmountNotify;
+        pDrv->IPort.pfnQueryDeviceLocation  = fdQueryDeviceLocation;
         pDrv->Led.u32Magic = PDMLED_MAGIC;
     }
