mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 09:50:07 +00:00
Added scsiport driver skeleton.
svn path=/trunk/; revision=2077
This commit is contained in:
parent
75d57b4fa1
commit
b8ec1f6a56
355
reactos/drivers/storage/include/srb.h
Normal file
355
reactos/drivers/storage/include/srb.h
Normal file
|
@ -0,0 +1,355 @@
|
||||||
|
/* $Id: srb.h,v 1.1 2001/07/21 07:29:53 ekohl Exp $
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS;
|
||||||
|
|
||||||
|
|
||||||
|
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;
|
||||||
|
ACCESS_RANGE (*AccessRanges)[];
|
||||||
|
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 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 enum _SCSI_NOTIFICATION_TYPE
|
||||||
|
{
|
||||||
|
RequestComplete,
|
||||||
|
NextRequest,
|
||||||
|
NextLuRequest,
|
||||||
|
ResetDetected,
|
||||||
|
CallDisableInterrupts,
|
||||||
|
CallEnableInterrupts,
|
||||||
|
RequestTimerCall
|
||||||
|
} SCSI_NOTIFICATION_TYPE, *PSCSI_NOTIFICATION_TYPE;
|
||||||
|
|
||||||
|
|
||||||
|
typedef BOOLEAN STDCALL
|
||||||
|
(*PHW_INITIALIZE)(IN PVOID DeviceExtension);
|
||||||
|
|
||||||
|
typedef BOOLEAN STDCALL
|
||||||
|
(*PHW_STARTIO)(IN PVOID DeviceExtension,
|
||||||
|
IN PSCSI_REQUEST_BLOCK Srb);
|
||||||
|
|
||||||
|
typedef BOOLEAN STDCALL
|
||||||
|
(*PHW_INTERRUPT)(IN PVOID DeviceExtension);
|
||||||
|
|
||||||
|
typedef VOID STDCALL
|
||||||
|
(*PHW_TIMER)(IN PVOID DeviceExtension);
|
||||||
|
|
||||||
|
typedef VOID STDCALL
|
||||||
|
(*PHW_DMA_STARTED)(IN PVOID DeviceExtension);
|
||||||
|
|
||||||
|
typedef ULONG STDCALL
|
||||||
|
(*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 STDCALL
|
||||||
|
(*PHW_RESET_BUS)(IN PVOID DeviceExtension,
|
||||||
|
IN ULONG PathId);
|
||||||
|
|
||||||
|
typedef BOOLEAN STDCALL
|
||||||
|
(*PHW_ADAPTER_STATE)(IN PVOID DeviceExtension,
|
||||||
|
IN PVOID Context,
|
||||||
|
IN BOOLEAN SaveState);
|
||||||
|
|
||||||
|
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 AutoRequestSense;
|
||||||
|
BOOLEAN MultipleRequestPerLu;
|
||||||
|
BOOLEAN ReceiveEvent;
|
||||||
|
USHORT VendorIdLength;
|
||||||
|
PVOID VendorId;
|
||||||
|
USHORT ReservedUshort;
|
||||||
|
USHORT DeviceIdLength;
|
||||||
|
PVOID DeviceId;
|
||||||
|
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;
|
||||||
|
|
||||||
|
|
||||||
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
||||||
|
VOID
|
||||||
|
ScsiDebugPrint (
|
||||||
|
IN ULONG DebugPrintLevel,
|
||||||
|
IN PCHAR DebugMessage,
|
||||||
|
...
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortCompleteRequest (
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
IN UCHAR PathId,
|
||||||
|
IN UCHAR TargetId,
|
||||||
|
IN UCHAR Lun,
|
||||||
|
IN UCHAR SrbStatus
|
||||||
|
);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
STDCALL
|
||||||
|
ScsiPortConvertPhysicalAddressToUlong (
|
||||||
|
IN SCSI_PHYSICAL_ADDRESS Address
|
||||||
|
);
|
||||||
|
|
||||||
|
SCSI_PHYSICAL_ADDRESS
|
||||||
|
STDCALL
|
||||||
|
ScsiPortConvertUlongToPhysicalAddress (
|
||||||
|
IN ULONG UlongAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortFlushDma (
|
||||||
|
IN PVOID HwDeviceExtension
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortFreeDeviceBase (
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
IN PVOID MappedAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
STDCALL
|
||||||
|
ScsiPortGetBusData (
|
||||||
|
IN PVOID DeviceExtension,
|
||||||
|
IN ULONG BusDataType,
|
||||||
|
IN ULONG SystemIoBusNumber,
|
||||||
|
IN ULONG SlotNumber,
|
||||||
|
IN PVOID Buffer,
|
||||||
|
IN ULONG Length
|
||||||
|
);
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortGetDeviceBase (
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
IN INTERFACE_TYPE BusType,
|
||||||
|
IN ULONG SystemIoBusNumber,
|
||||||
|
IN SCSI_PHYSICAL_ADDRESS IoAddress,
|
||||||
|
IN ULONG NumberOfBytes,
|
||||||
|
IN BOOLEAN InIoSpace
|
||||||
|
);
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortGetLogicalUnit (
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
IN UCHAR PathId,
|
||||||
|
IN UCHAR TargetId,
|
||||||
|
IN UCHAR Lun
|
||||||
|
);
|
||||||
|
|
||||||
|
SCSI_PHYSICAL_ADDRESS
|
||||||
|
STDCALL
|
||||||
|
ScsiPortGetPhysicalAddress (
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
||||||
|
IN PVOID VirtualAddress,
|
||||||
|
OUT PULONG Length
|
||||||
|
);
|
||||||
|
|
||||||
|
PSCSI_REQUEST_BLOCK
|
||||||
|
STDCALL
|
||||||
|
ScsiPortGetSrb (
|
||||||
|
IN PVOID DeviceExtension,
|
||||||
|
IN UCHAR PathId,
|
||||||
|
IN UCHAR TargetId,
|
||||||
|
IN UCHAR Lun,
|
||||||
|
IN LONG QueueTag
|
||||||
|
);
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortGetUncachedExtension (
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
|
||||||
|
IN ULONG NumberOfBytes
|
||||||
|
);
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortGetVirtualAddress (
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
STDCALL
|
||||||
|
ScsiPortInitialize (
|
||||||
|
IN PVOID Argument1,
|
||||||
|
IN PVOID Argument2,
|
||||||
|
IN struct _HW_INITIALIZATION_DATA *HwInitializationData,
|
||||||
|
IN PVOID HwContext
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortIoMapTransfer (
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
IN PSCSI_REQUEST_BLOCK Srb,
|
||||||
|
IN ULONG LogicalAddress,
|
||||||
|
IN ULONG Length
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
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
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
ScsiPortMoveMemory (
|
||||||
|
OUT PVOID Destination,
|
||||||
|
IN PVOID Source,
|
||||||
|
IN ULONG Length
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
ScsiPortNotification (
|
||||||
|
IN SCSI_NOTIFICATION_TYPE NotificationType,
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
...
|
||||||
|
);
|
||||||
|
|
||||||
|
UCHAR
|
||||||
|
STDCALL
|
||||||
|
ScsiPortReadPortUchar (
|
||||||
|
IN PUCHAR Port
|
||||||
|
);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
STDCALL
|
||||||
|
ScsiPortReadPortUlong (
|
||||||
|
IN PULONG Port
|
||||||
|
);
|
||||||
|
|
||||||
|
USHORT
|
||||||
|
STDCALL
|
||||||
|
ScsiPortReadPortUshort (
|
||||||
|
IN PUSHORT Port
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif /* __STORAGE_INCLUDE_SRB_H */
|
||||||
|
|
||||||
|
/* EOF */
|
39
reactos/drivers/storage/scsiport/makefile
Normal file
39
reactos/drivers/storage/scsiport/makefile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# $Id: makefile,v 1.1 2001/07/21 07:30:26 ekohl Exp $
|
||||||
|
#
|
||||||
|
#
|
||||||
|
PATH_TO_TOP = ../../..
|
||||||
|
|
||||||
|
TARGET=scsiport
|
||||||
|
|
||||||
|
OBJECTS = $(TARGET).o $(TARGET).coff
|
||||||
|
|
||||||
|
LIBS = $(PATH_TO_TOP)/ntoskrnl/ntoskrnl.a
|
||||||
|
|
||||||
|
CFLAGS = -D__NTDRIVER__ -I$(PATH_TO_TOP)/include
|
||||||
|
|
||||||
|
all: $(TARGET).sys $(TARGET).sys.unstripped $(TARGET).a
|
||||||
|
|
||||||
|
.phony: all
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- $(RM) *.o $(TARGET).a $(TARGET).coff junk.tmp base.tmp temp.exp $(TARGET).sys $(TARGET).sys.unstripped
|
||||||
|
|
||||||
|
.phony: clean
|
||||||
|
|
||||||
|
install: $(FLOPPY_DIR)/drivers/$(TARGET).sys
|
||||||
|
|
||||||
|
$(FLOPPY_DIR)/drivers/$(TARGET).sys: $(TARGET).sys
|
||||||
|
$(CP) $(TARGET).sys $(FLOPPY_DIR)/drivers/$(TARGET).sys
|
||||||
|
|
||||||
|
|
||||||
|
dist: $(PATH_TO_TOP)/$(DIST_DIR)/drivers/$(TARGET).sys
|
||||||
|
|
||||||
|
$(PATH_TO_TOP)/$(DIST_DIR)/drivers/$(TARGET).sys: $(TARGET).sys
|
||||||
|
$(CP) $(TARGET).sys $(PATH_TO_TOP)/$(DIST_DIR)/drivers/$(TARGET).sys
|
||||||
|
|
||||||
|
|
||||||
|
$(TARGET).sys $(TARGET).sys.unstripped: $(OBJECTS) $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
WARNINGS_ARE_ERRORS = yes
|
||||||
|
include $(PATH_TO_TOP)/rules.mak
|
282
reactos/drivers/storage/scsiport/scsiport.c
Normal file
282
reactos/drivers/storage/scsiport/scsiport.c
Normal file
|
@ -0,0 +1,282 @@
|
||||||
|
/* $Id: scsiport.c,v 1.1 2001/07/21 07:30:26 ekohl Exp $
|
||||||
|
*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS kernel
|
||||||
|
* FILE: services/storage/scsiport/scsiport.c
|
||||||
|
* PURPOSE: SCSI port driver
|
||||||
|
* PROGRAMMER: Eric Kohl (ekohl@rz-online.de)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ddk/ntddk.h>
|
||||||
|
#include "../include/srb.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define UNIMPLEMENTED do {DbgPrint("%s:%d: Function not implemented", __FILE__, __LINE__); for(;;);} while (0)
|
||||||
|
|
||||||
|
#define VERSION "0.0.1"
|
||||||
|
|
||||||
|
// ------------------------------------------------------- Public Interface
|
||||||
|
|
||||||
|
// DriverEntry
|
||||||
|
//
|
||||||
|
// DESCRIPTION:
|
||||||
|
// This function initializes the driver.
|
||||||
|
//
|
||||||
|
// RUN LEVEL:
|
||||||
|
// PASSIVE_LEVEL
|
||||||
|
//
|
||||||
|
// ARGUMENTS:
|
||||||
|
// IN PDRIVER_OBJECT DriverObject System allocated Driver Object
|
||||||
|
// for this driver
|
||||||
|
// IN PUNICODE_STRING RegistryPath Name of registry driver service
|
||||||
|
// key
|
||||||
|
//
|
||||||
|
// RETURNS:
|
||||||
|
// NTSTATUS
|
||||||
|
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
DriverEntry(IN PDRIVER_OBJECT DriverObject,
|
||||||
|
IN PUNICODE_STRING RegistryPath)
|
||||||
|
{
|
||||||
|
DbgPrint("ScsiPort Driver %s\n", VERSION);
|
||||||
|
return(STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
ScsiDebugPrint(IN ULONG DebugPrintLevel,
|
||||||
|
IN PCHAR DebugMessage,
|
||||||
|
...)
|
||||||
|
{
|
||||||
|
char Buffer[256];
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
if (DebugPrintLevel > InternalDebugLevel)
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
va_start(ap, DebugMessage);
|
||||||
|
vsprintf(Buffer, DebugMessage, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
DbgPrint(Buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
ScsiPortCompleteRequest(IN PVOID HwDeviceExtension,
|
||||||
|
IN UCHAR PathId,
|
||||||
|
IN UCHAR TargetId,
|
||||||
|
IN UCHAR Lun,
|
||||||
|
IN UCHAR SrbStatus)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ULONG STDCALL
|
||||||
|
ScsiPortConvertPhysicalAddressToUlong(IN SCSI_PHYSICAL_ADDRESS Address)
|
||||||
|
{
|
||||||
|
return Address.u.LowPart;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
ScsiPortFlushDma(IN PVOID HwDeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
ScsiPortFreeDeviceBase(IN PVOID HwDeviceExtension,
|
||||||
|
IN PVOID MappedAddress)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ULONG STDCALL
|
||||||
|
ScsiPortGetBusData(IN PVOID DeviceExtension,
|
||||||
|
IN ULONG BusDataType,
|
||||||
|
IN ULONG SystemIoBusNumber,
|
||||||
|
IN ULONG SlotNumber,
|
||||||
|
IN PVOID Buffer,
|
||||||
|
IN ULONG Length)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PVOID STDCALL
|
||||||
|
ScsiPortGetDeviceBase(IN PVOID HwDeviceExtension,
|
||||||
|
IN INTERFACE_TYPE BusType,
|
||||||
|
IN ULONG SystemIoBusNumber,
|
||||||
|
IN SCSI_PHYSICAL_ADDRESS IoAddress,
|
||||||
|
IN ULONG NumberOfBytes,
|
||||||
|
IN BOOLEAN InIoSpace)
|
||||||
|
{
|
||||||
|
ULONG AddressSpace;
|
||||||
|
PHYSICAL_ADDRESS TranslatedAddress;
|
||||||
|
PVOID VirtualAddress;
|
||||||
|
PVOID Buffer;
|
||||||
|
BOOLEAN rc;
|
||||||
|
|
||||||
|
AddressSpace = (ULONG)InIoSpace;
|
||||||
|
|
||||||
|
if (!HalTranslateBusAddress(BusType,
|
||||||
|
SystemIoBusNumber,
|
||||||
|
IoAddress,
|
||||||
|
&AddressSpace,
|
||||||
|
&TranslatedAddress))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* i/o space */
|
||||||
|
if (AddressSpace != 0)
|
||||||
|
return (PVOID)TranslatedAddress.u.LowPart;
|
||||||
|
|
||||||
|
VirtualAddress = MmMapIoSpace(TranslatedAddress,
|
||||||
|
NumberOfBytes,
|
||||||
|
FALSE);
|
||||||
|
|
||||||
|
Buffer = ExAllocatePool(NonPagedPool,0x20);
|
||||||
|
if (Buffer == NULL)
|
||||||
|
return VirtualAddress;
|
||||||
|
|
||||||
|
return NULL; /* ?? */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PVOID STDCALL
|
||||||
|
ScsiPortGetLogicalUnit(IN PVOID HwDeviceExtension,
|
||||||
|
IN UCHAR PathId,
|
||||||
|
IN UCHAR TargetId,
|
||||||
|
IN UCHAR Lun)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCSI_PHYSICAL_ADDRESS STDCALL
|
||||||
|
ScsiPortGetPhysicalAddress(IN PVOID HwDeviceExtension,
|
||||||
|
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
||||||
|
IN PVOID VirtualAddress,
|
||||||
|
OUT ULONG *Length)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PSCSI_REQUEST_BLOCK STDCALL
|
||||||
|
ScsiPortGetSrb(IN PVOID DeviceExtension,
|
||||||
|
IN UCHAR PathId,
|
||||||
|
IN UCHAR TargetId,
|
||||||
|
IN UCHAR Lun,
|
||||||
|
IN LONG QueueTag)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PVOID STDCALL
|
||||||
|
ScsiPortGetUncachedExtension(IN PVOID HwDeviceExtension,
|
||||||
|
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
|
||||||
|
IN ULONG NumberOfBytes)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PVOID STDCALL
|
||||||
|
ScsiPortGetVirtualAddress(IN PVOID HwDeviceExtension,
|
||||||
|
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ULONG STDCALL
|
||||||
|
ScsiPortInitialize(IN PVOID Argument1,
|
||||||
|
IN PVOID Argument2,
|
||||||
|
IN struct _HW_INITIALIZATION_DATA *HwInitializationData,
|
||||||
|
IN PVOID HwContext)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return(STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
ScsiPortIoMapTransfer(IN PVOID HwDeviceExtension,
|
||||||
|
IN PSCSI_REQUEST_BLOCK Srb,
|
||||||
|
IN ULONG LogicalAddress,
|
||||||
|
IN ULONG Length)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
ScsiPortMoveMemory(OUT PVOID Destination,
|
||||||
|
IN PVOID Source,
|
||||||
|
IN ULONG Length)
|
||||||
|
{
|
||||||
|
RtlMoveMemory(Destination,
|
||||||
|
Source,
|
||||||
|
Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
ScsiPortNotification(IN SCSI_NOTIFICATION_TYPE NotificationType,
|
||||||
|
IN PVOID HwDeviceExtension,
|
||||||
|
...)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ULONG STDCALL
|
||||||
|
ScsiPortSetBusDataByOffset(IN PVOID DeviceExtension,
|
||||||
|
IN ULONG BusDataType,
|
||||||
|
IN ULONG SystemIoBusNumber,
|
||||||
|
IN ULONG SlotNumber,
|
||||||
|
IN PVOID Buffer,
|
||||||
|
IN ULONG Offset,
|
||||||
|
IN ULONG Length)
|
||||||
|
{
|
||||||
|
return(HalSetBusDataByOffset(BusDataType,
|
||||||
|
SystemIoBusNumber,
|
||||||
|
SlotNumber,
|
||||||
|
Buffer,
|
||||||
|
Offset,
|
||||||
|
Length));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BOOLEAN STDCALL
|
||||||
|
ScsiPortValidateRange(IN PVOID HwDeviceExtension,
|
||||||
|
IN INTERFACE_TYPE BusType,
|
||||||
|
IN ULONG SystemIoBusNumber,
|
||||||
|
IN SCSI_PHYSICAL_ADDRESS IoAddress,
|
||||||
|
IN ULONG NumberOfBytes,
|
||||||
|
IN BOOLEAN InIoSpace)
|
||||||
|
{
|
||||||
|
return(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
51
reactos/drivers/storage/scsiport/scsiport.def
Normal file
51
reactos/drivers/storage/scsiport/scsiport.def
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
; $Id: scsiport.def,v 1.1 2001/07/21 07:30:26 ekohl Exp $
|
||||||
|
;
|
||||||
|
; scsiport.def - export definition file for scsiport driver
|
||||||
|
;
|
||||||
|
EXPORTS
|
||||||
|
ScsiDebugPrint
|
||||||
|
ScsiPortCompleteRequest@20
|
||||||
|
ScsiPortConvertPhysicalAddressToUlong@8
|
||||||
|
ScsiPortConvertUlongToPhysicalAddress@4
|
||||||
|
ScsiPortFlushDma@4
|
||||||
|
ScsiPortFreeDeviceBase@8
|
||||||
|
ScsiPortGetBusData@24
|
||||||
|
ScsiPortGetDeviceBase@28
|
||||||
|
ScsiPortGetLogicalUnit@16
|
||||||
|
ScsiPortGetPhysicalAddress@16
|
||||||
|
ScsiPortGetSrb@20
|
||||||
|
ScsiPortGetUncachedExtension@12
|
||||||
|
ScsiPortGetVirtualAddress@12
|
||||||
|
ScsiPortInitialize@16
|
||||||
|
ScsiPortIoMapTransfer@16
|
||||||
|
ScsiPortLogError@28
|
||||||
|
ScsiPortMoveMemory@12
|
||||||
|
ScsiPortNotification
|
||||||
|
ScsiPortReadPortBufferUchar@12
|
||||||
|
ScsiPortReadPortBufferUshort@12
|
||||||
|
ScsiPortReadPortBufferUlong@12
|
||||||
|
ScsiPortReadPortUchar@4
|
||||||
|
ScsiPortReadPortUshort@4
|
||||||
|
ScsiPortReadPortUlong@4
|
||||||
|
ScsiPortReadRegisterBufferUchar@12
|
||||||
|
ScsiPortReadRegisterBufferUshort@12
|
||||||
|
ScsiPortReadRegisterBufferUlong@12
|
||||||
|
ScsiPortReadRegisterUchar@4
|
||||||
|
ScsiPortReadRegisterUshort@4
|
||||||
|
ScsiPortReadRegisterUlong@4
|
||||||
|
ScsiPortSetBusDataByOffset@28
|
||||||
|
ScsiPortStallExecution@4
|
||||||
|
ScsiPortValidateRange@28
|
||||||
|
ScsiPortWritePortBufferUchar@12
|
||||||
|
ScsiPortWritePortBufferUshort@12
|
||||||
|
ScsiPortWritePortBufferUlong@12
|
||||||
|
ScsiPortWritePortUchar@8
|
||||||
|
ScsiPortWritePortUshort@8
|
||||||
|
ScsiPortWritePortUlong@8
|
||||||
|
ScsiPortWriteRegisterBufferUchar@12
|
||||||
|
ScsiPortWriteRegisterBufferUshort@12
|
||||||
|
ScsiPortWriteRegisterBufferUlong@12
|
||||||
|
ScsiPortWriteRegisterUchar@8
|
||||||
|
ScsiPortWriteRegisterUshort@8
|
||||||
|
ScsiPortWriteRegisterUlong@8
|
||||||
|
;EOF
|
64
reactos/drivers/storage/scsiport/scsiport.edf
Normal file
64
reactos/drivers/storage/scsiport/scsiport.edf
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
; $Id: scsiport.edf,v 1.1 2001/07/21 07:30:26 ekohl Exp $
|
||||||
|
;
|
||||||
|
; scsiport.def - export definition file for scsiport driver
|
||||||
|
;
|
||||||
|
EXPORTS
|
||||||
|
ScsiDebugPrint
|
||||||
|
ScsiPortCompleteRequest=ScsiPortCompleteRequest@20
|
||||||
|
ScsiPortConvertPhysicalAddressToUlong=ScsiPortConvertPhysicalAddressToUlong@8
|
||||||
|
ScsiPortConvertUlongToPhysicalAddress=NTOSKRNL.RtlConvertUlongToLargeInteger
|
||||||
|
ScsiPortFlushDma=ScsiPortFlushDma@4
|
||||||
|
ScsiPortFreeDeviceBase=ScsiPortFreeDeviceBase@8
|
||||||
|
ScsiPortGetBusData=ScsiPortGetBusData@24
|
||||||
|
ScsiPortGetDeviceBase=ScsiPortGetDeviceBase@28
|
||||||
|
ScsiPortGetLogicalUnit=ScsiPortGetLogicalUnit@16
|
||||||
|
ScsiPortGetPhysicalAddress=ScsiPortGetPhysicalAddress@16
|
||||||
|
ScsiPortGetSrb=ScsiPortGetSrb@20
|
||||||
|
ScsiPortGetUncachedExtension=ScsiPortGetUncachedExtension@12
|
||||||
|
ScsiPortGetVirtualAddress=ScsiPortGetVirtualAddress@12
|
||||||
|
ScsiPortInitialize=ScsiPortInitialize@16
|
||||||
|
ScsiPortIoMapTransfer=ScsiPortIoMapTransfer@16
|
||||||
|
ScsiPortLogError=ScsiPortLogError@28
|
||||||
|
ScsiPortMoveMemory=ScsiPortMoveMemory@12
|
||||||
|
ScsiPortNotification
|
||||||
|
;ScsiPortReadPortBufferUchar=HAL.READ_PORT_BUFFER_UCHAR
|
||||||
|
ScsiPortReadPortBufferUchar=NTOSKRNL.READ_PORT_BUFFER_UCHAR
|
||||||
|
;ScsiPortReadPortBufferUshort=HAL.READ_PORT_BUFFER_USHORT
|
||||||
|
ScsiPortReadPortBufferUshort=NTOSKRNL.READ_PORT_BUFFER_USHORT
|
||||||
|
;ScsiPortReadPortBufferUlong=HAL.READ_PORT_BUFFER_ULONG
|
||||||
|
ScsiPortReadPortBufferUlong=NTOSKRNL.READ_PORT_BUFFER_ULONG
|
||||||
|
;ScsiPortReadPortUchar=NTOSKRNL.READ_PORT_UCHAR
|
||||||
|
ScsiPortReadPortUchar=NTOSKRNL.READ_PORT_UCHAR
|
||||||
|
;ScsiPortReadPortUshort=HAL.READ_PORT_USHORT
|
||||||
|
ScsiPortReadPortUshort=NTOSKRNL.READ_PORT_USHORT
|
||||||
|
;ScsiPortReadPortUlong=HAL.READ_PORT_ULONG
|
||||||
|
ScsiPortReadPortUlong=NTOSKRNL.READ_PORT_ULONG
|
||||||
|
ScsiPortReadRegisterBufferUchar=NTOSKRNL.READ_REGISTER_BUFFER_UCHAR
|
||||||
|
ScsiPortReadRegisterBufferUshort=NTOSKRNL.READ_REGISTER_BUFFER_USHORT
|
||||||
|
ScsiPortReadRegisterBufferUlong=NTOSKRNL.READ_REGISTER_BUFFER_ULONG
|
||||||
|
ScsiPortReadRegisterUchar=NTOSKRNL.READ_REGISTER_UCHAR
|
||||||
|
ScsiPortReadRegisterUshort=NTOSKRNL.READ_REGISTER_USHORT
|
||||||
|
ScsiPortReadRegisterUlong=NTOSKRNL.READ_REGISTER_ULONG
|
||||||
|
ScsiPortSetDataBusByOffset=ScsiPortSetBusDataByOffset@28
|
||||||
|
;ScsiPortStallExecution=HAL.KeStallExecutionProcessor
|
||||||
|
ScsiPortStallExecution=NTOSKRNL.KeStallExecutionProcessor
|
||||||
|
ScsiPortValidateRange=ScsiPortValidateRange@28
|
||||||
|
;ScsiPortWritePortUchar=HAL.WRITE_PORT_UCHAR
|
||||||
|
ScsiPortWritePortUchar=NTOSKRNL.WRITE_PORT_UCHAR
|
||||||
|
;ScsiPortWritePortUshort=HA.WRITE_PORT_USHORT
|
||||||
|
ScsiPortWritePortUshort=NTOSKRNL.WRITE_PORT_USHORT
|
||||||
|
;ScsiPortWritePortUlong=HAL.WRITE_PORT_ULONG
|
||||||
|
ScsiPortWritePortUlong=NTOSKRNL.WRITE_PORT_ULONG
|
||||||
|
;ScsiPortWritePortBufferUchar=HAL.WRITE_PORT_BUFFER_UCHAR
|
||||||
|
ScsiPortWritePortBufferUchar=NTOSKRNL.WRITE_PORT_BUFFER_UCHAR
|
||||||
|
;ScsiPortWritePortBufferUshort=HAL.WRITE_PORT_BUFFER_USHORT
|
||||||
|
ScsiPortWritePortBufferUshort=NTOSKRNL.WRITE_PORT_BUFFER_USHORT
|
||||||
|
;ScsiPortWritePortBufferUlong=HAL.WRITE_PORT_BUFFER_ULONG
|
||||||
|
ScsiPortWritePortBufferUlong=NTOSKRNL.WRITE_PORT_BUFFER_ULONG
|
||||||
|
ScsiPortWriteRegisterBufferUchar=NTOSKRNL.WRITE_REGISTER_BUFFER_UCHAR
|
||||||
|
ScsiPortWriteRegisterBufferUshort=NTOSKRNL.WRITE_REGISTER_BUFFER_USHORT
|
||||||
|
ScsiPortWriteRegisterBufferUlong=NTOSKRNL.WRITE_REGISTER_BUFFER_ULONG
|
||||||
|
ScsiPortWriteRegisterUchar=NTOSKRNL.WRITE_REGISTER_UCHAR
|
||||||
|
ScsiPortWriteRegisterUshort=NTOSKRNL.WRITE_REGISTER_USHORT
|
||||||
|
ScsiPortWriteRegisterUlong=NTOSKRNL.WRITE_REGISTER_ULONG
|
||||||
|
;EOF
|
38
reactos/drivers/storage/scsiport/scsiport.rc
Normal file
38
reactos/drivers/storage/scsiport/scsiport.rc
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
|
||||||
|
#include <defines.h>
|
||||||
|
#include <reactos/resource.h>
|
||||||
|
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||||
|
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS 0x1L
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS 0x40004L
|
||||||
|
FILETYPE 0x2L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||||
|
VALUE "FileDescription", "SCSI Port Driver\0"
|
||||||
|
VALUE "FileVersion", "0.0.0\0"
|
||||||
|
VALUE "InternalName", "scsiport\0"
|
||||||
|
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||||
|
VALUE "OriginalFilename", "scsiport.sys\0"
|
||||||
|
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||||
|
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1200
|
||||||
|
END
|
||||||
|
END
|
Loading…
Reference in a new issue