ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntddchgr.h
Go to the documentation of this file.
00001 /*
00002  * ntddchgr.h
00003  *
00004  * Media changer IOCTL interface.
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #pragma once
00024 
00025 #include "ntddstor.h"
00026 
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030 
00031 #define DD_CHANGER_DEVICE_NAME            "\\Device\\Changer"
00032 #define DD_CHANGER_DEVICE_NAME_U          L"\\Device\\Changer"
00033 
00034 #define IOCTL_CHANGER_BASE                FILE_DEVICE_CHANGER
00035 
00036 #define IOCTL_CHANGER_EXCHANGE_MEDIUM \
00037   CTL_CODE(IOCTL_CHANGER_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
00038 
00039 #define IOCTL_CHANGER_GET_ELEMENT_STATUS \
00040   CTL_CODE(IOCTL_CHANGER_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00041 
00042 #define IOCTL_CHANGER_GET_PARAMETERS \
00043   CTL_CODE(IOCTL_CHANGER_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
00044 
00045 #define IOCTL_CHANGER_GET_PRODUCT_DATA \
00046   CTL_CODE(IOCTL_CHANGER_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
00047 
00048 #define IOCTL_CHANGER_GET_STATUS \
00049   CTL_CODE(IOCTL_CHANGER_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
00050 
00051 #define IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS \
00052   CTL_CODE(IOCTL_CHANGER_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
00053 
00054 #define IOCTL_CHANGER_MOVE_MEDIUM \
00055   CTL_CODE(IOCTL_CHANGER_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS)
00056 
00057 #define IOCTL_CHANGER_QUERY_VOLUME_TAGS \
00058   CTL_CODE(IOCTL_CHANGER_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00059 
00060 #define IOCTL_CHANGER_REINITIALIZE_TRANSPORT \
00061   CTL_CODE(IOCTL_CHANGER_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
00062 
00063 #define IOCTL_CHANGER_SET_ACCESS \
00064   CTL_CODE(IOCTL_CHANGER_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00065 
00066 #define IOCTL_CHANGER_SET_POSITION \
00067   CTL_CODE(IOCTL_CHANGER_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
00068 
00069 #define MAX_VOLUME_ID_SIZE                36
00070 #define MAX_VOLUME_TEMPLATE_SIZE          40
00071 
00072 #define VENDOR_ID_LENGTH                  8
00073 #define PRODUCT_ID_LENGTH                 16
00074 #define REVISION_LENGTH                   4
00075 #define SERIAL_NUMBER_LENGTH              32
00076 
00077 /* GET_CHANGER_PARAMETERS.Features0 constants */
00078 #define CHANGER_BAR_CODE_SCANNER_INSTALLED  0x00000001
00079 #define CHANGER_INIT_ELEM_STAT_WITH_RANGE   0x00000002
00080 #define CHANGER_CLOSE_IEPORT                0x00000004
00081 #define CHANGER_OPEN_IEPORT                 0x00000008
00082 #define CHANGER_STATUS_NON_VOLATILE         0x00000010
00083 #define CHANGER_EXCHANGE_MEDIA              0x00000020
00084 #define CHANGER_CLEANER_SLOT                0x00000040
00085 #define CHANGER_LOCK_UNLOCK                 0x00000080
00086 #define CHANGER_CARTRIDGE_MAGAZINE          0x00000100
00087 #define CHANGER_MEDIUM_FLIP                 0x00000200
00088 #define CHANGER_POSITION_TO_ELEMENT         0x00000400
00089 #define CHANGER_REPORT_IEPORT_STATE         0x00000800
00090 #define CHANGER_STORAGE_DRIVE               0x00001000
00091 #define CHANGER_STORAGE_IEPORT              0x00002000
00092 #define CHANGER_STORAGE_SLOT                0x00004000
00093 #define CHANGER_STORAGE_TRANSPORT           0x00008000
00094 #define CHANGER_DRIVE_CLEANING_REQUIRED     0x00010000
00095 #define CHANGER_PREDISMOUNT_EJECT_REQUIRED  0x00020000
00096 #define CHANGER_CLEANER_ACCESS_NOT_VALID    0x00040000
00097 #define CHANGER_PREMOUNT_EJECT_REQUIRED     0x00080000
00098 #define CHANGER_VOLUME_IDENTIFICATION       0x00100000
00099 #define CHANGER_VOLUME_SEARCH               0x00200000
00100 #define CHANGER_VOLUME_ASSERT               0x00400000
00101 #define CHANGER_VOLUME_REPLACE              0x00800000
00102 #define CHANGER_VOLUME_UNDEFINE             0x01000000
00103 #define CHANGER_SERIAL_NUMBER_VALID         0x04000000
00104 #define CHANGER_DEVICE_REINITIALIZE_CAPABLE 0x08000000
00105 #define CHANGER_KEYPAD_ENABLE_DISABLE       0x10000000
00106 #define CHANGER_DRIVE_EMPTY_ON_DOOR_ACCESS  0x20000000
00107 #define CHANGER_RESERVED_BIT                0x80000000
00108 
00109 /* GET_CHANGER_PARAMETERS.Features1 constants */
00110 #define CHANGER_PREDISMOUNT_ALIGN_TO_SLOT   0x80000001
00111 #define CHANGER_PREDISMOUNT_ALIGN_TO_DRIVE  0x80000002
00112 #define CHANGER_CLEANER_AUTODISMOUNT        0x80000004
00113 #define CHANGER_TRUE_EXCHANGE_CAPABLE       0x80000008
00114 #define CHANGER_SLOTS_USE_TRAYS             0x80000010
00115 #define CHANGER_RTN_MEDIA_TO_ORIGINAL_ADDR  0x80000020
00116 #define CHANGER_CLEANER_OPS_NOT_SUPPORTED   0x80000040
00117 #define CHANGER_IEPORT_USER_CONTROL_OPEN    0x80000080
00118 #define CHANGER_IEPORT_USER_CONTROL_CLOSE   0x80000100
00119 #define CHANGER_MOVE_EXTENDS_IEPORT         0x80000200
00120 #define CHANGER_MOVE_RETRACTS_IEPORT        0x80000400
00121 
00122 /* GET_CHANGER_PARAMETERS.MoveFrom,ExchangeFrom,PositionCapabilities constants */
00123 #define CHANGER_TO_TRANSPORT              0x01
00124 #define CHANGER_TO_SLOT                   0x02
00125 #define CHANGER_TO_IEPORT                 0x04
00126 #define CHANGER_TO_DRIVE                  0x08
00127 
00128 /* GET_CHANGER_PARAMETERS.LockUnlockCapabilities constants */
00129 #define LOCK_UNLOCK_IEPORT                0x01
00130 #define LOCK_UNLOCK_DOOR                  0x02
00131 #define LOCK_UNLOCK_KEYPAD                0x04
00132 
00133 /* CHANGER_SET_ACCESS.Control constants */
00134 #define LOCK_ELEMENT                      0
00135 #define UNLOCK_ELEMENT                    1
00136 #define EXTEND_IEPORT                     2
00137 #define RETRACT_IEPORT                    3
00138 
00139 /* CHANGER_ELEMENT_STATUS(_EX).Flags constants */
00140 #define ELEMENT_STATUS_FULL               0x00000001
00141 #define ELEMENT_STATUS_IMPEXP             0x00000002
00142 #define ELEMENT_STATUS_EXCEPT             0x00000004
00143 #define ELEMENT_STATUS_ACCESS             0x00000008
00144 #define ELEMENT_STATUS_EXENAB             0x00000010
00145 #define ELEMENT_STATUS_INENAB             0x00000020
00146 #define ELEMENT_STATUS_PRODUCT_DATA       0x00000040
00147 #define ELEMENT_STATUS_LUN_VALID          0x00001000
00148 #define ELEMENT_STATUS_ID_VALID           0x00002000
00149 #define ELEMENT_STATUS_NOT_BUS            0x00008000
00150 #define ELEMENT_STATUS_INVERT             0x00400000
00151 #define ELEMENT_STATUS_SVALID             0x00800000
00152 #define ELEMENT_STATUS_PVOLTAG            0x10000000
00153 #define ELEMENT_STATUS_AVOLTAG            0x20000000
00154 
00155 /* CHANGER_ELEMENT_STATUS(_EX).ExceptionCode constants */
00156 #define ERROR_LABEL_UNREADABLE            0x00000001
00157 #define ERROR_LABEL_QUESTIONABLE          0x00000002
00158 #define ERROR_SLOT_NOT_PRESENT            0x00000004
00159 #define ERROR_DRIVE_NOT_INSTALLED         0x00000008
00160 #define ERROR_TRAY_MALFUNCTION            0x00000010
00161 #define ERROR_INIT_STATUS_NEEDED          0x00000011
00162 #define ERROR_UNHANDLED_ERROR             0xFFFFFFFF
00163 
00164 /* CHANGER_SEND_VOLUME_TAG_INFORMATION.ActionCode constants */
00165 #define SEARCH_ALL                        0x0
00166 #define SEARCH_PRIMARY                    0x1
00167 #define SEARCH_ALTERNATE                  0x2
00168 #define SEARCH_ALL_NO_SEQ                 0x4
00169 #define SEARCH_PRI_NO_SEQ                 0x5
00170 #define SEARCH_ALT_NO_SEQ                 0x6
00171 #define ASSERT_PRIMARY                    0x8
00172 #define ASSERT_ALTERNATE                  0x9
00173 #define REPLACE_PRIMARY                   0xA
00174 #define REPLACE_ALTERNATE                 0xB
00175 #define UNDEFINE_PRIMARY                  0xC
00176 #define UNDEFINE_ALTERNATE                0xD
00177 
00178 typedef enum _ELEMENT_TYPE {
00179   AllElements,
00180   ChangerTransport,
00181   ChangerSlot,
00182   ChangerIEPort,
00183   ChangerDrive,
00184   ChangerDoor,
00185   ChangerKeypad,
00186   ChangerMaxElement
00187 } ELEMENT_TYPE, *PELEMENT_TYPE;
00188 
00189 typedef struct _CHANGER_ELEMENT {
00190   ELEMENT_TYPE ElementType;
00191   ULONG ElementAddress;
00192 } CHANGER_ELEMENT, *PCHANGER_ELEMENT;
00193 
00194 typedef struct _CHANGER_ELEMENT_LIST {
00195   CHANGER_ELEMENT Element;
00196   ULONG NumberOfElements;
00197 } CHANGER_ELEMENT_LIST, *PCHANGER_ELEMENT_LIST;
00198 
00199 typedef struct _GET_CHANGER_PARAMETERS {
00200   ULONG  Size;
00201   USHORT  NumberTransportElements;
00202   USHORT  NumberStorageElements;
00203   USHORT  NumberCleanerSlots;
00204   USHORT  NumberIEElements;
00205   USHORT  NumberDataTransferElements;
00206   USHORT  NumberOfDoors;
00207   USHORT  FirstSlotNumber;
00208   USHORT  FirstDriveNumber;
00209   USHORT  FirstTransportNumber;
00210   USHORT  FirstIEPortNumber;
00211   USHORT  FirstCleanerSlotAddress;
00212   USHORT  MagazineSize;
00213   ULONG  DriveCleanTimeout;
00214   ULONG  Features0;
00215   ULONG  Features1;
00216   UCHAR  MoveFromTransport;
00217   UCHAR  MoveFromSlot;
00218   UCHAR  MoveFromIePort;
00219   UCHAR  MoveFromDrive;
00220   UCHAR  ExchangeFromTransport;
00221   UCHAR  ExchangeFromSlot;
00222   UCHAR  ExchangeFromIePort;
00223   UCHAR  ExchangeFromDrive;
00224   UCHAR  LockUnlockCapabilities;
00225   UCHAR  PositionCapabilities;
00226   UCHAR  Reserved1[2];
00227   ULONG  Reserved2[2];
00228 } GET_CHANGER_PARAMETERS, * PGET_CHANGER_PARAMETERS;
00229 
00230 typedef  struct _CHANGER_PRODUCT_DATA {
00231     UCHAR  VendorId[VENDOR_ID_LENGTH];
00232     UCHAR  ProductId[PRODUCT_ID_LENGTH];
00233     UCHAR  Revision[REVISION_LENGTH];
00234     UCHAR  SerialNumber[SERIAL_NUMBER_LENGTH];
00235     UCHAR  DeviceType;
00236 } CHANGER_PRODUCT_DATA, *PCHANGER_PRODUCT_DATA;
00237 
00238 typedef struct _CHANGER_SET_ACCESS {
00239   CHANGER_ELEMENT  Element;
00240   ULONG  Control;
00241 } CHANGER_SET_ACCESS, *PCHANGER_SET_ACCESS;
00242 
00243 typedef struct _CHANGER_READ_ELEMENT_STATUS {
00244   CHANGER_ELEMENT_LIST  ElementList;
00245   BOOLEAN  VolumeTagInfo;
00246 } CHANGER_READ_ELEMENT_STATUS, *PCHANGER_READ_ELEMENT_STATUS;
00247 
00248 typedef struct _CHANGER_ELEMENT_STATUS {
00249   CHANGER_ELEMENT  Element;
00250   CHANGER_ELEMENT  SrcElementAddress;
00251   ULONG  Flags;
00252   ULONG  ExceptionCode;
00253   UCHAR  TargetId;
00254   UCHAR  Lun;
00255   USHORT  Reserved;
00256   UCHAR  PrimaryVolumeID[MAX_VOLUME_ID_SIZE];
00257   UCHAR  AlternateVolumeID[MAX_VOLUME_ID_SIZE];
00258 } CHANGER_ELEMENT_STATUS, *PCHANGER_ELEMENT_STATUS;
00259 
00260 typedef  struct _CHANGER_ELEMENT_STATUS_EX {
00261   CHANGER_ELEMENT  Element;
00262   CHANGER_ELEMENT  SrcElementAddress;
00263   ULONG  Flags;
00264   ULONG  ExceptionCode;
00265   UCHAR  TargetId;
00266   UCHAR  Lun;
00267   USHORT  Reserved;
00268   UCHAR  PrimaryVolumeID[MAX_VOLUME_ID_SIZE];
00269   UCHAR  AlternateVolumeID[MAX_VOLUME_ID_SIZE];
00270   UCHAR  VendorIdentification[VENDOR_ID_LENGTH];
00271   UCHAR  ProductIdentification[PRODUCT_ID_LENGTH];
00272   UCHAR  SerialNumber[SERIAL_NUMBER_LENGTH];
00273 } CHANGER_ELEMENT_STATUS_EX, *PCHANGER_ELEMENT_STATUS_EX;
00274 
00275 typedef struct _CHANGER_INITIALIZE_ELEMENT_STATUS {
00276   CHANGER_ELEMENT_LIST  ElementList;
00277   BOOLEAN  BarCodeScan;
00278 } CHANGER_INITIALIZE_ELEMENT_STATUS, *PCHANGER_INITIALIZE_ELEMENT_STATUS;
00279 
00280 typedef struct _CHANGER_SET_POSITION {
00281     CHANGER_ELEMENT  Transport;
00282     CHANGER_ELEMENT  Destination;
00283     BOOLEAN  Flip;
00284 } CHANGER_SET_POSITION, *PCHANGER_SET_POSITION;
00285 
00286 typedef struct _CHANGER_EXCHANGE_MEDIUM {
00287     CHANGER_ELEMENT  Transport;
00288     CHANGER_ELEMENT  Source;
00289     CHANGER_ELEMENT  Destination1;
00290     CHANGER_ELEMENT  Destination2;
00291     BOOLEAN  Flip1;
00292     BOOLEAN  Flip2;
00293 } CHANGER_EXCHANGE_MEDIUM, *PCHANGER_EXCHANGE_MEDIUM;
00294 
00295 typedef struct _CHANGER_MOVE_MEDIUM {
00296   CHANGER_ELEMENT  Transport;
00297   CHANGER_ELEMENT  Source;
00298   CHANGER_ELEMENT  Destination;
00299   BOOLEAN  Flip;
00300 } CHANGER_MOVE_MEDIUM, *PCHANGER_MOVE_MEDIUM;
00301 
00302 typedef struct _CHANGER_SEND_VOLUME_TAG_INFORMATION {
00303   CHANGER_ELEMENT StartingElement;
00304   ULONG  ActionCode;
00305   UCHAR  VolumeIDTemplate[MAX_VOLUME_TEMPLATE_SIZE];
00306 } CHANGER_SEND_VOLUME_TAG_INFORMATION, *PCHANGER_SEND_VOLUME_TAG_INFORMATION;
00307 
00308 typedef struct READ_ELEMENT_ADDRESS_INFO {
00309   ULONG  NumberOfElements;
00310   CHANGER_ELEMENT_STATUS  ElementStatus[1];
00311 } READ_ELEMENT_ADDRESS_INFO, *PREAD_ELEMENT_ADDRESS_INFO;
00312 
00313 typedef enum _CHANGER_DEVICE_PROBLEM_TYPE {
00314   DeviceProblemNone,
00315   DeviceProblemHardware,
00316   DeviceProblemCHMError,
00317   DeviceProblemDoorOpen,
00318   DeviceProblemCalibrationError,
00319   DeviceProblemTargetFailure,
00320   DeviceProblemCHMMoveError,
00321   DeviceProblemCHMZeroError,
00322   DeviceProblemCartridgeInsertError,
00323   DeviceProblemPositionError,
00324   DeviceProblemSensorError,
00325   DeviceProblemCartridgeEjectError,
00326   DeviceProblemGripperError,
00327   DeviceProblemDriveError
00328 } CHANGER_DEVICE_PROBLEM_TYPE, *PCHANGER_DEVICE_PROBLEM_TYPE;
00329 
00330 #ifdef __cplusplus
00331 }
00332 #endif

Generated on Sat May 26 2012 04:30:51 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.