149 lines
5.1 KiB
C
149 lines
5.1 KiB
C
|
/****************************************************************************
|
||
|
**
|
||
|
** Copyright 1999 Adaptec, Inc., All Rights Reserved.
|
||
|
**
|
||
|
** This software contains the valuable trade secrets of Adaptec. The
|
||
|
** software is protected under copyright laws as an unpublished work of
|
||
|
** Adaptec. Notice is for informational purposes only and does not imply
|
||
|
** publication. The user of this software may make copies of the software
|
||
|
** for use with parts manufactured by Adaptec or under license from Adaptec
|
||
|
** and for no other use.
|
||
|
**
|
||
|
****************************************************************************/
|
||
|
|
||
|
/****************************************************************************
|
||
|
**
|
||
|
** Module Name: burnsys.h
|
||
|
**
|
||
|
** Description: Definitions of all the IOCTLs and their structures that
|
||
|
** can be used with BURNENG.SYS. Note that the structures
|
||
|
** are used for ring-3 to SYS submission only.
|
||
|
**
|
||
|
** Programmers: Daniel Evers (dle)
|
||
|
** Tom Halloran (tgh)
|
||
|
** Don Lilly (drl)
|
||
|
** Daniel Polfer (dap)
|
||
|
**
|
||
|
** History:
|
||
|
**
|
||
|
** Notes: This file created using 4 spaces per tab.
|
||
|
**
|
||
|
****************************************************************************/
|
||
|
|
||
|
#ifndef __BURNSYS_H_
|
||
|
#define __BURNSYS_H_
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include "ImageFile.h"
|
||
|
#include "ImapiPub.h"
|
||
|
#include "BurnV.h"
|
||
|
|
||
|
|
||
|
/*
|
||
|
** The version numbers allow us to lock the API to a specific version from up top.
|
||
|
*/
|
||
|
|
||
|
// v 20.20 had everything in this file pack(1)'d, which caused all sorts of
|
||
|
// alignment faults. what was Roxio thinking?
|
||
|
|
||
|
#define IMAPIAPI_VERSION_HI 48
|
||
|
#define IMAPIAPI_VERSION_LO 48
|
||
|
|
||
|
/*
|
||
|
** Make sure we have the stuff we need to declare IOCTLs. The device code
|
||
|
** is below, and then each of the IOCTLs is defined alone with its constants
|
||
|
** and structures below.
|
||
|
*/
|
||
|
|
||
|
#define FILE_DEVICE_BURNENG 0x90DC
|
||
|
|
||
|
|
||
|
/*
|
||
|
** ----------------------------------------------------------------------------
|
||
|
** IOCTL_BURNENG_INIT
|
||
|
** ----------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
#define IOCTL_BURNENG_INIT ((ULONG)CTL_CODE (FILE_DEVICE_BURNENG, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS))
|
||
|
|
||
|
typedef struct tag_BURNENG_INIT
|
||
|
{
|
||
|
ULONG dwVersion; // (OUT) Version number. Use this to ensure compatible structures/IOCTLs.
|
||
|
BURNENG_ERROR_STATUS errorStatus; // (OUT) Error status from the burneng driver
|
||
|
} BURNENG_INIT, *PBURNENG_INIT;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** ----------------------------------------------------------------------------
|
||
|
** IOCTL_BURNENG_TERM
|
||
|
** ----------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
#define IOCTL_BURNENG_TERM ((ULONG)CTL_CODE (FILE_DEVICE_BURNENG, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS))
|
||
|
|
||
|
typedef struct tag_BURNENG_TERM
|
||
|
{
|
||
|
BURNENG_ERROR_STATUS errorStatus; // (OUT) Error status from the burneng driver
|
||
|
} BURNENG_TERM, *PBURNENG_TERM;
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
** ----------------------------------------------------------------------------
|
||
|
** IOCTL_BURNENG_BURN
|
||
|
** ----------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
#define IOCTL_BURNENG_BURN ((ULONG)CTL_CODE (FILE_DEVICE_BURNENG, 0x820, METHOD_BUFFERED, FILE_ANY_ACCESS))
|
||
|
|
||
|
typedef struct tag_BURNENG_BURN
|
||
|
{
|
||
|
DWORD dwSimulate; // IN - Whether the burn is simulated (non-zero) or real (0)
|
||
|
BURNENG_ERROR_STATUS errorStatus; // OUT - Error status copied from ImapiW2k.sys
|
||
|
PIMAGE_CONTENT_LIST pContentList; // IN - The description of the content to be burned.
|
||
|
DWORD dwRecorderBucket; // IN - Target's recorder class
|
||
|
DWORD dwDeviceFlags; // IN - Target's device-specific flags
|
||
|
DWORD dwCurrentSessionNumber; // IN - Session number.
|
||
|
DWORD dwAudioGapSize; // IN - dead air between tracks.
|
||
|
DWORD dwEnableBufferUnderrunFree; // IN - enable buffer underrun free recording
|
||
|
} BURNENG_BURN, *PBURNENG_BURN;
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
** ----------------------------------------------------------------------------
|
||
|
** IOCTL_BURNENG_PROGRESS
|
||
|
** ----------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
#define IOCTL_BURNENG_PROGRESS ((ULONG)CTL_CODE (FILE_DEVICE_BURNENG, 0x830, METHOD_BUFFERED, FILE_ANY_ACCESS))
|
||
|
|
||
|
typedef struct tag_BURNENG_PROGRESS
|
||
|
{
|
||
|
DWORD dwCancelBurn; // (IN) if not zero, cancel the burn.
|
||
|
DWORD dwSectionsDone; // (OUT) Number of sections completed.
|
||
|
DWORD dwTotalSections;// (OUT) Total number of sections to burn.
|
||
|
DWORD dwBlocksDone; // (OUT) Number of blocks completed.
|
||
|
DWORD dwTotalBlocks; // (OUT) Total number of blocks to burn.
|
||
|
BURNENGV_PROGRESS_STATUS eStatus; // (OUT) Status of the burn operation.
|
||
|
} BURNENG_PROGRESS, *PBURNENG_PROGRESS;
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
** ----------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif //__BURNSYS_H__
|