CDROMIOCTL.pas
上传用户:wanyu_2000
上传日期:2021-02-21
资源大小:527k
文件大小:3k
源码类别:

DVD

开发平台:

Delphi

  1. unit CDROMIOCTL;
  2. interface
  3. uses
  4. {$IFDEF WIN32}
  5.   Windows;
  6. {$ELSE}
  7.   Wintypes,
  8.   WinProcs;
  9. {$ENDIF}
  10. // struct definitions for SPTI
  11. type
  12.   SCSI_PASS_THROUGH = record
  13.     Length: Word;
  14.     ScsiStatus: Byte;
  15.     PathId: Byte;
  16.     TargetId: Byte;
  17.     Lun: Byte;
  18.     CdbLength: Byte;
  19.     SenseInfoLength: Byte;
  20.     DataIn: Byte;
  21.     DataTransferLength: ULONG;
  22.     TimeOutValue: ULONG;
  23.     DataBufferOffset: ULONG;
  24.     SenseInfoOffset: ULONG;
  25.     Cdb: array[0..16 - 1] of Byte;
  26.   end;
  27.   PSCSI_PASS_THROUGH = ^SCSI_PASS_THROUGH;
  28.   PVOID = Pointer;
  29.   SCSI_PASS_THROUGH_DIRECT = record
  30.     Length: Word;
  31.     ScsiStatus: Byte;
  32.     PathId: Byte;
  33.     TargetId: Byte;
  34.     Lun: Byte;
  35.     CdbLength: Byte;
  36.     SenseInfoLength: Byte;
  37.     DataIn: Byte;
  38.     DataTransferLength: ULONG;
  39.     TimeOutValue: ULONG;
  40.     DataBuffer: Pointer;
  41.     SenseInfoOffset: ULONG;
  42.     Cdb: array[0..16 - 1] of Byte;
  43.   end;
  44.   PSCSI_PASS_THROUGH_DIRECT = ^SCSI_PASS_THROUGH_DIRECT;
  45.   SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER = record
  46.     spt: SCSI_PASS_THROUGH_DIRECT;
  47.     Filler: ULONG;
  48.     ucSenseBuf: array[0..32 - 1] of Byte;
  49.   end;
  50.   PSCSI_PASS_THROUGH_DIRECT_WITH_BUFFER = ^SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER;
  51.   {-----------------------------------------------------------------------------
  52.     Procedure: SCSI_PASS_THROUGH_WITH_BUFFERS
  53.     Author:    Bill mudd
  54.     Date:      04-Jan-2005
  55.     Arguments: None
  56.     Result:    None
  57.   -----------------------------------------------------------------------------}
  58.   SCSI_PASS_THROUGH_WITH_BUFFERS = record
  59.     spt: SCSI_PASS_THROUGH_DIRECT;
  60.     Filler: ULONG;
  61.     ucSenseBuf: array[0..32 - 1] of UCHAR;
  62.     ucDataBuf: array[0..512 - 1] of UCHAR;
  63.   end;
  64.   PSCSI_PASS_THROUGH_WITH_BUFFERS = ^SCSI_PASS_THROUGH_WITH_BUFFERS;
  65.   // method codes
  66. const
  67.   METHOD_BUFFERED = 0;
  68.   METHOD_IN_DIRECT = 1;
  69.   METHOD_OUT_DIRECT = 2;
  70.   METHOD_NEITHER = 3;
  71.   // file access values
  72.   FILE_ANY_ACCESS = 0;
  73.   FILE_READ_ACCESS = $0001;
  74.   FILE_WRITE_ACCESS = $0002;
  75.   IOCTL_CDROM_BASE = $00000002;
  76.   IOCTL_SCSI_BASE = $00000004;
  77.   // constants for DataIn member of SCSI_PASS_THROUGH structures
  78.   SCSI_IOCTL_DATA_OUT = 0;
  79.   SCSI_IOCTL_DATA_IN = 1;
  80.   SCSI_IOCTL_DATA_UNSPECIFIED = 2;
  81.   // Standard IOCTL codes
  82.   IOCTL_CDROM_READ_TOC = $24000;
  83.   IOCTL_CDROM_GET_LAST_SESSION = $24038;
  84.   IOCTL_SCSI_PASS_THROUGH = $4D004;
  85.   IOCTL_SCSI_MINIPORT = $4D008;
  86.   IOCTL_SCSI_GET_INQUIRY_DATA = $4100C;
  87.   IOCTL_SCSI_GET_CAPABILITIES = $41010;
  88.   IOCTL_SCSI_PASS_THROUGH_DIRECT = $4D014;
  89.   IOCTL_SCSI_GET_ADDRESS = $41018;
  90. implementation
  91. end.