From fd44a4b51420d4498c9643d27eb4d3bceba98df6 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sat, 18 Jun 2005 20:55:09 +0000 Subject: [PATCH] Get rid of ROS DDK SCSI headers. svn path=/trunk/; revision=16060 --- reactos/drivers/storage/atapi/atapi.c | 22 +- reactos/drivers/storage/scsiport/scsiport.c | 15 +- reactos/drivers/storage/scsiport/scsiport.xml | 1 + reactos/include/ddk/scsi.h | 1306 ----------------- reactos/include/ddk/srb.h | 679 --------- 5 files changed, 20 insertions(+), 2003 deletions(-) delete mode 100644 reactos/include/ddk/scsi.h delete mode 100644 reactos/include/ddk/srb.h diff --git a/reactos/drivers/storage/atapi/atapi.c b/reactos/drivers/storage/atapi/atapi.c index 1a8cc551252..fe1a871c063 100644 --- a/reactos/drivers/storage/atapi/atapi.c +++ b/reactos/drivers/storage/atapi/atapi.c @@ -449,9 +449,9 @@ AtapiClaimHwResources(PATAPI_MINIPORT_EXTENSION DevExt, } DevExt->Handler = NULL; DevExt->CommandPortBase = (ULONG)IoBase; - ConfigInfo->AccessRanges[0].RangeStart = IoAddress; - ConfigInfo->AccessRanges[0].RangeLength = 8; - ConfigInfo->AccessRanges[0].RangeInMemory = FALSE; + (*ConfigInfo->AccessRanges)[0].RangeStart = IoAddress; + (*ConfigInfo->AccessRanges)[0].RangeLength = 8; + (*ConfigInfo->AccessRanges)[0].RangeInMemory = FALSE; if (ControlPortBase) { @@ -469,9 +469,9 @@ AtapiClaimHwResources(PATAPI_MINIPORT_EXTENSION DevExt, return FALSE; } DevExt->ControlPortBase = (ULONG)IoBase; - ConfigInfo->AccessRanges[1].RangeStart = IoAddress; - ConfigInfo->AccessRanges[1].RangeLength = 1; - ConfigInfo->AccessRanges[1].RangeInMemory = FALSE; + (*ConfigInfo->AccessRanges)[1].RangeStart = IoAddress; + (*ConfigInfo->AccessRanges)[1].RangeLength = 1; + (*ConfigInfo->AccessRanges)[1].RangeInMemory = FALSE; } if (BusMasterPortBase) { @@ -489,9 +489,9 @@ AtapiClaimHwResources(PATAPI_MINIPORT_EXTENSION DevExt, return FALSE; } DevExt->BusMasterRegisterBase = (ULONG)IoBase; - ConfigInfo->AccessRanges[2].RangeStart = IoAddress; - ConfigInfo->AccessRanges[2].RangeLength = 8; - ConfigInfo->AccessRanges[2].RangeInMemory = FALSE; + (*ConfigInfo->AccessRanges)[2].RangeStart = IoAddress; + (*ConfigInfo->AccessRanges)[2].RangeLength = 8; + (*ConfigInfo->AccessRanges)[2].RangeInMemory = FALSE; #ifdef ENABLE_DMA // ConfigInfo->DmaChannel = SP_UNINITIALIZED_VALUE; // ConfigInfo->DmaPort = SP_UNINITIALIZED_VALUE; @@ -1094,10 +1094,10 @@ AtapiFindDevices(PATAPI_MINIPORT_EXTENSION DeviceExtension, DPRINT("AtapiFindDevices() called\n"); - CommandPortBase = ScsiPortConvertPhysicalAddressToUlong(ConfigInfo->AccessRanges[0].RangeStart); + CommandPortBase = ScsiPortConvertPhysicalAddressToUlong((*ConfigInfo->AccessRanges)[0].RangeStart); DPRINT(" CommandPortBase: %x\n", CommandPortBase); - ControlPortBase = ScsiPortConvertPhysicalAddressToUlong(ConfigInfo->AccessRanges[1].RangeStart); + ControlPortBase = ScsiPortConvertPhysicalAddressToUlong((*ConfigInfo->AccessRanges)[1].RangeStart); DPRINT(" ControlPortBase: %x\n", ControlPortBase); for (UnitNumber = 0; UnitNumber < 2; UnitNumber++) diff --git a/reactos/drivers/storage/scsiport/scsiport.c b/reactos/drivers/storage/scsiport/scsiport.c index da66b435940..91dae10f5d8 100644 --- a/reactos/drivers/storage/scsiport/scsiport.c +++ b/reactos/drivers/storage/scsiport/scsiport.c @@ -274,6 +274,7 @@ ScsiPortCompleteRequest(IN PVOID HwDeviceExtension, /* * @implemented */ +#undef ScsiPortConvertPhysicalAddressToUlong ULONG STDCALL ScsiPortConvertPhysicalAddressToUlong(IN SCSI_PHYSICAL_ADDRESS Address) { @@ -925,7 +926,7 @@ ScsiPortInitialize(IN PVOID Argument1, PortConfig->DemandMode = FALSE; PortConfig->MapBuffers = HwInitializationData->MapBuffers; PortConfig->NeedPhysicalAddresses = HwInitializationData->NeedPhysicalAddresses; - PortConfig->TaggedQueuing = HwInitializationData->TaggedQueueing; + PortConfig->TaggedQueuing = HwInitializationData->TaggedQueuing; PortConfig->AutoRequestSense = HwInitializationData->AutoRequestSense; PortConfig->MultipleRequestPerLu = HwInitializationData->MultipleRequestPerLu; PortConfig->ReceiveEvent = HwInitializationData->ReceiveEvent; @@ -937,7 +938,7 @@ ScsiPortInitialize(IN PVOID Argument1, PortConfig->SrbExtensionSize = HwInitializationData->SrbExtensionSize; PortConfig->SpecificLuExtensionSize = HwInitializationData->SpecificLuExtensionSize; - PortConfig->AccessRanges = (PACCESS_RANGE)(PortConfig + 1); + PortConfig->AccessRanges = (ACCESS_RANGE(*)[])(PortConfig + 1); /* Search for matching PCI device */ if ((HwInitializationData->AdapterInterfaceType == PCIBus) && @@ -1458,9 +1459,9 @@ SpiGetPciConfigData (IN struct _HW_INITIALIZATION_DATA *HwInitializationData, for (i = 0; i < PortConfig->NumberOfAccessRanges; i++) { - PortConfig->AccessRanges[i].RangeStart.QuadPart = + (*PortConfig->AccessRanges)[i].RangeStart.QuadPart = PciConfig.u.type0.BaseAddresses[i] & PCI_ADDRESS_IO_ADDRESS_MASK; - if (PortConfig->AccessRanges[i].RangeStart.QuadPart != 0) + if ((*PortConfig->AccessRanges)[i].RangeStart.QuadPart != 0) { RangeLength = (ULONG)-1; HalSetBusDataByOffset (PCIConfiguration, @@ -1485,9 +1486,9 @@ SpiGetPciConfigData (IN struct _HW_INITIALIZATION_DATA *HwInitializationData, sizeof(ULONG)); if (RangeLength != 0) { - PortConfig->AccessRanges[i].RangeLength = + (*PortConfig->AccessRanges)[i].RangeLength = -(RangeLength & PCI_ADDRESS_IO_ADDRESS_MASK); - PortConfig->AccessRanges[i].RangeInMemory = + (*PortConfig->AccessRanges)[i].RangeInMemory = !(PciConfig.u.type0.BaseAddresses[i] & PCI_ADDRESS_IO_SPACE); DPRINT("RangeStart 0x%lX RangeLength 0x%lX RangeInMemory %s\n", @@ -2470,7 +2471,7 @@ SpiBuildDeviceMap (PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, } /* Set 'IOAddress' (REG_DWORD) value (NT4 only) */ - UlongData = ScsiPortConvertPhysicalAddressToUlong(DeviceExtension->PortConfig->AccessRanges[0].RangeStart); + UlongData = ScsiPortConvertPhysicalAddressToUlong((*DeviceExtension->PortConfig->AccessRanges)[0].RangeStart); DPRINT(" IOAddress = %lx\n", UlongData); RtlInitUnicodeString(&ValueName, L"IOAddress"); diff --git a/reactos/drivers/storage/scsiport/scsiport.xml b/reactos/drivers/storage/scsiport/scsiport.xml index b311a4ad841..cb73d0e90b9 100644 --- a/reactos/drivers/storage/scsiport/scsiport.xml +++ b/reactos/drivers/storage/scsiport/scsiport.xml @@ -1,6 +1,7 @@ + . ntoskrnl diff --git a/reactos/include/ddk/scsi.h b/reactos/include/ddk/scsi.h deleted file mode 100644 index 921b83a9e4d..00000000000 --- a/reactos/include/ddk/scsi.h +++ /dev/null @@ -1,1306 +0,0 @@ -/* $Id$ - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: services/storage/include/scsi.h - * PURPOSE: SCSI class driver definitions - * PROGRAMMER: Eric Kohl (ekohl@rz-online.de) - */ - -#ifndef __STORAGE_INCLUDE_SCSI_H -#define __STORAGE_INCLUDE_SCSI_H - - -/* Command Descriptor Block */ - -typedef union _CDB -{ - /* Generic 6-Byte CDB */ - struct _CDB6GENERIC - { - UCHAR OperationCode; - UCHAR Immediate:1; - UCHAR CommandUniqueBits:4; - UCHAR LogicalUnitNumber:3; - UCHAR CommandUniqueBytes[3]; - UCHAR Link:1; - UCHAR Flag:1; - UCHAR Reserved:4; - UCHAR VendorUnique:2; - } CDB6GENERIC, *PCDB6GENERIC; - - /* Standard 6-byte CDB */ - struct _CDB6READWRITE - { - UCHAR OperationCode; - UCHAR LogicalBlockMsb1:5; - UCHAR LogicalUnitNumber:3; - UCHAR LogicalBlockMsb0; - UCHAR LogicalBlockLsb; - UCHAR TransferBlocks; - UCHAR Control; - } CDB6READWRITE, *PCDB6READWRITE; - - /* SCSI Inquiry CDB */ - struct _CDB6INQUIRY - { - UCHAR OperationCode; - UCHAR Reserved1:5; - UCHAR LogicalUnitNumber:3; - UCHAR PageCode; - UCHAR IReserved; - UCHAR AllocationLength; - UCHAR Control; - } CDB6INQUIRY, *PCDB6INQUIRY; - - /* SCSI Format CDB */ - struct _CDB6FORMAT - { - UCHAR OperationCode; - UCHAR FormatControl:5; - UCHAR LogicalUnitNumber:3; - UCHAR FReserved1; - UCHAR InterleaveMsb; - UCHAR InterleaveLsb; - UCHAR FReserved2; - } CDB6FORMAT, *PCDB6FORMAT; - - /* Standard 10-byte CDB */ - struct _CDB10 - { - UCHAR OperationCode; - UCHAR RelativeAddress:1; - UCHAR Reserved1:2; - UCHAR ForceUnitAccess:1; - UCHAR DisablePageOut:1; - UCHAR LogicalUnitNumber:3; - UCHAR LogicalBlockByte0; - UCHAR LogicalBlockByte1; - UCHAR LogicalBlockByte2; - UCHAR LogicalBlockByte3; - UCHAR Reserved2; - UCHAR TransferBlocksMsb; - UCHAR TransferBlocksLsb; - UCHAR Control; - } CDB10, *PCDB10; - - /* CD Rom Audio CDBs */ - struct _PAUSE_RESUME - { - UCHAR OperationCode; - UCHAR Reserved1:5; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2[6]; - UCHAR Action; - UCHAR Control; - } PAUSE_RESUME, *PPAUSE_RESUME; - - /* Read Table of Contents */ - struct _READ_TOC - { - UCHAR OperationCode; - UCHAR Reserved0:1; - UCHAR Msf:1; - UCHAR Reserved1:3; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2[4]; - UCHAR StartingTrack; - UCHAR AllocationLength[2]; - UCHAR Control:6; - UCHAR Format:2; - } READ_TOC, *PREAD_TOC; - - struct _PLAY_AUDIO_MSF - { - UCHAR OperationCode; - UCHAR Reserved1:5; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2; - UCHAR StartingM; - UCHAR StartingS; - UCHAR StartingF; - UCHAR EndingM; - UCHAR EndingS; - UCHAR EndingF; - UCHAR Control; - } PLAY_AUDIO_MSF, *PPLAY_AUDIO_MSF; - - /* Read SubChannel Data */ - struct _SUBCHANNEL - { - UCHAR OperationCode; - UCHAR Reserved0:1; - UCHAR Msf:1; - UCHAR Reserved1:3; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2:6; - UCHAR SubQ:1; - UCHAR Reserved3:1; - UCHAR Format; - UCHAR Reserved4[2]; - UCHAR TrackNumber; - UCHAR AllocationLength[2]; - UCHAR Control; - } SUBCHANNEL, *PSUBCHANNEL; - - /* Read CD. Used by Atapi for raw sector reads. */ - struct _READ_CD - { - UCHAR OperationCode; - UCHAR Reserved0:2; - UCHAR ExpectedSectorType:3; - UCHAR Reserved1:3; - UCHAR StartingLBA[4]; - UCHAR TransferBlocks[3]; - UCHAR Reserved2:1; - UCHAR ErrorFlags:2; - UCHAR IncludeEDC:1; - UCHAR IncludeUserData:1; - UCHAR HeaderCode:2; - UCHAR IncludeSyncData:1; - UCHAR SubChannelSelection:3; - UCHAR Reserved3:5; - UCHAR Reserved4; - } READ_CD, *PREAD_CD; - - /* Plextor Read CD-DA */ - struct _PLXTR_READ_CDDA - { - UCHAR OperationCode; - UCHAR Reserved0:5; - UCHAR LogicalUnitNumber:3; - UCHAR LogicalBlockByte0; - UCHAR LogicalBlockByte1; - UCHAR LogicalBlockByte2; - UCHAR LogicalBlockByte3; - UCHAR TransferBlockByte0; - UCHAR TransferBlockByte1; - UCHAR TransferBlockByte2; - UCHAR TransferBlockByte3; - UCHAR SubCode; - UCHAR Control; - } PLXTR_READ_CDDA, *PPLXTR_READ_CDDA; - - /* NEC Read CD-DA */ - struct _NEC_READ_CDDA - { - UCHAR OperationCode; - UCHAR Reserved0; - UCHAR LogicalBlockByte0; - UCHAR LogicalBlockByte1; - UCHAR LogicalBlockByte2; - UCHAR LogicalBlockByte3; - UCHAR Reserved1; - UCHAR TransferBlockByte0; - UCHAR TransferBlockByte1; - UCHAR Control; - } NEC_READ_CDDA, *PNEC_READ_CDDA; - - /* Mode sense */ - struct _MODE_SENSE - { - UCHAR OperationCode; - UCHAR Reserved1:3; - UCHAR Dbd:1; - UCHAR Reserved2:1; - UCHAR LogicalUnitNumber:3; - UCHAR PageCode:6; - UCHAR Pc:2; - UCHAR Reserved3; - UCHAR AllocationLength; - UCHAR Control; - } MODE_SENSE, *PMODE_SENSE; - - struct _MODE_SENSE10 - { - UCHAR OperationCode; - UCHAR Reserved1:3; - UCHAR Dbd:1; - UCHAR Reserved2:1; - UCHAR LogicalUnitNumber:3; - UCHAR PageCode:6; - UCHAR Pc:2; - UCHAR Reserved3[4]; - UCHAR AllocationLength[2]; - UCHAR Control; - } MODE_SENSE10, *PMODE_SENSE10; - - /* Mode select */ - struct _MODE_SELECT - { - UCHAR OperationCode; - UCHAR SPBit:1; - UCHAR Reserved1:3; - UCHAR PFBit:1; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2[2]; - UCHAR ParameterListLength; - UCHAR Control; - } MODE_SELECT, *PMODE_SELECT; - - struct _MODE_SELECT10 - { - UCHAR OperationCode; - UCHAR SPBit:1; - UCHAR Reserved1:3; - UCHAR PFBit:1; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2[5]; - UCHAR ParameterListLength[2]; - UCHAR Control; - } MODE_SELECT10, *PMODE_SELECT10; - - struct _LOCATE - { - UCHAR OperationCode; - UCHAR Immediate:1; - UCHAR CPBit:1; - UCHAR BTBit:1; - UCHAR Reserved1:2; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved3; - UCHAR LogicalBlockAddress[4]; - UCHAR Reserved4; - UCHAR Partition; - UCHAR Control; - } LOCATE, *PLOCATE; - - struct _LOGSENSE - { - UCHAR OperationCode; - UCHAR SPBit:1; - UCHAR PPCBit:1; - UCHAR Reserved1:3; - UCHAR LogicalUnitNumber:3; - UCHAR PageCode:6; - UCHAR PCBit:2; - UCHAR Reserved2; - UCHAR Reserved3; - UCHAR ParameterPointer[2]; /* [0]=MSB, [1]=LSB */ - UCHAR AllocationLength[2]; /* [0]=MSB, [1]=LSB */ - UCHAR Control; - } LOGSENSE, *PLOGSENSE; - - struct _PRINT - { - UCHAR OperationCode; - UCHAR Reserved:5; - UCHAR LogicalUnitNumber:3; - UCHAR TransferLength[3]; - UCHAR Control; - } PRINT, *PPRINT; - - struct _SEEK - { - UCHAR OperationCode; - UCHAR Reserved1:5; - UCHAR LogicalUnitNumber:3; - UCHAR LogicalBlockAddress[4]; - UCHAR Reserved2[3]; - UCHAR Control; - } SEEK, *PSEEK; - - struct _ERASE - { - UCHAR OperationCode; - UCHAR Long:1; - UCHAR Immediate:1; - UCHAR Reserved1:3; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2[3]; - UCHAR Control; - } ERASE, *PERASE; - - struct _START_STOP - { - UCHAR OperationCode; - UCHAR Immediate:1; - UCHAR Reserved1:4; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2[2]; - UCHAR Start:1; - UCHAR LoadEject:1; - UCHAR Reserved3:6; - UCHAR Control; - } START_STOP, *PSTART_STOP; - - struct _MEDIA_REMOVAL - { - UCHAR OperationCode; - UCHAR Reserved1:5; - UCHAR LogicalUnitNumber:3; - UCHAR Reserved2[2]; - UCHAR Prevent; - UCHAR Control; - } MEDIA_REMOVAL, *PMEDIA_REMOVAL; - - /* Tape CDBs */ - struct _SEEK_BLOCK - { - UCHAR OperationCode; - UCHAR Immediate:1; - UCHAR Reserved1:7; - UCHAR BlockAddress[3]; - UCHAR Link:1; - UCHAR Flag:1; - UCHAR Reserved2:4; - UCHAR VendorUnique:2; - } SEEK_BLOCK, *PSEEK_BLOCK; - - struct _REQUEST_BLOCK_ADDRESS - { - UCHAR OperationCode; - UCHAR Reserved1[3]; - UCHAR AllocationLength; - UCHAR Link:1; - UCHAR Flag:1; - UCHAR Reserved2:4; - UCHAR VendorUnique:2; - } REQUEST_BLOCK_ADDRESS, *PREQUEST_BLOCK_ADDRESS; - - struct _PARTITION - { - UCHAR OperationCode; - UCHAR Immediate:1; - UCHAR Sel:1; - UCHAR PartitionSelect:6; - UCHAR Reserved1[3]; - UCHAR Control; - } PARTITION, *PPARTITION; - - struct _WRITE_TAPE_MARKS - { - UCHAR OperationCode; - UCHAR Immediate:1; - UCHAR WriteSetMarks:1; - UCHAR Reserved:3; - UCHAR LogicalUnitNumber:3; - UCHAR TransferLength[3]; - UCHAR Control; - } WRITE_TAPE_MARKS, *PWRITE_TAPE_MARKS; - - struct _SPACE_TAPE_MARKS - { - UCHAR OperationCode; - UCHAR Code:3; - UCHAR Reserved:2; - UCHAR LogicalUnitNumber:3; - UCHAR NumMarksMSB ; - UCHAR NumMarks; - UCHAR NumMarksLSB; - union - { - UCHAR value; - struct - { - UCHAR Link:1; - UCHAR Flag:1; - UCHAR Reserved:4; - UCHAR VendorUnique:2; - } Fields; - } Byte6; - } SPACE_TAPE_MARKS, *PSPACE_TAPE_MARKS; - - /* Read tape position */ - struct _READ_POSITION - { - UCHAR Operation; - UCHAR BlockType:1; - UCHAR Reserved1:4; - UCHAR Lun:3; - UCHAR Reserved2[7]; - UCHAR Control; - } READ_POSITION, *PREAD_POSITION; - - /* ReadWrite for Tape */ - struct _CDB6READWRITETAPE - { - UCHAR OperationCode; - UCHAR VendorSpecific:5; - UCHAR Reserved:3; - UCHAR TransferLenMSB; - UCHAR TransferLen; - UCHAR TransferLenLSB; - UCHAR Link:1; - UCHAR Flag:1; - UCHAR Reserved1:4; - UCHAR VendorUnique:2; - } CDB6READWRITETAPE, *PCDB6READWRITETAPE; - - /* Atapi 2.5 Changer 12-byte CDBs */ - struct _LOAD_UNLOAD - { - UCHAR OperationCode; - UCHAR Immediate:1; - UCHAR Reserved1:7; - UCHAR Reserved2[2]; - UCHAR Start:1; - UCHAR LoadEject:1; - UCHAR Reserved3:6; - UCHAR Reserved4[3]; - UCHAR Slot; - UCHAR Reserved5[3]; - } LOAD_UNLOAD, *PLOAD_UNLOAD; - - struct _MECH_STATUS - { - UCHAR OperationCode; - UCHAR Reserved1[7]; - UCHAR AllocationLength[2]; - UCHAR Reserved2[2]; - } MECH_STATUS, *PMECH_STATUS; -} CDB, *PCDB; - - -/* Command Descriptor Block constants */ - -#define CDB6GENERIC_LENGTH 6 -#define CDB10GENERIC_LENGTH 10 -#define CDB12GENERIC_LENGTH 12 - -#define SETBITON 1 -#define SETBITOFF 0 - - -/* Mode Sense/Select page constants */ - -#define MODE_PAGE_ERROR_RECOVERY 0x01 -#define MODE_PAGE_DISCONNECT 0x02 -#define MODE_PAGE_FORMAT_DEVICE 0x03 -#define MODE_PAGE_RIGID_GEOMETRY 0x04 -#define MODE_PAGE_FLEXIBILE 0x05 -#define MODE_PAGE_VERIFY_ERROR 0x07 -#define MODE_PAGE_CACHING 0x08 -#define MODE_PAGE_PERIPHERAL 0x09 -#define MODE_PAGE_CONTROL 0x0A -#define MODE_PAGE_MEDIUM_TYPES 0x0B -#define MODE_PAGE_NOTCH_PARTITION 0x0C -#define MODE_SENSE_RETURN_ALL 0x3f -#define MODE_SENSE_CURRENT_VALUES 0x00 -#define MODE_SENSE_CHANGEABLE_VALUES 0x40 -#define MODE_SENSE_DEFAULT_VAULES 0x80 -#define MODE_SENSE_SAVED_VALUES 0xc0 -#define MODE_PAGE_DEVICE_CONFIG 0x10 -#define MODE_PAGE_MEDIUM_PARTITION 0x11 -#define MODE_PAGE_DATA_COMPRESS 0x0f -#define MODE_PAGE_CAPABILITIES 0x2A - - -/* SCSI CDB operation codes */ - -#define SCSIOP_TEST_UNIT_READY 0x00 -#define SCSIOP_REZERO_UNIT 0x01 -#define SCSIOP_REWIND 0x01 -#define SCSIOP_REQUEST_BLOCK_ADDR 0x02 -#define SCSIOP_REQUEST_SENSE 0x03 -#define SCSIOP_FORMAT_UNIT 0x04 -#define SCSIOP_READ_BLOCK_LIMITS 0x05 -#define SCSIOP_REASSIGN_BLOCKS 0x07 -#define SCSIOP_READ6 0x08 -#define SCSIOP_RECEIVE 0x08 -#define SCSIOP_WRITE6 0x0A -#define SCSIOP_PRINT 0x0A -#define SCSIOP_SEND 0x0A -#define SCSIOP_SEEK6 0x0B -#define SCSIOP_TRACK_SELECT 0x0B -#define SCSIOP_SLEW_PRINT 0x0B -#define SCSIOP_SEEK_BLOCK 0x0C -#define SCSIOP_PARTITION 0x0D -#define SCSIOP_READ_REVERSE 0x0F -#define SCSIOP_WRITE_FILEMARKS 0x10 -#define SCSIOP_FLUSH_BUFFER 0x10 -#define SCSIOP_SPACE 0x11 -#define SCSIOP_INQUIRY 0x12 -#define SCSIOP_VERIFY6 0x13 -#define SCSIOP_RECOVER_BUF_DATA 0x14 -#define SCSIOP_MODE_SELECT 0x15 -#define SCSIOP_RESERVE_UNIT 0x16 -#define SCSIOP_RELEASE_UNIT 0x17 -#define SCSIOP_COPY 0x18 -#define SCSIOP_ERASE 0x19 -#define SCSIOP_MODE_SENSE 0x1A -#define SCSIOP_START_STOP_UNIT 0x1B -#define SCSIOP_STOP_PRINT 0x1B -#define SCSIOP_LOAD_UNLOAD 0x1B -#define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C -#define SCSIOP_SEND_DIAGNOSTIC 0x1D -#define SCSIOP_MEDIUM_REMOVAL 0x1E -#define SCSIOP_READ_CAPACITY 0x25 -#define SCSIOP_READ 0x28 -#define SCSIOP_WRITE 0x2A -#define SCSIOP_SEEK 0x2B -#define SCSIOP_LOCATE 0x2B -#define SCSIOP_WRITE_VERIFY 0x2E -#define SCSIOP_VERIFY 0x2F -#define SCSIOP_SEARCH_DATA_HIGH 0x30 -#define SCSIOP_SEARCH_DATA_EQUAL 0x31 -#define SCSIOP_SEARCH_DATA_LOW 0x32 -#define SCSIOP_SET_LIMITS 0x33 -#define SCSIOP_READ_POSITION 0x34 -#define SCSIOP_SYNCHRONIZE_CACHE 0x35 -#define SCSIOP_COMPARE 0x39 -#define SCSIOP_COPY_COMPARE 0x3A -#define SCSIOP_WRITE_DATA_BUFF 0x3B -#define SCSIOP_READ_DATA_BUFF 0x3C -#define SCSIOP_CHANGE_DEFINITION 0x40 -#define SCSIOP_READ_SUB_CHANNEL 0x42 -#define SCSIOP_READ_TOC 0x43 -#define SCSIOP_READ_HEADER 0x44 -#define SCSIOP_PLAY_AUDIO 0x45 -#define SCSIOP_PLAY_AUDIO_MSF 0x47 -#define SCSIOP_PLAY_TRACK_INDEX 0x48 -#define SCSIOP_PLAY_TRACK_RELATIVE 0x49 -#define SCSIOP_PAUSE_RESUME 0x4B -#define SCSIOP_LOG_SELECT 0x4C -#define SCSIOP_LOG_SENSE 0x4D -#define SCSIOP_MODE_SELECT10 0x55 -#define SCSIOP_MODE_SENSE10 0x5A -#define SCSIOP_LOAD_UNLOAD_SLOT 0xA6 -#define SCSIOP_MECHANISM_STATUS 0xBD -#define SCSIOP_READ_CD 0xBE - -/* - * If the IMMED bit is 1, status is returned as soon - * as the operation is initiated. If the IMMED bit - * is 0, status is not returned until the operation - * is completed. - */ - -#define CDB_RETURN_ON_COMPLETION 0 -#define CDB_RETURN_IMMEDIATE 1 - - -/* - * CDB Force media access used in extended read and write commands. - */ - -#define CDB_FORCE_MEDIA_ACCESS 0x08 - -/* - * Denon CD ROM operation codes - */ - -#define SCSIOP_DENON_EJECT_DISC 0xE6 -#define SCSIOP_DENON_STOP_AUDIO 0xE7 -#define SCSIOP_DENON_PLAY_AUDIO 0xE8 -#define SCSIOP_DENON_READ_TOC 0xE9 -#define SCSIOP_DENON_READ_SUBCODE 0xEB - -/* - * SCSI Bus Messages - */ - -#define SCSIMESS_ABORT 0x06 -#define SCSIMESS_ABORT_WITH_TAG 0x0D -#define SCSIMESS_BUS_DEVICE_RESET 0X0C -#define SCSIMESS_CLEAR_QUEUE 0X0E -#define SCSIMESS_COMMAND_COMPLETE 0X00 -#define SCSIMESS_DISCONNECT 0X04 -#define SCSIMESS_EXTENDED_MESSAGE 0X01 -#define SCSIMESS_IDENTIFY 0X80 -#define SCSIMESS_IDENTIFY_WITH_DISCON 0XC0 -#define SCSIMESS_IGNORE_WIDE_RESIDUE 0X23 -#define SCSIMESS_INITIATE_RECOVERY 0X0F -#define SCSIMESS_INIT_DETECTED_ERROR 0X05 -#define SCSIMESS_LINK_CMD_COMP 0X0A -#define SCSIMESS_LINK_CMD_COMP_W_FLAG 0X0B -#define SCSIMESS_MESS_PARITY_ERROR 0X09 -#define SCSIMESS_MESSAGE_REJECT 0X07 -#define SCSIMESS_NO_OPERATION 0X08 -#define SCSIMESS_HEAD_OF_QUEUE_TAG 0X21 -#define SCSIMESS_ORDERED_QUEUE_TAG 0X22 -#define SCSIMESS_SIMPLE_QUEUE_TAG 0X20 -#define SCSIMESS_RELEASE_RECOVERY 0X10 -#define SCSIMESS_RESTORE_POINTERS 0X03 -#define SCSIMESS_SAVE_DATA_POINTER 0X02 -#define SCSIMESS_TERMINATE_IO_PROCESS 0X11 - -/* - * SCSI Extended Message operation codes - */ - -#define SCSIMESS_MODIFY_DATA_POINTER 0X00 -#define SCSIMESS_SYNCHRONOUS_DATA_REQ 0X01 -#define SCSIMESS_WIDE_DATA_REQUEST 0X03 - -/* - * SCSI Extended Message Lengths - */ - -#define SCSIMESS_MODIFY_DATA_LENGTH 5 -#define SCSIMESS_SYNCH_DATA_LENGTH 3 -#define SCSIMESS_WIDE_DATA_LENGTH 2 - -/* - * SCSI extended message structure - */ - -#pragma pack (1) -typedef struct _SCSI_EXTENDED_MESSAGE -{ - UCHAR InitialMessageCode; - UCHAR MessageLength; - UCHAR MessageType; - union _EXTENDED_ARGUMENTS - { - struct - { - UCHAR Modifier[4]; - } Modify; - - struct - { - UCHAR TransferPeriod; - UCHAR ReqAckOffset; - } Synchronous; - - struct - { - UCHAR Width; - } Wide; - } ExtendedArguments; -}SCSI_EXTENDED_MESSAGE, *PSCSI_EXTENDED_MESSAGE; -#pragma pack () - - -/* SCSI bus status codes */ - -#define SCSISTAT_GOOD 0x00 -#define SCSISTAT_CHECK_CONDITION 0x02 -#define SCSISTAT_CONDITION_MET 0x04 -#define SCSISTAT_BUSY 0x08 -#define SCSISTAT_INTERMEDIATE 0x10 -#define SCSISTAT_INTERMEDIATE_COND_MET 0x14 -#define SCSISTAT_RESERVATION_CONFLICT 0x18 -#define SCSISTAT_COMMAND_TERMINATED 0x22 -#define SCSISTAT_QUEUE_FULL 0x28 - -/* - * Enable Vital Product Data Flag (EVPD) - * used with INQUIRY command. - */ - -#define CDB_INQUIRY_EVPD 0x01 - -/* - * Defines for format CDB - */ - -#define LUN0_FORMAT_SAVING_DEFECT_LIST 0 -#define USE_DEFAULTMSB 0 -#define USE_DEFAULTLSB 0 - -#define START_UNIT_CODE 0x01 -#define STOP_UNIT_CODE 0x00 - - - -// -// Inquiry buffer structure. This is the data returned from the target -// after it receives an inquiry. -// -// This structure may be extended by the number of bytes specified -// in the field AdditionalLength. The defined size constant only -// includes fields through ProductRevisionLevel. -// -// The NT SCSI drivers are only interested in the first 36 bytes of data. -// - -#define INQUIRYDATABUFFERSIZE 36 - - -typedef struct _INQUIRYDATA -{ - UCHAR DeviceType:5; - UCHAR DeviceTypeQualifier:3; - UCHAR DeviceTypeModifier:7; - UCHAR RemovableMedia:1; - UCHAR Versions; - UCHAR ResponseDataFormat; - UCHAR AdditionalLength; - UCHAR Reserved[2]; - UCHAR SoftReset:1; - UCHAR CommandQueue:1; - UCHAR Reserved2:1; - UCHAR LinkedCommands:1; - UCHAR Synchronous:1; - UCHAR Wide16Bit:1; - UCHAR Wide32Bit:1; - UCHAR RelativeAddressing:1; - UCHAR VendorId[8]; - UCHAR ProductId[16]; - UCHAR ProductRevisionLevel[4]; - UCHAR VendorSpecific[20]; - UCHAR Reserved3[40]; -} INQUIRYDATA, *PINQUIRYDATA; - -// -// Inquiry defines. Used to interpret data returned from target as result -// of inquiry command. -// -// DeviceType field -// - -#define DIRECT_ACCESS_DEVICE 0x00 // disks -#define SEQUENTIAL_ACCESS_DEVICE 0x01 // tapes -#define PRINTER_DEVICE 0x02 // printers -#define PROCESSOR_DEVICE 0x03 // scanners, printers, etc -#define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04 // worms -#define READ_ONLY_DIRECT_ACCESS_DEVICE 0x05 // cdroms -#define SCANNER_DEVICE 0x06 // scanners -#define OPTICAL_DEVICE 0x07 // optical disks -#define MEDIUM_CHANGER 0x08 // jukebox -#define COMMUNICATION_DEVICE 0x09 // network -#define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F -#define DEVICE_QUALIFIER_NOT_SUPPORTED 0x03 - -// -// DeviceTypeQualifier field -// - -#define DEVICE_CONNECTED 0x00 - - -/* Sense Data Format */ - -typedef struct _SENSE_DATA -{ - UCHAR ErrorCode:7; - UCHAR Valid:1; - UCHAR SegmentNumber; - UCHAR SenseKey:4; - UCHAR Reserved:1; - UCHAR IncorrectLength:1; - UCHAR EndOfMedia:1; - UCHAR FileMark:1; - UCHAR Information[4]; - UCHAR AdditionalSenseLength; - UCHAR CommandSpecificInformation[4]; - UCHAR AdditionalSenseCode; - UCHAR AdditionalSenseCodeQualifier; - UCHAR FieldReplaceableUnitCode; - UCHAR SenseKeySpecific[3]; -} SENSE_DATA, *PSENSE_DATA; - - -/* Default request sense buffer size */ - -#define SENSE_BUFFER_SIZE 18 - -/* Sense codes */ - -#define SCSI_SENSE_NO_SENSE 0x00 -#define SCSI_SENSE_RECOVERED_ERROR 0x01 -#define SCSI_SENSE_NOT_READY 0x02 -#define SCSI_SENSE_MEDIUM_ERROR 0x03 -#define SCSI_SENSE_HARDWARE_ERROR 0x04 -#define SCSI_SENSE_ILLEGAL_REQUEST 0x05 -#define SCSI_SENSE_UNIT_ATTENTION 0x06 -#define SCSI_SENSE_DATA_PROTECT 0x07 -#define SCSI_SENSE_BLANK_CHECK 0x08 -#define SCSI_SENSE_UNIQUE 0x09 -#define SCSI_SENSE_COPY_ABORTED 0x0A -#define SCSI_SENSE_ABORTED_COMMAND 0x0B -#define SCSI_SENSE_EQUAL 0x0C -#define SCSI_SENSE_VOL_OVERFLOW 0x0D -#define SCSI_SENSE_MISCOMPARE 0x0E -#define SCSI_SENSE_RESERVED 0x0F - -/* Additional tape bit */ - -#define SCSI_ILLEGAL_LENGTH 0x20 -#define SCSI_EOM 0x40 -#define SCSI_FILE_MARK 0x80 - -/* Additional Sense codes */ - -#define SCSI_ADSENSE_NO_SENSE 0x00 -#define SCSI_ADSENSE_LUN_NOT_READY 0x04 -#define SCSI_ADSENSE_ILLEGAL_COMMAND 0x20 -#define SCSI_ADSENSE_ILLEGAL_BLOCK 0x21 -#define SCSI_ADSENSE_INVALID_LUN 0x25 -#define SCSI_ADSENSE_INVALID_CDB 0x24 -#define SCSI_ADSENSE_MUSIC_AREA 0xA0 -#define SCSI_ADSENSE_DATA_AREA 0xA1 -#define SCSI_ADSENSE_VOLUME_OVERFLOW 0xA7 - -#define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE 0x3a -#define SCSI_ADWRITE_PROTECT 0x27 -#define SCSI_ADSENSE_MEDIUM_CHANGED 0x28 -#define SCSI_ADSENSE_BUS_RESET 0x29 -#define SCSI_ADSENSE_TRACK_ERROR 0x14 -#define SCSI_ADSENSE_SEEK_ERROR 0x15 -#define SCSI_ADSENSE_REC_DATA_NOECC 0x17 -#define SCSI_ADSENSE_REC_DATA_ECC 0x18 - -/* Additional sense code qualifier */ - -#define SCSI_SENSEQ_FORMAT_IN_PROGRESS 0x04 -#define SCSI_SENSEQ_INIT_COMMAND_REQUIRED 0x02 -#define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED 0x03 -#define SCSI_SENSEQ_BECOMING_READY 0x01 -#define SCSI_SENSEQ_FILEMARK_DETECTED 0x01 -#define SCSI_SENSEQ_SETMARK_DETECTED 0x03 -#define SCSI_SENSEQ_END_OF_MEDIA_DETECTED 0x02 -#define SCSI_SENSEQ_BEGINNING_OF_MEDIA_DETECTED 0x04 - -/* SCSI IO Device Control Codes */ - -#define FILE_DEVICE_SCSI 0x0000001b - -#define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011) -#define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012) -#define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013) - -/* SMART support in atapi */ - -#define IOCTL_SCSI_MINIPORT_SMART_VERSION ((FILE_DEVICE_SCSI << 16) + 0x0500) -#define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501) -#define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS ((FILE_DEVICE_SCSI << 16) + 0x0502) -#define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS ((FILE_DEVICE_SCSI << 16) + 0x0503) -#define IOCTL_SCSI_MINIPORT_ENABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0504) -#define IOCTL_SCSI_MINIPORT_DISABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0505) -#define IOCTL_SCSI_MINIPORT_RETURN_STATUS ((FILE_DEVICE_SCSI << 16) + 0x0506) -#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE ((FILE_DEVICE_SCSI << 16) + 0x0507) -#define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES ((FILE_DEVICE_SCSI << 16) + 0x0508) -#define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS ((FILE_DEVICE_SCSI << 16) + 0x0509) - - -/* Read Capacity Data - returned in Big Endian format */ - -typedef struct _READ_CAPACITY_DATA -{ - ULONG LogicalBlockAddress; - ULONG BytesPerBlock; -} READ_CAPACITY_DATA, *PREAD_CAPACITY_DATA; - - -// -// Read Block Limits Data - returned in Big Endian format -// This structure returns the maximum and minimum block -// size for a TAPE device. -// - -typedef struct _READ_BLOCK_LIMITS -{ - UCHAR Reserved; - UCHAR BlockMaximumSize[3]; - UCHAR BlockMinimumSize[2]; -} READ_BLOCK_LIMITS_DATA, *PREAD_BLOCK_LIMITS_DATA; - - -// -// Mode data structures. -// - -// -// Define Mode parameter header. -// - -typedef struct _MODE_PARAMETER_HEADER -{ - UCHAR ModeDataLength; - UCHAR MediumType; - UCHAR DeviceSpecificParameter; - UCHAR BlockDescriptorLength; -}MODE_PARAMETER_HEADER, *PMODE_PARAMETER_HEADER; - -typedef struct _MODE_PARAMETER_HEADER10 -{ - UCHAR ModeDataLength[2]; - UCHAR MediumType; - UCHAR DeviceSpecificParameter; - UCHAR Reserved[2]; - UCHAR BlockDescriptorLength[2]; -}MODE_PARAMETER_HEADER10, *PMODE_PARAMETER_HEADER10; - -#define MODE_FD_SINGLE_SIDE 0x01 -#define MODE_FD_DOUBLE_SIDE 0x02 -#define MODE_FD_MAXIMUM_TYPE 0x1E -#define MODE_DSP_FUA_SUPPORTED 0x10 -#define MODE_DSP_WRITE_PROTECT 0x80 - -// -// Define the mode parameter block. -// - -typedef struct _MODE_PARAMETER_BLOCK -{ - UCHAR DensityCode; - UCHAR NumberOfBlocks[3]; - UCHAR Reserved; - UCHAR BlockLength[3]; -}MODE_PARAMETER_BLOCK, *PMODE_PARAMETER_BLOCK; - - -/* Define Disconnect-Reconnect page */ -typedef struct _MODE_DISCONNECT_PAGE -{ - UCHAR PageCode:6; - UCHAR Reserved:1; - UCHAR PageSavable:1; - UCHAR PageLength; - UCHAR BufferFullRatio; - UCHAR BufferEmptyRatio; - UCHAR BusInactivityLimit[2]; - UCHAR BusDisconnectTime[2]; - UCHAR BusConnectTime[2]; - UCHAR MaximumBurstSize[2]; - UCHAR DataTransferDisconnect:2; - UCHAR Reserved2[3]; -}MODE_DISCONNECT_PAGE, *PMODE_DISCONNECT_PAGE; - -// -// Define mode caching page. -// - -typedef struct _MODE_CACHING_PAGE -{ - UCHAR PageCode:6; - UCHAR Reserved:1; - UCHAR PageSavable:1; - UCHAR PageLength; - UCHAR ReadDisableCache:1; - UCHAR MultiplicationFactor:1; - UCHAR WriteCacheEnable:1; - UCHAR Reserved2:5; - UCHAR WriteRetensionPriority:4; - UCHAR ReadRetensionPriority:4; - UCHAR DisablePrefetchTransfer[2]; - UCHAR MinimumPrefetch[2]; - UCHAR MaximumPrefetch[2]; - UCHAR MaximumPrefetchCeiling[2]; -}MODE_CACHING_PAGE, *PMODE_CACHING_PAGE; - -// -// Define mode flexible disk page. -// - -typedef struct _MODE_FLEXIBLE_DISK_PAGE -{ - UCHAR PageCode:6; - UCHAR Reserved:1; - UCHAR PageSavable:1; - UCHAR PageLength; - UCHAR TransferRate[2]; - UCHAR NumberOfHeads; - UCHAR SectorsPerTrack; - UCHAR BytesPerSector[2]; - UCHAR NumberOfCylinders[2]; - UCHAR StartWritePrecom[2]; - UCHAR StartReducedCurrent[2]; - UCHAR StepRate[2]; - UCHAR StepPluseWidth; - UCHAR HeadSettleDelay[2]; - UCHAR MotorOnDelay; - UCHAR MotorOffDelay; - UCHAR Reserved2:5; - UCHAR MotorOnAsserted:1; - UCHAR StartSectorNumber:1; - UCHAR TrueReadySignal:1; - UCHAR StepPlusePerCyclynder:4; - UCHAR Reserved3:4; - UCHAR WriteCompenstation; - UCHAR HeadLoadDelay; - UCHAR HeadUnloadDelay; - UCHAR Pin2Usage:4; - UCHAR Pin34Usage:4; - UCHAR Pin1Usage:4; - UCHAR Pin4Usage:4; - UCHAR MediumRotationRate[2]; - UCHAR Reserved4[2]; -}MODE_FLEXIBLE_DISK_PAGE, *PMODE_FLEXIBLE_DISK_PAGE; - -// -// Define mode format page. -// - -typedef struct _MODE_FORMAT_PAGE -{ - UCHAR PageCode:6; - UCHAR Reserved:1; - UCHAR PageSavable:1; - UCHAR PageLength; - UCHAR TracksPerZone[2]; - UCHAR AlternateSectorsPerZone[2]; - UCHAR AlternateTracksPerZone[2]; - UCHAR AlternateTracksPerLogicalUnit[2]; - UCHAR SectorsPerTrack[2]; - UCHAR BytesPerPhysicalSector[2]; - UCHAR Interleave[2]; - UCHAR TrackSkewFactor[2]; - UCHAR CylinderSkewFactor[2]; - UCHAR Reserved2:4; - UCHAR SurfaceFirst:1; - UCHAR RemovableMedia:1; - UCHAR HardSectorFormating:1; - UCHAR SoftSectorFormating:1; - UCHAR Reserved3[2]; -}MODE_FORMAT_PAGE, *PMODE_FORMAT_PAGE; - -// -// Define rigid disk driver geometry page. -// - -typedef struct _MODE_RIGID_GEOMETRY_PAGE -{ - UCHAR PageCode:6; - UCHAR Reserved:1; - UCHAR PageSavable:1; - UCHAR PageLength; - UCHAR NumberOfCylinders[2]; - UCHAR NumberOfHeads; - UCHAR StartWritePrecom[2]; - UCHAR StartReducedCurrent[2]; - UCHAR DriveStepRate[2]; - UCHAR LandZoneCyclinder[2]; - UCHAR RotationalPositionLock:2; - UCHAR Reserved2:6; - UCHAR RotationOffset; - UCHAR Reserved3; - UCHAR RoataionRate[2]; - UCHAR Reserved4[2]; -}MODE_RIGID_GEOMETRY_PAGE, *PMODE_RIGID_GEOMETRY_PAGE; - -// -// Define read write recovery page -// - -typedef struct _MODE_READ_WRITE_RECOVERY_PAGE -{ - UCHAR PageCode:6; - UCHAR Reserved1:1; - UCHAR PSBit:1; - UCHAR PageLength; - UCHAR DCRBit:1; - UCHAR DTEBit:1; - UCHAR PERBit:1; - UCHAR EERBit:1; - UCHAR RCBit:1; - UCHAR TBBit:1; - UCHAR ARRE:1; - UCHAR AWRE:1; - UCHAR ReadRetryCount; - UCHAR Reserved4[4]; - UCHAR WriteRetryCount; - UCHAR Reserved5[3]; -} MODE_READ_WRITE_RECOVERY_PAGE, *PMODE_READ_WRITE_RECOVERY_PAGE; - -// -// Define read recovery page - cdrom -// - -typedef struct _MODE_READ_RECOVERY_PAGE -{ - UCHAR PageCode:6; - UCHAR Reserved1:1; - UCHAR PSBit:1; - UCHAR PageLength; - UCHAR DCRBit:1; - UCHAR DTEBit:1; - UCHAR PERBit:1; - UCHAR Reserved2:1; - UCHAR RCBit:1; - UCHAR TBBit:1; - UCHAR Reserved3:2; - UCHAR ReadRetryCount; - UCHAR Reserved4[4]; -} MODE_READ_RECOVERY_PAGE, *PMODE_READ_RECOVERY_PAGE; - -// -// Define CD-ROM Capabilities and Mechanical Status Page. -// - -typedef struct _MODE_CAPABILITIES_PAGE2 -{ - UCHAR PageCode:6; - UCHAR Reserved1:1; - UCHAR PSBit:1; - UCHAR PageLength; - UCHAR Reserved2[2]; - UCHAR Capabilities[4]; - UCHAR MaximumSpeedSupported[2]; - UCHAR Reserved3; - UCHAR NumberVolumeLevels; - UCHAR BufferSize[2]; - UCHAR CurrentSpeed[2]; - UCHAR Reserved4; - UCHAR Reserved5:1; - UCHAR DigitalOutput:4; - UCHAR Reserved6:3; - UCHAR Reserved7[2]; -} MODE_CAPABILITIES_PAGE2, *PMODE_CAPABILITIES_PAGE2; - -// -// Bit definitions of Capabilites and DigitalOutput -// - -#define AUDIO_PLAY_SUPPORTED 0x01 -#define MODE2_FORM1_SUPPORTED 0x10 -#define MODE2_FORM2_SUPPORTED 0x20 -#define MULTI_SESSION_SUPPORTED 0x40 - -#define READ_CD_SUPPORTED 0x01 - -#define MEDIA_LOCKING_SUPPORTED 0x01 -#define CURRENT_LOCK_STATE 0x02 -#define SOFTWARE_EJECT_SUPPORT 0x08 - -#define DISC_PRESENT_REPORTING 0x04 - -// -// Mode parameter list block descriptor - -// set the block length for reading/writing -// -// - -#define MODE_BLOCK_DESC_LENGTH 8 -#define MODE_HEADER_LENGTH 4 -#define MODE_HEADER_LENGTH10 8 - -typedef struct _MODE_PARM_READ_WRITE -{ - MODE_PARAMETER_HEADER ParameterListHeader; /* List Header Format */ - MODE_PARAMETER_BLOCK ParameterListBlock; /* List Block Descriptor */ -} MODE_PARM_READ_WRITE_DATA, *PMODE_PARM_READ_WRITE_DATA; - - -// -// CDROM audio control (0x0E) -// - -#define CDB_AUDIO_PAUSE 0 -#define CDB_AUDIO_RESUME 1 - -#define CDB_DEVICE_START 0x11 -#define CDB_DEVICE_STOP 0x10 - -#define CDB_EJECT_MEDIA 0x10 -#define CDB_LOAD_MEDIA 0x01 - -#define CDB_SUBCHANNEL_HEADER 0x00 -#define CDB_SUBCHANNEL_BLOCK 0x01 - -#define CDROM_AUDIO_CONTROL_PAGE 0x0E -#define MODE_SELECT_IMMEDIATE 0x04 -#define MODE_SELECT_PFBIT 0x10 - -#define CDB_USE_MSF 0x01 - -typedef struct _PORT_OUTPUT -{ - UCHAR ChannelSelection; - UCHAR Volume; -} PORT_OUTPUT, *PPORT_OUTPUT; - -typedef struct _AUDIO_OUTPUT -{ - UCHAR CodePage; - UCHAR ParameterLength; - UCHAR Immediate; - UCHAR Reserved[2]; - UCHAR LbaFormat; - UCHAR LogicalBlocksPerSecond[2]; - PORT_OUTPUT PortOutput[4]; -} AUDIO_OUTPUT, *PAUDIO_OUTPUT; - - -/* Multisession CDROM */ - -#define GET_LAST_SESSION 0x01 -#define GET_SESSION_DATA 0x02; - - -/* Atapi 2.5 changer */ - -typedef struct _MECHANICAL_STATUS_INFORMATION_HEADER -{ - UCHAR CurrentSlot:5; - UCHAR ChangerState:2; - UCHAR Fault:1; - UCHAR Reserved:5; - UCHAR MechanismState:3; - UCHAR CurrentLogicalBlockAddress[3]; - UCHAR NumberAvailableSlots; - UCHAR SlotTableLength[2]; -} MECHANICAL_STATUS_INFORMATION_HEADER, *PMECHANICAL_STATUS_INFORMATION_HEADER; - -typedef struct _SLOT_TABLE_INFORMATION -{ - UCHAR DiscChanged:1; - UCHAR Reserved:6; - UCHAR DiscPresent:1; - UCHAR Reserved2[3]; -} SLOT_TABLE_INFORMATION, *PSLOT_TABLE_INFORMATION; - -typedef struct _MECHANICAL_STATUS -{ - MECHANICAL_STATUS_INFORMATION_HEADER MechanicalStatusHeader; - SLOT_TABLE_INFORMATION SlotTableInfo[1]; -} MECHANICAL_STATUS, *PMECHANICAL_STATUS; - - -/* Tape definitions */ - -typedef struct _TAPE_POSITION_DATA -{ - UCHAR Reserved1:2; - UCHAR BlockPositionUnsupported:1; - UCHAR Reserved2:3; - UCHAR EndOfPartition:1; - UCHAR BeginningOfPartition:1; - UCHAR PartitionNumber; - USHORT Reserved3; - UCHAR FirstBlock[4]; - UCHAR LastBlock[4]; - UCHAR Reserved4; - UCHAR NumberOfBlocks[3]; - UCHAR NumberOfBytes[4]; -} TAPE_POSITION_DATA, *PTAPE_POSITION_DATA; - -/* - * This structure is used to convert little endian - * ULONGs to SCSI CDB 4 byte big endians values. - */ - -typedef struct _FOUR_BYTE -{ - UCHAR Byte0; - UCHAR Byte1; - UCHAR Byte2; - UCHAR Byte3; -} FOUR_BYTE, *PFOUR_BYTE; - -/* - * Byte reversing macro for converting - * between big- and little-endian formats - */ - -#define REVERSE_BYTES(Destination, Source) \ -{ \ - PFOUR_BYTE d = (PFOUR_BYTE)(Destination); \ - PFOUR_BYTE s = (PFOUR_BYTE)(Source); \ - d->Byte3 = s->Byte0; \ - d->Byte2 = s->Byte1; \ - d->Byte1 = s->Byte2; \ - d->Byte0 = s->Byte3; \ -} - - -/* This macro has the effect of Bit = log2(Data) */ - -#define WHICH_BIT(Data, Bit) \ -{ \ - for (Bit = 0; Bit < 32; Bit++) \ - { \ - if ((Data >> Bit) == 1) \ - { \ - break; \ - } \ - } \ -} - - -#endif /* __STORAGE_INCLUDE_SCSI_H */ - -/* EOF */ diff --git a/reactos/include/ddk/srb.h b/reactos/include/ddk/srb.h deleted file mode 100644 index 346cb85d009..00000000000 --- a/reactos/include/ddk/srb.h +++ /dev/null @@ -1,679 +0,0 @@ -/* $Id$ - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: services/storage/include/srb.c - * PURPOSE: SCSI port driver definitions - * PROGRAMMER: Eric Kohl (ekohl@rz-online.de) - */ - -#ifndef __STORAGE_INCLUDE_SRB_H -#define __STORAGE_INCLUDE_SRB_H - -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#pragma pack(push,4) - -#include "ntddk.h" - -#if defined(_SCSIPORT_) - #define SCSIPORTAPI -#else - #define SCSIPORTAPI -#endif - -#define DDKAPI STDCALL - -/* Obsolete. For backward compatibility only. */ - -typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS; - -#define SP_UNINITIALIZED_VALUE ((ULONG) ~0) -#define SP_UNTAGGED ((ULONG) ~0) - -#define SRB_SIMPLE_TAG_REQUEST 0x20 -#define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21 -#define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22 - -/* SRB Status Masks */ - -#define SRB_STATUS_QUEUE_FROZEN 0x40 -#define SRB_STATUS_AUTOSENSE_VALID 0x80 - -#define SRB_STATUS(Status) \ - (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN)) - -#define MAXIMUM_CDB_SIZE 12 - -/* Define SCSI maximum configuration parameters. */ - -#define SCSI_MAXIMUM_LOGICAL_UNITS 8 -#define SCSI_MAXIMUM_TARGETS_PER_BUS 32 -#define SCSI_MAXIMUM_BUSES 8 -#define SCSI_MINIMUM_PHYSICAL_BREAKS 16 -#define SCSI_MAXIMUM_PHYSICAL_BREAKS 255 -#define SCSI_MAXIMUM_TARGETS 8 - - - -/* Port driver error codes */ - -#define SP_BUS_PARITY_ERROR 0x0001 -#define SP_UNEXPECTED_DISCONNECT 0x0002 -#define SP_INVALID_RESELECTION 0x0003 -#define SP_BUS_TIME_OUT 0x0004 -#define SP_PROTOCOL_ERROR 0x0005 -#define SP_INTERNAL_ADAPTER_ERROR 0x0006 -#define SP_REQUEST_TIMEOUT 0x0007 -#define SP_IRQ_NOT_RESPONDING 0x0008 -#define SP_BAD_FW_WARNING 0x0009 -#define SP_BAD_FW_ERROR 0x000a - -/* SCSI_REQUEST_BLOCK.Function constants */ -#define SRB_FUNCTION_EXECUTE_SCSI 0x00 -#define SRB_FUNCTION_CLAIM_DEVICE 0x01 -#define SRB_FUNCTION_IO_CONTROL 0x02 -#define SRB_FUNCTION_RECEIVE_EVENT 0x03 -#define SRB_FUNCTION_RELEASE_QUEUE 0x04 -#define SRB_FUNCTION_ATTACH_DEVICE 0x05 -#define SRB_FUNCTION_RELEASE_DEVICE 0x06 -#define SRB_FUNCTION_SHUTDOWN 0x07 -#define SRB_FUNCTION_FLUSH 0x08 -#define SRB_FUNCTION_ABORT_COMMAND 0x10 -#define SRB_FUNCTION_RELEASE_RECOVERY 0x11 -#define SRB_FUNCTION_RESET_BUS 0x12 -#define SRB_FUNCTION_RESET_DEVICE 0x13 -#define SRB_FUNCTION_TERMINATE_IO 0x14 -#define SRB_FUNCTION_FLUSH_QUEUE 0x15 -#define SRB_FUNCTION_REMOVE_DEVICE 0x16 - -/* SCSI_REQUEST_BLOCK.SrbStatus constants */ -#define SRB_STATUS_PENDING 0x00 -#define SRB_STATUS_SUCCESS 0x01 -#define SRB_STATUS_ABORTED 0x02 -#define SRB_STATUS_ABORT_FAILED 0x03 -#define SRB_STATUS_ERROR 0x04 -#define SRB_STATUS_BUSY 0x05 -#define SRB_STATUS_INVALID_REQUEST 0x06 -#define SRB_STATUS_INVALID_PATH_ID 0x07 -#define SRB_STATUS_NO_DEVICE 0x08 -#define SRB_STATUS_TIMEOUT 0x09 -#define SRB_STATUS_SELECTION_TIMEOUT 0x0A -#define SRB_STATUS_COMMAND_TIMEOUT 0x0B -#define SRB_STATUS_MESSAGE_REJECTED 0x0D -#define SRB_STATUS_BUS_RESET 0x0E -#define SRB_STATUS_PARITY_ERROR 0x0F -#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10 -#define SRB_STATUS_NO_HBA 0x11 -#define SRB_STATUS_DATA_OVERRUN 0x12 -#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13 -#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14 -#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15 -#define SRB_STATUS_REQUEST_FLUSHED 0x16 -#define SRB_STATUS_INVALID_LUN 0x20 -#define SRB_STATUS_INVALID_TARGET_ID 0x21 -#define SRB_STATUS_BAD_FUNCTION 0x22 -#define SRB_STATUS_ERROR_RECOVERY 0x23 - -/* SCSI_REQUEST_BLOCK.SrbFlags constants */ -#define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002 -#define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004 -#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008 -#define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010 -#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020 -#define SRB_FLAGS_DATA_IN 0x00000040 -#define SRB_FLAGS_DATA_OUT 0x00000080 -#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000 -#define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT) -#define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100 -#define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200 -#define SRB_FLAGS_IS_ACTIVE 0x00010000 -#define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000 -#define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000 - -typedef struct _SCSI_REQUEST_BLOCK { - USHORT Length; /* 0x00 */ - UCHAR Function; /* 0x02 */ - UCHAR SrbStatus; /* 0x03 */ - UCHAR ScsiStatus; /* 0x04 */ - UCHAR PathId; /* 0x05 */ - UCHAR TargetId; /* 0x06 */ - UCHAR Lun; /* 0x07 */ - UCHAR QueueTag; /* 0x08 */ - UCHAR QueueAction; /* 0x09 */ - UCHAR CdbLength; /* 0x0A */ - UCHAR SenseInfoBufferLength; /* 0x0B */ - ULONG SrbFlags; /* 0x0C */ - ULONG DataTransferLength; /* 0x10 */ - ULONG TimeOutValue; /* 0x14 */ - PVOID DataBuffer; /* 0x18 */ - PVOID SenseInfoBuffer; /* 0x1C */ - struct _SCSI_REQUEST_BLOCK *NextSrb; /* 0x20 */ - PVOID OriginalRequest; /* 0x24 */ - PVOID SrbExtension; /* 0x28 */ - ULONG QueueSortKey; /* 0x2C */ - UCHAR Cdb[16]; /* 0x30 */ -} SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK; - -#define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK) - -typedef struct _ACCESS_RANGE { - SCSI_PHYSICAL_ADDRESS RangeStart; - ULONG RangeLength; - BOOLEAN RangeInMemory; -}ACCESS_RANGE, *PACCESS_RANGE; - - -typedef struct _PORT_CONFIGURATION_INFORMATION { - ULONG Length; - ULONG SystemIoBusNumber; - INTERFACE_TYPE AdapterInterfaceType; - ULONG BusInterruptLevel; - ULONG BusInterruptVector; - KINTERRUPT_MODE InterruptMode; - ULONG MaximumTransferLength; - ULONG NumberOfPhysicalBreaks; - ULONG DmaChannel; - ULONG DmaPort; - DMA_WIDTH DmaWidth; - DMA_SPEED DmaSpeed; - ULONG AlignmentMask; - ULONG NumberOfAccessRanges; -#ifdef __GNUC__ - ACCESS_RANGE *AccessRanges; -#else - ACCESS_RANGE (*AccessRanges)[]; -#endif - PVOID Reserved; - UCHAR NumberOfBuses; - CCHAR InitiatorBusId[8]; - BOOLEAN ScatterGather; - BOOLEAN Master; - BOOLEAN CachesData; - BOOLEAN AdapterScansDown; - BOOLEAN AtdiskPrimaryClaimed; - BOOLEAN AtdiskSecondaryClaimed; - BOOLEAN Dma32BitAddresses; - BOOLEAN DemandMode; - BOOLEAN MapBuffers; - BOOLEAN NeedPhysicalAddresses; - BOOLEAN TaggedQueuing; - BOOLEAN AutoRequestSense; - BOOLEAN MultipleRequestPerLu; - BOOLEAN ReceiveEvent; - BOOLEAN RealModeInitialized; - BOOLEAN BufferAccessScsiPortControlled; - UCHAR MaximumNumberOfTargets; - UCHAR ReservedUchars[2]; - ULONG SlotNumber; - ULONG BusInterruptLevel2; - ULONG BusInterruptVector2; - KINTERRUPT_MODE InterruptMode2; - ULONG DmaChannel2; - ULONG DmaPort2; - DMA_WIDTH DmaWidth2; - DMA_SPEED DmaSpeed2; - ULONG DeviceExtensionSize; - ULONG SpecificLuExtensionSize; - ULONG SrbExtensionSize; -} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION; - -#define CONFIG_INFO_VERSION_2 sizeof(PORT_CONFIGURATION_INFORMATION) - -typedef enum _SCSI_NOTIFICATION_TYPE { - RequestComplete, - NextRequest, - NextLuRequest, - ResetDetected, - CallDisableInterrupts, - CallEnableInterrupts, - RequestTimerCall -} SCSI_NOTIFICATION_TYPE, *PSCSI_NOTIFICATION_TYPE; - - -typedef BOOLEAN DDKAPI -(*PHW_ADAPTER_STATE)( - IN PVOID DeviceExtension, - IN PVOID Context, - IN BOOLEAN SaveState); - -/* Return values for SCSI_HW_FIND_ADAPTER. */ - -#define SP_RETURN_NOT_FOUND 0 -#define SP_RETURN_FOUND 1 -#define SP_RETURN_ERROR 2 -#define SP_RETURN_BAD_CONFIG 3 - -typedef ULONG DDKAPI -(*PHW_FIND_ADAPTER)( - IN PVOID DeviceExtension, - IN PVOID HwContext, - IN PVOID BusInformation, - IN PCHAR ArgumentString, - IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, - OUT PBOOLEAN Again); - -typedef BOOLEAN DDKAPI -(*PHW_INITIALIZE)( - IN PVOID DeviceExtension); - -typedef BOOLEAN DDKAPI -(*PHW_INTERRUPT)( - IN PVOID DeviceExtension); - -typedef BOOLEAN DDKAPI -(*PHW_RESET_BUS)( - IN PVOID DeviceExtension, - IN ULONG PathId); - -typedef VOID DDKAPI -(*PHW_DMA_STARTED)( - IN PVOID DeviceExtension); - -typedef BOOLEAN DDKAPI -(*PHW_STARTIO)( - IN PVOID DeviceExtension, - IN PSCSI_REQUEST_BLOCK Srb); - -typedef VOID DDKAPI -(*PHW_TIMER)( - IN PVOID DeviceExtension); - -typedef struct _HW_INITIALIZATION_DATA { - ULONG HwInitializationDataSize; - INTERFACE_TYPE AdapterInterfaceType; - PHW_INITIALIZE HwInitialize; - PHW_STARTIO HwStartIo; - PHW_INTERRUPT HwInterrupt; - PHW_FIND_ADAPTER HwFindAdapter; - PHW_RESET_BUS HwResetBus; - PHW_DMA_STARTED HwDmaStarted; - PHW_ADAPTER_STATE HwAdapterState; - ULONG DeviceExtensionSize; - ULONG SpecificLuExtensionSize; - ULONG SrbExtensionSize; - ULONG NumberOfAccessRanges; - PVOID Reserved; - BOOLEAN MapBuffers; - BOOLEAN NeedPhysicalAddresses; -// BOOLEAN TaggedQueuing; - BOOLEAN TaggedQueueing; - BOOLEAN AutoRequestSense; - BOOLEAN MultipleRequestPerLu; - BOOLEAN ReceiveEvent; - USHORT VendorIdLength; - PVOID VendorId; - USHORT ReservedUshort; - USHORT DeviceIdLength; - PVOID DeviceId; -} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA; - - -/* FUNCTIONS ****************************************************************/ - -VOID -DDKAPI -ScsiPortCompleteRequest( - IN PVOID HwDeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun, - IN UCHAR SrbStatus); - -ULONG -DDKAPI -ScsiPortConvertPhysicalAddressToUlong( - IN SCSI_PHYSICAL_ADDRESS Address); - -SCSIPORTAPI -SCSI_PHYSICAL_ADDRESS -DDKAPI -ScsiPortConvertUlongToPhysicalAddress( - IN ULONG UlongAddress); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortFlushDma( - IN PVOID HwDeviceExtension); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortFreeDeviceBase( - IN PVOID HwDeviceExtension, - IN PVOID MappedAddress); - -SCSIPORTAPI -ULONG -DDKAPI -ScsiPortGetBusData( - IN PVOID DeviceExtension, - IN ULONG BusDataType, - IN ULONG SystemIoBusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Length); - -SCSIPORTAPI -PVOID -DDKAPI -ScsiPortGetDeviceBase( - IN PVOID HwDeviceExtension, - IN INTERFACE_TYPE BusType, - IN ULONG SystemIoBusNumber, - IN SCSI_PHYSICAL_ADDRESS IoAddress, - IN ULONG NumberOfBytes, - IN BOOLEAN InIoSpace); - -SCSIPORTAPI -PVOID -DDKAPI -ScsiPortGetLogicalUnit( - IN PVOID HwDeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun); - -SCSIPORTAPI -SCSI_PHYSICAL_ADDRESS -DDKAPI -ScsiPortGetPhysicalAddress( - IN PVOID HwDeviceExtension, - IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, - IN PVOID VirtualAddress, - OUT PULONG Length); - -SCSIPORTAPI -PSCSI_REQUEST_BLOCK -DDKAPI -ScsiPortGetSrb( - IN PVOID DeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun, - IN LONG QueueTag); - -SCSIPORTAPI -PVOID -DDKAPI -ScsiPortGetUncachedExtension( - IN PVOID HwDeviceExtension, - IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, - IN ULONG NumberOfBytes); - -SCSIPORTAPI -PVOID -DDKAPI -ScsiPortGetVirtualAddress( - IN PVOID HwDeviceExtension, - IN SCSI_PHYSICAL_ADDRESS PhysicalAddress); - -SCSIPORTAPI -ULONG -DDKAPI -ScsiPortInitialize( - IN PVOID Argument1, - IN PVOID Argument2, - IN struct _HW_INITIALIZATION_DATA *HwInitializationData, - IN PVOID HwContext); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortIoMapTransfer( - IN PVOID HwDeviceExtension, - IN PSCSI_REQUEST_BLOCK Srb, - IN ULONG LogicalAddress, - IN ULONG Length); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortLogError( - IN PVOID HwDeviceExtension, - IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun, - IN ULONG ErrorCode, - IN ULONG UniqueId); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortMoveMemory( - OUT PVOID Destination, - IN PVOID Source, - IN ULONG Length); - -SCSIPORTAPI -VOID -ScsiPortNotification( - IN SCSI_NOTIFICATION_TYPE NotificationType, - IN PVOID HwDeviceExtension, - ...); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortReadPortBufferUchar( - IN PUCHAR Port, - IN PUCHAR Value, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortReadPortBufferUlong( - IN PULONG Port, - IN PULONG Value, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortReadPortBufferUshort( - IN PUSHORT Port, - IN PUSHORT Value, - IN ULONG Count); - -SCSIPORTAPI -UCHAR -DDKAPI -ScsiPortReadPortUchar( - IN PUCHAR Port); - -SCSIPORTAPI -ULONG -DDKAPI -ScsiPortReadPortUlong( - IN PULONG Port); - -SCSIPORTAPI -USHORT -DDKAPI -ScsiPortReadPortUshort( - IN PUSHORT Port); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortReadRegisterBufferUchar( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortReadRegisterBufferUlong( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortReadRegisterBufferUshort( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count); - -SCSIPORTAPI -UCHAR -DDKAPI -ScsiPortReadRegisterUchar( - IN PUCHAR Register); - -SCSIPORTAPI -ULONG -DDKAPI -ScsiPortReadRegisterUlong( - IN PULONG Register); - -SCSIPORTAPI -USHORT -DDKAPI -ScsiPortReadRegisterUshort( - IN PUSHORT Register); - -SCSIPORTAPI -ULONG -DDKAPI -ScsiPortSetBusDataByOffset( - IN PVOID DeviceExtension, - IN ULONG BusDataType, - IN ULONG SystemIoBusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortStallExecution( - IN ULONG MicroSeconds); - -SCSIPORTAPI -BOOLEAN -DDKAPI -ScsiPortValidateRange( - IN PVOID HwDeviceExtension, - IN INTERFACE_TYPE BusType, - IN ULONG SystemIoBusNumber, - IN SCSI_PHYSICAL_ADDRESS IoAddress, - IN ULONG NumberOfBytes, - IN BOOLEAN InIoSpace); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWritePortBufferUchar( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWritePortBufferUlong( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWritePortBufferUshort( - IN PUSHORT Port, - IN PUSHORT Value, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWritePortUchar( - IN PUCHAR Port, - IN UCHAR Value); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWritePortUlong( - IN PULONG Port, - IN ULONG Value); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWritePortUshort( - IN PUSHORT Port, - IN USHORT Value); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWriteRegisterBufferUchar( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWriteRegisterBufferUlong( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWriteRegisterBufferUshort( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWriteRegisterUchar( - IN PUCHAR Register, - IN ULONG Value); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWriteRegisterUlong( - IN PULONG Register, - IN ULONG Value); - -SCSIPORTAPI -VOID -DDKAPI -ScsiPortWriteRegisterUshort( - IN PUSHORT Register, - IN USHORT Value); - -SCSIPORTAPI -VOID -ScsiDebugPrint( - IN ULONG DebugPrintLevel, - IN PCHAR DebugMessage, - IN ...); - -#pragma pack(pop) - -#ifdef __cplusplus -} -#endif - -#endif /* __STORAGE_INCLUDE_SRB_H */