DrvHostDVD.cpp revision 32d9080d823b14f35920f7aa1ac55dfe2c139744
0N/A * available from http://www.virtualbox.org. This file is free software;
0N/A#ifdef __DARWIN__
0N/A# define USE_MEDIA_POLLING
4069N/A# define _LINUX_BYTEORDER_GENERIC_H
4069N/A# define _LINUX_BYTEORDER_SWAB_H
0N/A# define USE_MEDIA_POLLING
0N/A# include <winioctl.h>
546N/A# include <ntddscsi.h>
6062N/A#include "Builtins.h"
6062N/A#include "DrvHostBase.h"
4069N/A#ifdef __DARWIN__
546N/A rc = RTFileOpen(&FileDevice, pThis->pszDeviceOpen, RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_NONE);
546N/A#ifdef __DARWIN__
546N/A# if 0 /// @todo dig up the specification for this command and implement it. (not important on mac)
546N/A SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL, 0, 0, 0, 0, 0,
0N/A#ifdef USE_MEDIA_POLLING
0N/A#ifdef __DARWIN__
3220N/A bool fMediaChanged = false;
2086N/A bool fMediaPresent = false;
0N/A int rc2 = DRVHostBaseScsiCmd(pThis, abCmd, 6, PDMBLOCKTXDIR_NONE, NULL, NULL, abSense, sizeof(abSense), 0);
2086N/A fMediaPresent = true;
0N/A || (abSense[12] == 0x3f && abSense[13] == 0 /* target operating conditions have changed */) //???
546N/A fMediaPresent = false;
1060N/A fMediaChanged = true;
0N/A bool fMediaPresent = ioctl(pThis->FileDevice, CDROM_DRIVE_STATUS, CDSL_CURRENT) == CDS_DISC_OK;
0N/A if (fMediaPresent)
0N/A else if (fMediaPresent)
546N/A#ifdef __DARWIN__
0N/A if (fMediaChanged)
0N/Astatic int drvHostDvdSendCmd(PPDMIBLOCK pInterface, const uint8_t *pbCmd, PDMBLOCKTXDIR enmTxDir, void *pvBuf, size_t *pcbBuf,
6062N/A LogFlow(("%s: cmd[0]=%#04x txdir=%d pcbBuf=%d timeout=%d\n", __FUNCTION__, pbCmd[0], enmTxDir, *pcbBuf, cTimeoutMillies));
546N/A#ifdef __DARWIN__
4677N/A * The command seems to be 12 bytes long, the docs a bit copy&pasty on the command length point...
4677N/A rc = DRVHostBaseScsiCmd(pThis, pbCmd, 12, PDMBLOCKTXDIR_FROM_DEVICE, pvBuf, pcbBuf, abSense, sizeof(abSense), cTimeoutMillies);
6062N/A case PDMBLOCKTXDIR_NONE:
546N/A case PDMBLOCKTXDIR_NONE:
0N/A case PDMBLOCKTXDIR_TO_DEVICE:
546N/A Log2(("%s: scsistatus=%d bytes returned=%d tlength=%d\n", __FUNCTION__, Req.spt.ScsiStatus, cbReturned, Req.spt.DataTransferLength));
2086N/A * @param pCfgHandle Configuration node handle for the driver. Use this to obtain the configuration
2086N/A bool fPassthrough;
0N/A#ifdef USE_MEDIA_POLLING
0N/A if (!fPassthrough)
0N/A sizeof(DRVHOSTBASE),