123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- unit cdromioctl;
- {$mode objfpc}
- interface
- uses windows;
- {
- Automatically converted by H2Pas 0.99.15 from cdromioctl.h
- The following command line parameters were used:
- cdromioctl.h
- }
- {$PACKRECORDS C}
- {
- distilled information from various header files from Microsoft's
- DDK for Windows NT 4.0
- }
- type
- SCSI_PASS_THROUGH = record
- Length : USHORT;
- ScsiStatus : UCHAR;
- PathId : UCHAR;
- TargetId : UCHAR;
- Lun : UCHAR;
- CdbLength : UCHAR;
- SenseInfoLength : UCHAR;
- DataIn : UCHAR;
- DataTransferLength : ULONG;
- TimeOutValue : ULONG;
- DataBufferOffset : ULONG;
- SenseInfoOffset : ULONG;
- Cdb : array[0..15] of UCHAR;
- end;
- PSCSI_PASS_THROUGH = ^SCSI_PASS_THROUGH;
- SCSI_PASS_THROUGH_DIRECT = record
- Length : USHORT;
- ScsiStatus : UCHAR;
- PathId : UCHAR;
- TargetId : UCHAR;
- Lun : UCHAR;
- CdbLength : UCHAR;
- SenseInfoLength : UCHAR;
- DataIn : UCHAR;
- DataTransferLength : ULONG;
- TimeOutValue : ULONG;
- DataBuffer : PVOID;
- SenseInfoOffset : ULONG;
- Cdb : array[0..15] of UCHAR;
- end;
- PSCSI_PASS_THROUGH_DIRECT = ^SCSI_PASS_THROUGH_DIRECT;
- SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER = record
- spt : SCSI_PASS_THROUGH_DIRECT;
- Filler : ULONG;
- ucSenseBuf : array[0..31] of UCHAR;
- end;
- PSCSI_PASS_THROUGH_DIRECT_WITH_BUFFER = ^SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER;
- {
- method codes
- }
- const
- METHOD_BUFFERED = 0;
- METHOD_IN_DIRECT = 1;
- METHOD_OUT_DIRECT = 2;
- METHOD_NEITHER = 3;
- {
- file access values
- }
- FILE_ANY_ACCESS = 0;
- FILE_READ_ACCESS = $0001;
- FILE_WRITE_ACCESS = $0002;
- IOCTL_CDROM_BASE = $00000002;
- IOCTL_SCSI_BASE = $00000004;
- {
- constants for DataIn member of SCSI_PASS_THROUGH structures
- }
- SCSI_IOCTL_DATA_OUT = 0;
- SCSI_IOCTL_DATA_IN = 1;
- SCSI_IOCTL_DATA_UNSPECIFIED = 2;
- {
- Standard IOCTL define
- }
- Function CTL_CODE( ADevType, AFunction, AMethod, AAccess : Longint) : Longint;
- function IOCTL_CDROM_READ_TOC : Longint;
- function IOCTL_CDROM_GET_LAST_SESSION : longint;
- function IOCTL_SCSI_PASS_THROUGH : longint;
- function IOCTL_SCSI_MINIPORT : longint;
- function IOCTL_SCSI_GET_INQUIRY_DATA : longint;
- function IOCTL_SCSI_GET_CAPABILITIES : longint;
- function IOCTL_SCSI_PASS_THROUGH_DIRECT : longint;
- function IOCTL_SCSI_GET_ADDRESS : longint;
- implementation
- { was #define dname def_expr }
- function IOCTL_CDROM_GET_LAST_SESSION : longint;
- { return type might be wrong }
- begin
- IOCTL_CDROM_GET_LAST_SESSION:=CTL_CODE(IOCTL_CDROM_BASE,$000E,METHOD_BUFFERED,FILE_READ_ACCESS);
- end;
- { was #define dname def_expr }
- function IOCTL_SCSI_PASS_THROUGH : longint;
- { return type might be wrong }
- begin
- IOCTL_SCSI_PASS_THROUGH:=CTL_CODE(IOCTL_SCSI_BASE,$0401,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS);
- end;
- { was #define dname def_expr }
- function IOCTL_SCSI_MINIPORT : longint;
- { return type might be wrong }
- begin
- IOCTL_SCSI_MINIPORT:=CTL_CODE(IOCTL_SCSI_BASE,$0402,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS);
- end;
- { was #define dname def_expr }
- function IOCTL_SCSI_GET_INQUIRY_DATA : longint;
- { return type might be wrong }
- begin
- IOCTL_SCSI_GET_INQUIRY_DATA:=CTL_CODE(IOCTL_SCSI_BASE,$0403,METHOD_BUFFERED,FILE_ANY_ACCESS);
- end;
- { was #define dname def_expr }
- function IOCTL_SCSI_GET_CAPABILITIES : longint;
- { return type might be wrong }
- begin
- IOCTL_SCSI_GET_CAPABILITIES:=CTL_CODE(IOCTL_SCSI_BASE,$0404,METHOD_BUFFERED,FILE_ANY_ACCESS);
- end;
- { was #define dname def_expr }
- function IOCTL_SCSI_PASS_THROUGH_DIRECT : longint;
- { return type might be wrong }
- begin
- IOCTL_SCSI_PASS_THROUGH_DIRECT:=CTL_CODE(IOCTL_SCSI_BASE,$0405,METHOD_BUFFERED,FILE_READ_ACCESS or FILE_WRITE_ACCESS);
- end;
- { was #define dname def_expr }
- function IOCTL_SCSI_GET_ADDRESS : longint;
- { return type might be wrong }
- begin
- IOCTL_SCSI_GET_ADDRESS:=CTL_CODE(IOCTL_SCSI_BASE,$0406,METHOD_BUFFERED,FILE_ANY_ACCESS);
- end;
- Function CTL_CODE( ADevType, AFunction, AMethod, AAccess : Longint) : Longint;
- begin
- Result:= (ADevType shl 16 )
- Or (AAccess shl 14)
- Or (AFunction SHL 2)
- Or AMethod;
- end;
- function IOCTL_CDROM_READ_TOC : Longint;
- begin
- Result:=CTL_CODE(IOCTL_CDROM_BASE, 0, METHOD_BUFFERED, FILE_READ_ACCESS )
- end;
- end.
|