Index: /trunk/src/VBox/Devices/Storage/ATAController.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/ATAController.cpp	(revision 27360)
+++ /trunk/src/VBox/Devices/Storage/ATAController.cpp	(revision 27361)
@@ -1685,10 +1685,10 @@
         {
             case ATA_EVENT_STATUS_MEDIA_NEW:
-            /* mount */
+                /* mount */
                 ataH2BE_U16(pbBuf + 0, 6);
-                pbBuf[2] = 0x04;
-                pbBuf[3] = 0x5e;
-                pbBuf[4] = 0x02;
-                pbBuf[5] = 0x02;
+                pbBuf[2] = 0x04; /* media */
+                pbBuf[3] = 0x5e; /* suppored = busy|media|external|power|operational */
+                pbBuf[4] = 0x02; /* new medium */
+                pbBuf[5] = 0x02; /* medium present / door closed */
                 pbBuf[6] = 0x00;
                 pbBuf[7] = 0x00;
@@ -1699,8 +1699,8 @@
                 /* umount */
                 ataH2BE_U16(pbBuf + 0, 6);
-                pbBuf[2] = 0x04;
-                pbBuf[3] = 0x5e;
-                pbBuf[4] = 0x03;
-                pbBuf[5] = 0x00;
+                pbBuf[2] = 0x04; /* media */
+                pbBuf[3] = 0x5e; /* suppored = busy|media|external|power|operational */
+                pbBuf[4] = 0x03; /* media removal */
+                pbBuf[5] = 0x00; /* medium absent / door closed */
                 pbBuf[6] = 0x00;
                 pbBuf[7] = 0x00;
@@ -1709,9 +1709,19 @@
                 break;
 
+            case ATA_EVENT_STATUS_MEDIA_EJECT_REQUESTED: /* currently unused */
+                ataH2BE_U16(pbBuf + 0, 6);
+                pbBuf[2] = 0x04; /* media */
+                pbBuf[3] = 0x5e; /* supported = busy|media|external|power|operational */
+                pbBuf[4] = 0x01; /* eject requested (eject button pressed) */
+                pbBuf[5] = 0x02; /* medium present / door closed */
+                pbBuf[6] = 0x00;
+                pbBuf[7] = 0x00;
+                break;
+
             case ATA_EVENT_STATUS_UNCHANGED:
             default:
                 ataH2BE_U16(pbBuf + 0, 6);
-                pbBuf[2] = 0x01;
-                pbBuf[3] = 0x5e;
+                pbBuf[2] = 0x01; /* operational change request / notification */
+                pbBuf[3] = 0x5e; /* suppored = busy|media|external|power|operational */
                 pbBuf[4] = 0x00;
                 pbBuf[5] = 0x00;
Index: /trunk/src/VBox/Devices/Storage/ATAController.h
===================================================================
--- /trunk/src/VBox/Devices/Storage/ATAController.h	(revision 27360)
+++ /trunk/src/VBox/Devices/Storage/ATAController.h	(revision 27361)
@@ -73,4 +73,5 @@
 #define ATA_EVENT_STATUS_MEDIA_REMOVED          2    /**< medium removed */
 #define ATA_EVENT_STATUS_MEDIA_CHANGED          3    /**< medium was removed + new medium was inserted */
+#define ATA_EVENT_STATUS_MEDIA_EJECT_REQUESTED  4    /**< medium eject requested (eject button pressed) */
 
 
Index: /trunk/src/VBox/Devices/Storage/DevATA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevATA.cpp	(revision 27360)
+++ /trunk/src/VBox/Devices/Storage/DevATA.cpp	(revision 27361)
@@ -101,4 +101,5 @@
 #define ATA_EVENT_STATUS_MEDIA_REMOVED          2    /**< medium removed */
 #define ATA_EVENT_STATUS_MEDIA_CHANGED          3    /**< medium was removed + new medium was inserted */
+#define ATA_EVENT_STATUS_MEDIA_EJECT_REQUESTED  4    /**< medium eject requested (eject button pressed) */
 
 /**
@@ -2361,10 +2362,10 @@
         {
             case ATA_EVENT_STATUS_MEDIA_NEW:
-            /* mount */
+                /* mount */
                 ataH2BE_U16(pbBuf + 0, 6);
-                pbBuf[2] = 0x04;
-                pbBuf[3] = 0x5e;
-                pbBuf[4] = 0x02;
-                pbBuf[5] = 0x02;
+                pbBuf[2] = 0x04; /* media */
+                pbBuf[3] = 0x5e; /* suppored = busy|media|external|power|operational */
+                pbBuf[4] = 0x02; /* new medium */
+                pbBuf[5] = 0x02; /* medium present / door closed */
                 pbBuf[6] = 0x00;
                 pbBuf[7] = 0x00;
@@ -2375,8 +2376,8 @@
                 /* umount */
                 ataH2BE_U16(pbBuf + 0, 6);
-                pbBuf[2] = 0x04;
-                pbBuf[3] = 0x5e;
-                pbBuf[4] = 0x03;
-                pbBuf[5] = 0x00;
+                pbBuf[2] = 0x04; /* media */
+                pbBuf[3] = 0x5e; /* suppored = busy|media|external|power|operational */
+                pbBuf[4] = 0x03; /* media removal */
+                pbBuf[5] = 0x00; /* medium absent / door closed */
                 pbBuf[6] = 0x00;
                 pbBuf[7] = 0x00;
@@ -2385,9 +2386,19 @@
                 break;
 
+            case ATA_EVENT_STATUS_MEDIA_EJECT_REQUESTED: /* currently unused */
+                ataH2BE_U16(pbBuf + 0, 6);
+                pbBuf[2] = 0x04; /* media */
+                pbBuf[3] = 0x5e; /* supported = busy|media|external|power|operational */
+                pbBuf[4] = 0x01; /* eject requested (eject button pressed) */
+                pbBuf[5] = 0x02; /* medium present / door closed */
+                pbBuf[6] = 0x00;
+                pbBuf[7] = 0x00;
+                break;
+
             case ATA_EVENT_STATUS_UNCHANGED:
             default:
                 ataH2BE_U16(pbBuf + 0, 6);
-                pbBuf[2] = 0x01;
-                pbBuf[3] = 0x5e;
+                pbBuf[2] = 0x01; /* operational change request / notification */
+                pbBuf[3] = 0x5e; /* suppored = busy|media|external|power|operational */
                 pbBuf[4] = 0x00;
                 pbBuf[5] = 0x00;
