|
|
/****************************************************************************** ** ** 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: BurnV.h ** ******************************************************************************/
#ifndef _BURNV_H_ #define _BURNV_H_
/* ** Make sure structures are byte aligned and fields are undecorated. */
#ifdef __cplusplus extern "C" { #endif //__cplusplus
#include "ImapiPub.h" #include "ScsiThings.h"
/* * Constant declarations. */ #define PHOENIX_WRITER_DECLSPEC
#define BURNENGV_CDB_BYTES 16 #define BURNENG_ERROR_INFO_DATABYTES 32 #define BURNENG_ERROR_INFO_SENSEBYTES 14 #define BURNENG_ERROR_INFO_PRIVATEBYTES 32
/* ** 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. */
#ifndef CTL_CODE
#define CTL_CODE( DeviceType, Function, Method, Access ) ( \ ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \ )
#define METHOD_BUFFERED 0 #define METHOD_IN_DIRECT 1 #define METHOD_OUT_DIRECT 2 #define METHOD_NEITHER 3
#define FILE_ANY_ACCESS 0 #define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS) #define FILE_READ_ACCESS ( 0x0001 ) // file & pipe #define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
#endif
/* * Typedefs. */
typedef enum { eWriterErrorNone = 0, eWriterBurnStarted, eWriterBurnengError, eWriterDeviceUnsupported, eWriterImapiFailure, eWriterMediaNonerasable, eWriterMediaNotPresent, eWriterMediaNonwritable, eWriterTargetScsiError, eWriterTargetUnknownResponseTIB, eWin32Error, eWin32OverlappedError, eWriterAlloc, eWriterBufferSize, eWriterIntFnTab, eWriterIntImapi, eWriterIntList, eWriterInvalidData, eWriterBadHandle, eWriterInvalidParam, eWriterBurnError, eWriterGenFailure, eWriterRegistryError, eWriterStashFileOpen, eWriterBadSectionClose, eWriterPrematureTermination, eWriterWriteError, eWriterReadFileError, eWriterThreadCreationError, eWriterLossOfStreaming, eWriterClosingSession, eWriterWriteProtectedMedia, eWriterUnableToWriteToMedia, eWriterErrorMAX } WRITER_ERROR_TYPE, *PWRITER_ERROR_TYPE;
typedef struct { WRITER_ERROR_TYPE dwBurnEngineError;
IMAPIDRV_SRB srbErrored;
UCHAR ucaDataBuffer[ BURNENG_ERROR_INFO_DATABYTES ]; ULONGLONG Reserved1; // alignment UCHAR ucaSenseInfoBuffer[ BURNENG_ERROR_INFO_SENSEBYTES ] ; ULONGLONG Reserved2; // alignment UCHAR ucaPrivateBuffer[ BURNENG_ERROR_INFO_PRIVATEBYTES ]; } BURNENG_ERROR_STATUS, *PBURNENG_ERROR_STATUS;
/* typedef struct { DWORD dwWriteSpeed; DWORD dwAudioGapSize; DWORD dwaReserved[ 3 ]; } WRITERV_SETTABLE_PROPERTIES, *PWRITERV_SETTABLE_PROPERTIES; */ typedef enum { eOrderMethodMotorola = 1, eOrderMethodMAX } BURNENGV_AUDIO_BYTE_ORDERING_METHOD, *PBURNENGV_AUDIO_BYTE_ORDERING_METHOD;
typedef struct _tag_WriteParameters { DWORD dwByteReorderingMethod; DWORD dwaReserved1[2];
BYTE bySectionCloseCDBLen; BYTE bySectionCloseCDBAcceptErrorSenseKey; BYTE bySectionCloseCDBAcceptErrorASC; BYTE byWriteCDBLen; BYTE byaReserved3[2];
BYTE byaSectionCloseCDB[BURNENGV_CDB_BYTES]; BYTE byaWriteCDB[BURNENGV_CDB_BYTES]; } BURNENGV_WRITE_PARAMETERS, *PBURNENGV_WRITE_PARAMETERS;
typedef struct _tag_ScsiInfo { UCHAR SrbStatus; SCSI_SENSE_DATA scsiSenseData; } BURNENGV_IMAPI_SCSI_INFO, *PBURNENGV_IMAPI_SCSI_INFO;
typedef union _tag_ErrorExtraInfo { DWORD dwWin32Error; BURNENGV_IMAPI_SCSI_INFO imapiScsiError; BURNENG_ERROR_STATUS engErrorStatus; } BURNENGV_ERROR_EXTRA_INFO, *PBURNENGV_ERROR_EXTRA_INFO;
typedef struct _tag_ErrorInfo { DWORD errorType; BURNENGV_ERROR_EXTRA_INFO info; } WRITER_ERROR_INFO, *PWRITER_ERROR_INFO;
typedef enum { evBurnProgressNoError = 0, evBurnProgressNotStarted, evBurnProgressBurning, evBurnProgressComplete, evBurnProgressError, evBurnProgressLossOfStreamingError, evBurnProgressMediaWriteProtect, // i.e. 8/10X RW media in a 4X RW drive evBurnProgressUnableToWriteToMedia, evBurnProgressBadHandle } BURNENGV_PROGRESS_STATUS, *PBURNENGV_PROGRESS_STATUS;
/* ** Restore compiler default packing and close off the C declarations. */
#ifdef __cplusplus } #endif //__cplusplus
#endif //_BURNV_H_
|