text: /* Copyright (c) Microsoft Corporation. All rights reserved. */
  
  #ifndef _BURNV_H_
  #define _BURNV_H_
  
  /*
  ** Make sure structures are byte aligned and fields are undecorated.
  */
  
  #ifdef __cplusplus
  extern "C" {
  #endif //__cplusplus
  
  #include "ntddscsi.h"
  #define _NTSCSI_USER_MODE_
  #include "scsi.h"
  #include "ImapiPub.h"
  
  /*
   * 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 _BURNENG_ERROR_STATUS {
      WRITER_ERROR_TYPE   BurnEngineError;
  } BURNENG_ERROR_STATUS, *PBURNENG_ERROR_STATUS;
  
  typedef enum {
      eOrderMethodMotorola = 1,
      eOrderMethodMAX
  } BURNENGV_AUDIO_BYTE_ORDERING_METHOD, *PBURNENGV_AUDIO_BYTE_ORDERING_METHOD;
  
  typedef struct _BURNENGV_IMAPI_SCSI_INFO
  {
      UCHAR        ScsiStatus;
      SENSE_DATA   SenseData;
  } BURNENGV_IMAPI_SCSI_INFO, *PBURNENGV_IMAPI_SCSI_INFO;
  
  typedef union _BURNENGV_ERROR_EXTRA_INFO
  {
      DWORD                       dwWin32Error;
      BURNENGV_IMAPI_SCSI_INFO    imapiScsiError;
      BURNENG_ERROR_STATUS        engErrorStatus;
  } BURNENGV_ERROR_EXTRA_INFO, *PBURNENGV_ERROR_EXTRA_INFO;
  
  typedef struct _WRITER_ERROR_INFO
  {
      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_
  