📄 atapishxcd.cpp
字号:
//
// Copyright(C) Renesas Technology Corp. 2005. All rights reserved.
//
// ATAPI(UDFS) driver for ITS-DS7
//
// FILE : atamain.cpp
// CREATED : 2005.02.10
// MODIFIED :
// AUTHOR : Renesas Technology Corp.
// HARDWARE : RENESAS ITS-DS7
// HISTORY :
// 2005.02.10
// - Created release code.
// (based on PUBLIC ATAPI driver for WCE5.0)
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
Module Name:
atapishxcd.h
Abstract:
Base ATA/ATAPI CD-ROM/DVD device support.
Revision History:
--*/
#include <atamain.h>
#include <atapishxcd.h>
// ----------------------------------------------------------------------------
// Function: CreateSHXHDCD
// Spawn function called by IDE/ATA controller enumerator
//
// Parameters:
// hDevKey -
// ----------------------------------------------------------------------------
EXTERN_C
CDisk *
CreateSHXHDCD(
HKEY hDevKey
)
{
return new CSHXDiskAndCD(hDevKey);
}
// ----------------------------------------------------------------------------
// Function: CSHXDiskAndCD::
// Constructor
//
// Parameters:
// hKey -
// ----------------------------------------------------------------------------
CSHXDiskAndCD::CSHXDiskAndCD(
HKEY hKey
) : CSHXDisk(hKey)
{
// empty
}
// ----------------------------------------------------------------------------
// Function: MainIoctl
// Process IOCTL_CDROM_ and IOCTL_DVD_ I/O controls
//
// Parameters:
// pIOReq -
// ----------------------------------------------------------------------------
DWORD
CSHXDiskAndCD::MainIoctl(
PIOREQ pIOReq
)
{
DWORD dwError;
DEBUGMSG(ZONE_IOCTL, (_T(
"Atapi!CSHXDiskAndCD::MainIoctl> IOCTL(0x%x), device(%d)\r\n"
),pIOReq->dwCode, m_dwDeviceId));
dwError = CSHXDisk::MainIoctl(pIOReq);
if (dwError == ERROR_NOT_SUPPORTED) {
switch(pIOReq->dwCode) {
// supported ATAPI commands
case IOCTL_CDROM_READ_SG:
case IOCTL_CDROM_TEST_UNIT_READY:
case IOCTL_CDROM_DISC_INFO:
case IOCTL_CDROM_EJECT_MEDIA:
case IOCTL_CDROM_LOAD_MEDIA:
// supported DVD commands
case IOCTL_DVD_START_SESSION:
case IOCTL_DVD_READ_KEY:
case IOCTL_DVD_END_SESSION:
case IOCTL_DVD_SEND_KEY:
case IOCTL_DVD_GET_REGION:
// supported audio commands
case IOCTL_CDROM_READ_TOC:
case IOCTL_CDROM_GET_CONTROL:
case IOCTL_CDROM_PLAY_AUDIO_MSF:
case IOCTL_CDROM_SEEK_AUDIO_MSF:
case IOCTL_CDROM_STOP_AUDIO:
case IOCTL_CDROM_PAUSE_AUDIO:
case IOCTL_CDROM_RESUME_AUDIO:
case IOCTL_CDROM_GET_VOLUME:
case IOCTL_CDROM_SET_VOLUME:
case IOCTL_CDROM_READ_Q_CHANNEL:
case IOCTL_CDROM_GET_LAST_SESSION:
case IOCTL_CDROM_RAW_READ:
case IOCTL_CDROM_DISK_TYPE:
case IOCTL_CDROM_SCAN_AUDIO:
case IOCTL_CDROM_ISSUE_INQUIRY:
if (IsAtapiDevice()) {
dwError = AtapiIoctl(pIOReq);
}
else {
dwError = ERROR_INVALID_OPERATION;
}
break;
default:
dwError = ERROR_NOT_SUPPORTED;
break;
}
}
return dwError;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -