Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
5.1 KiB

  1. /****************************************************************************
  2. **
  3. ** Copyright 1999 Adaptec, Inc., All Rights Reserved.
  4. **
  5. ** This software contains the valuable trade secrets of Adaptec. The
  6. ** software is protected under copyright laws as an unpublished work of
  7. ** Adaptec. Notice is for informational purposes only and does not imply
  8. ** publication. The user of this software may make copies of the software
  9. ** for use with parts manufactured by Adaptec or under license from Adaptec
  10. ** and for no other use.
  11. **
  12. ****************************************************************************/
  13. /****************************************************************************
  14. **
  15. ** Module Name: burnsys.h
  16. **
  17. ** Description: Definitions of all the IOCTLs and their structures that
  18. ** can be used with BURNENG.SYS. Note that the structures
  19. ** are used for ring-3 to SYS submission only.
  20. **
  21. ** Programmers: Daniel Evers (dle)
  22. ** Tom Halloran (tgh)
  23. ** Don Lilly (drl)
  24. ** Daniel Polfer (dap)
  25. **
  26. ** History:
  27. **
  28. ** Notes: This file created using 4 spaces per tab.
  29. **
  30. ****************************************************************************/
  31. #ifndef __BURNSYS_H_
  32. #define __BURNSYS_H_
  33. #if _MSC_VER > 1000
  34. #pragma once
  35. #endif
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39. #include "ImageFile.h"
  40. #include "ImapiPub.h"
  41. #include "BurnV.h"
  42. /*
  43. ** The version numbers allow us to lock the API to a specific version from up top.
  44. */
  45. // v 20.20 had everything in this file pack(1)'d, which caused all sorts of
  46. // alignment faults. what was Roxio thinking?
  47. #define IMAPIAPI_VERSION_HI 48
  48. #define IMAPIAPI_VERSION_LO 48
  49. /*
  50. ** Make sure we have the stuff we need to declare IOCTLs. The device code
  51. ** is below, and then each of the IOCTLs is defined alone with its constants
  52. ** and structures below.
  53. */
  54. #define FILE_DEVICE_BURNENG 0x90DC
  55. /*
  56. ** ----------------------------------------------------------------------------
  57. ** IOCTL_BURNENG_INIT
  58. ** ----------------------------------------------------------------------------
  59. */
  60. #define IOCTL_BURNENG_INIT ((ULONG)CTL_CODE (FILE_DEVICE_BURNENG, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS))
  61. typedef struct tag_BURNENG_INIT
  62. {
  63. ULONG dwVersion; // (OUT) Version number. Use this to ensure compatible structures/IOCTLs.
  64. BURNENG_ERROR_STATUS errorStatus; // (OUT) Error status from the burneng driver
  65. } BURNENG_INIT, *PBURNENG_INIT;
  66. /*
  67. ** ----------------------------------------------------------------------------
  68. ** IOCTL_BURNENG_TERM
  69. ** ----------------------------------------------------------------------------
  70. */
  71. #define IOCTL_BURNENG_TERM ((ULONG)CTL_CODE (FILE_DEVICE_BURNENG, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS))
  72. typedef struct tag_BURNENG_TERM
  73. {
  74. BURNENG_ERROR_STATUS errorStatus; // (OUT) Error status from the burneng driver
  75. } BURNENG_TERM, *PBURNENG_TERM;
  76. /*
  77. ** ----------------------------------------------------------------------------
  78. ** IOCTL_BURNENG_BURN
  79. ** ----------------------------------------------------------------------------
  80. */
  81. #define IOCTL_BURNENG_BURN ((ULONG)CTL_CODE (FILE_DEVICE_BURNENG, 0x820, METHOD_BUFFERED, FILE_ANY_ACCESS))
  82. typedef struct tag_BURNENG_BURN
  83. {
  84. DWORD dwSimulate; // IN - Whether the burn is simulated (non-zero) or real (0)
  85. BURNENG_ERROR_STATUS errorStatus; // OUT - Error status copied from ImapiW2k.sys
  86. PIMAGE_CONTENT_LIST pContentList; // IN - The description of the content to be burned.
  87. DWORD dwRecorderBucket; // IN - Target's recorder class
  88. DWORD dwDeviceFlags; // IN - Target's device-specific flags
  89. DWORD dwCurrentSessionNumber; // IN - Session number.
  90. DWORD dwAudioGapSize; // IN - dead air between tracks.
  91. DWORD dwEnableBufferUnderrunFree; // IN - enable buffer underrun free recording
  92. } BURNENG_BURN, *PBURNENG_BURN;
  93. /*
  94. ** ----------------------------------------------------------------------------
  95. ** IOCTL_BURNENG_PROGRESS
  96. ** ----------------------------------------------------------------------------
  97. */
  98. #define IOCTL_BURNENG_PROGRESS ((ULONG)CTL_CODE (FILE_DEVICE_BURNENG, 0x830, METHOD_BUFFERED, FILE_ANY_ACCESS))
  99. typedef struct tag_BURNENG_PROGRESS
  100. {
  101. DWORD dwCancelBurn; // (IN) if not zero, cancel the burn.
  102. DWORD dwSectionsDone; // (OUT) Number of sections completed.
  103. DWORD dwTotalSections;// (OUT) Total number of sections to burn.
  104. DWORD dwBlocksDone; // (OUT) Number of blocks completed.
  105. DWORD dwTotalBlocks; // (OUT) Total number of blocks to burn.
  106. BURNENGV_PROGRESS_STATUS eStatus; // (OUT) Status of the burn operation.
  107. } BURNENG_PROGRESS, *PBURNENG_PROGRESS;
  108. /*
  109. ** ----------------------------------------------------------------------------
  110. */
  111. #ifdef __cplusplus
  112. }
  113. #endif
  114. #endif //__BURNSYS_H__