/* * storport.h Storage port functions * * ========================================================================= * * Open Watcom Project * * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved. * * This file is automatically generated. Do not edit directly. * * ========================================================================= */ #ifndef _NTSTORPORT_ #define _NTSTORPORT_ #ifndef _ENABLE_AUTODEPEND #pragma read_only_file; #endif #ifdef __cplusplus extern "C" { #endif /* Macro to specify storage port functions */ #ifdef _NTDDK_ #define STORPORT_API #else #define STORPORT_API DECLSPEC_IMPORT #endif /* Primitive data types */ typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS; typedef PHYSICAL_ADDRESS *PSTOR_PHYSICAL_ADDRESS; /* Storage synchronization models */ typedef enum _STOR_SYNCHRONIZATION_MODEL { StorSynchronizeHalfDuplex = 0, StorSynchronizeFullDuplex = 1 } STOR_SYNCHRONIZATION_MODEL; /* Hardware message signaled interrupt routine */ typedef BOOLEAN (NTAPI *PHW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE)( PVOID, ULONG ); /* Interrupt synchronization modes */ typedef enum _INTERRUPT_SYNCHRONIZATION_MODE { InterruptSupportNone = 0, InterruptSynchronizeAll = 1, InterruptSynchronizePerMessage = 2 } INTERRUPT_SYNCHRONIZATION_MODE; typedef struct _MEMORY_REGION { PUCHAR VirtualBase; PHYSICAL_ADDRESS PhysicalBase; ULONG Length; } MEMORY_REGION; typedef MEMORY_REGION *PMEMORY_REGION; /* Hardware build I/O callback */ typedef BOOLEAN (NTAPI *PHW_BUILDIO)( PVOID, struct SCSI_REQUEST_BLOCK * ); /* The Microsoft version of storport.h is mostly a lot of the same stuff that's in * other headers. To save space, include those headers and just define those constants * and structures that are unique to this header. */ #include #include /* Storage map constants */ #define STOR_MAP_NO_BUFFERS 0 #define STOR_MAP_ALL_BUFFERS 1 #define STOR_MAP_NON_READ_WRITE_BUFFERS 2 /* Extended flags */ #define EXTENDED_FLAG_POWER 0x00000001L /* SCSI 64-bit DMA flags */ #define SCSI_DMA64_SYSTEM_SUPPORTED 0x80 #define SCSI_DMA64_MINIPORT_SUPPORTED 0x01 #if (NTDDI_VERSION >= 0x05020100) #define SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED 0x02 #endif /* Storage performance flags */ #define STOR_PERF_DPC_REDIRECTION 0x00000001L #define STOR_PERF_CONCURRENT_CHANNELS 0x00000002L #define STOR_PERF_INTERRUPT_MESSAGE_RANGES 0x00000004L #define STOR_PERF_ADV_CONFIG_LOCALITY 0x00000008L #define STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO 0x00000010L /* Storage performance version number */ #define STOR_PERF_VERSION 0x00000003L /* Storage status codes */ #define STOR_STATUS_SUCCESS 0x00000000L #define STOR_STATUS_UNSUCCCESSFUL 0xC1000001L #define STOR_STATUS_NOT_IMPLEMENTED 0xC1000002L #define STOR_STATUS_INSUFFICIENT_RESOURCES 0xC1000003L #define STOR_STATUS_BUFFER_TOO_SMALL 0xC1000004L #define STOR_STATUS_ACCESS_DENIED 0xC1000005L #define STOR_STATUS_INVALID_PARAMETER 0xC1000006L #define STOR_STATUS_INVALID_DEVICE_REQUEST 0xC1000007L #define STOR_STATUS_INVALID_IRQL 0xC1000008L #define STOR_STATUS_INVALID_DEVICE_STATE 0xC1000009L #define STOR_STATUS_INVALID_BUFFER_SIZE 0xC100000AL #define STOR_STATUS_UNSUPPORTED_VERSION 0xC100000BL /* Miniport dump constants */ #define DUMP_MINIPORT_VERSION_1 0x0100 #define DUMP_MINIPORT_VERSION 0x0200 #define DUMP_MINIPORT_NAME_LENGTH 15 /* Storage current log interface revision number */ #define STOR_CURRENT_LOG_INTERFACE_REVISION 0x0100 /* Miniport registry value types */ #define MINIPORT_REG_SZ 1 #define MINIPORT_REG_BINARY 3 #define MINIPORT_REG_DWORD 4 /* Message interrupt information */ typedef struct _MESSAGE_INTERRUPT_INFORMATION { ULONG MessageId; ULONG MessageData; STOR_PHYSICAL_ADDRESS MessageAddress; ULONG InterruptVector; ULONG InterruptLevel; KINTERRUPT_MODE InterruptMode; } MESSAGE_INTERRUPT_INFORMATION; typedef MESSAGE_INTERRUPT_INFORMATION *PMESSAGE_INTERRUPT_INFORMATION; /* Storage scatter/gather element */ typedef struct _STOR_SCATTER_GATHER_ELEMENT { STOR_PHYSICAL_ADDRESS PhysicalAddress; ULONG Length; ULONG_PTR Reserved; } STOR_SCATTER_GATHER_ELEMENT; typedef STOR_SCATTER_GATHER_ELEMENT *PSTOR_SCATTER_GATHER_ELEMENT; /* Storage scatter/gather list */ typedef struct _STOR_SCATTER_GATHER_LIST { ULONG NumberOfElements; ULONG_PTR Reserved; STOR_SCATTER_GATHER_ELEMENT List[1]; } STOR_SCATTER_GATHER_LIST; typedef STOR_SCATTER_GATHER_LIST *PSTOR_SCATTER_GATHER_LIST; /* Scatter/gather status codes */ typedef enum _GETSGSTATUS { SG_ALLOCATED = 0, SG_BUFFER_TOO_SMALL = 1 } GETSGSTATUS; typedef GETSGSTATUS *PGETSGSTATUS; /* Deferred procedure call buffer */ typedef struct _DPC_BUFFER { CSHORT Type; UCHAR Number; UCHAR Importance; struct { PVOID F; PVOID B; }; PVOID DeferredRoutine; PVOID DeferredContext; PVOID SystemArgument1; PVOID SystemArgument2; PVOID DpcData; } DPC_BUFFER; /* Storage deferred procedure call */ typedef struct _STOR_DPC { DPC_BUFFER Dpc; ULONG_PTR Lock; } STOR_DPC; typedef STOR_DPC *PSTOR_DPC; /* Storage spin lock */ typedef enum _STOR_SPINLOCK { DpcLock = 1, StartIoLock = 2, InterruptLock = 3 } STOR_SPINLOCK; /* Storage lock handles */ typedef struct _STOR_LOCK_HANDLE { STOR_SPINLOCK Lock; struct { struct { PVOID Next; PVOID Lock; } LockQueue; KIRQL OldIrql; } Context; } STOR_LOCK_HANDLE; typedef STOR_LOCK_HANDLE *PSTOR_LOCK_HANDLE; /* Performance configuration data */ typedef struct _PERF_CONFIGURATION_DATA { ULONG Version; ULONG Size; ULONG Flags; ULONG ConcurrentChannels; ULONG FirstRedirectionMessageNumber; ULONG LastRedirectionMessageNumber; } PERF_CONFIGURATION_DATA; typedef PERF_CONFIGURATION_DATA *PPERF_CONFIGURATION_DATA; /* Start I/O performance parameters */ typedef struct _STARTIO_PERFORMANCE_PARAMETERS { ULONG Version; ULONG Size; ULONG MessageNumber; ULONG ChannelNumber; } STARTIO_PERFORMANCE_PARAMETERS; typedef STARTIO_PERFORMANCE_PARAMETERS *PSTARTIO_PERFORMANCE_PARAMETERS; /* Hardware callbacks */ typedef BOOLEAN (NTAPI *PHW_PASSIVE_INITIALIZE_ROUTINE)( PVOID ); typedef VOID (NTAPI *PHW_DPC_ROUTINE)( PSTOR_DPC, PVOID, PVOID, PVOID ); typedef VOID (NTAPI *PHW_FREE_ADAPTER_RESOURCES)( PVOID ); typedef VOID (NTAPI *PHW_PROCESS_SERVICE_REQUEST)( PVOID, PVOID ); typedef VOID (NTAPI *PHW_COMPLETE_SERVICE_IRP)( PVOID ); typedef VOID (NTAPI *PHW_INITIALIZE_TRACING)( PVOID, PVOID ); typedef VOID (NTAPI *PHW_CLEANUP_TRACING)( PVOID ); typedef ULONG (NTAPI *PVIRTUAL_HW_FIND_ADAPTER)( PVOID, PVOID, PVOID, PVOID, PCHAR, PPORT_CONFIGURATION_INFORMATION, PBOOLEAN ); /* Storage port callbacks */ typedef BOOLEAN (NTAPI *PStorPortGetMessageInterruptInformation)( PVOID, ULONG, PMESSAGE_INTERRUPT_INFORMATION ); typedef VOID (NTAPI *PStorPortPutScatterGatherList)( PVOID, PSTOR_SCATTER_GATHER_LIST, BOOLEAN ); typedef VOID (NTAPI *PpostScaterGatherExecute)( PVOID *, PVOID *, PSTOR_SCATTER_GATHER_LIST, PVOID ); typedef GETSGSTATUS (NTAPI *PStorPortBuildScatterGatherList)( PVOID, PVOID, PVOID, ULONG, PpostScaterGatherExecute, PVOID, BOOLEAN, PVOID, ULONG ); typedef VOID (NTAPI *PStorPortFreePool)( PVOID, PVOID, PVOID ); typedef PVOID (NTAPI *PStorPortAllocatePool)( ULONG, ULONG, PVOID, PVOID * ); typedef PVOID (NTAPI *PStorPortGetSystemAddress)( PSCSI_REQUEST_BLOCK ); typedef ULONG (NTAPI *PStorPortAcquireMSISpinLock)( PVOID, ULONG ); typedef VOID (NTAPI *PStorPortReleaseMSISpinLock)( PVOID, ULONG, ULONG ); typedef VOID (NTAPI *PStorPortCompleteServiceIrp)( PVOID, PVOID ); typedef PVOID (NTAPI *PStorPortGetOriginalMdl)( PSCSI_REQUEST_BLOCK ); /* Storage port extended functions */ typedef struct _STORPORT_EXTENDED_FUNCTIONS { ULONG Version; PStorPortGetMessageInterruptInformation GetMessageInterruptInformation; PStorPortPutScatterGatherList PutScatterGatherList; PStorPortBuildScatterGatherList BuildScatterGatherList; PStorPortFreePool FreePool; PStorPortAllocatePool AllocatePool; PStorPortGetSystemAddress GetSystemAddress; PStorPortAcquireMSISpinLock AcquireMSISpinLock; PStorPortReleaseMSISpinLock ReleaseMSISpinLock; PStorPortCompleteServiceIrp CompleteServiceIrp; PStorPortGetOriginalMdl GetOriginalMdl; } STORPORT_EXTENDED_FUNCTIONS; typedef STORPORT_EXTENDED_FUNCTIONS *PSTORPORT_EXTENDED_FUNCTIONS; /* Storage port function codes */ typedef enum _STORPORT_FUNCTION_CODE { ExtFunctionAllocatePool = 0, ExtFunctionFreePool = 1, ExtFunctionAllocateMdl = 2, ExtFunctionFreeMdl = 3, ExtFunctionBuildMdlForNonPagedPool = 4, ExtFunctionGetSystemAddress = 5, ExtFunctionGetOriginalMdl = 6, ExtFunctionCompleteServiceIrp = 7, ExtFunctionGetDeviceObjects = 8, ExtFunctionBuildScatterGatherList = 9, ExtFunctionPutScatterGatherList = 10, ExtFunctionAcquireMSISpinLock = 11, ExtFunctionReleaseMSISpinLock = 12, ExtFunctionGetMessageInterruptInformation = 13, ExtFunctionInitializePerformanceOptimizations = 14, ExtFunctionGetStartIoPerformanceParameters = 15, ExtFunctionLogSystemEvent = 16, ExtFunctionGetCurrentProcessorNumber = 17, ExtFunctionGetActiveGroupCount = 18, ExtFunctionGetGroupAffinity = 19, ExtFunctionGetActiveNodeCount = 20, ExtFunctionGetNodeAffinity = 21, ExtFunctionGetHighestNodeNumber = 22, ExtFunctionGetLogicalProcessorRelationship = 23, ExtFunctionAllocateContiguousMemorySpecifyCacheNode = 24, ExtFunctionFreeContiguousMemorySpecifyCache = 25 } STORPORT_FUNCTION_CODE; typedef STORPORT_FUNCTION_CODE *PSTORPORT_FUNCTION_CODE; /* Virtual hardware initialization data */ typedef struct _VIRTUAL_HW_INITIALIZATION_DATA { ULONG HwInitializationDataSize; INTERFACE_TYPE AdapterInterfaceType; PHW_INITIALIZE HwInitialize; PHW_STARTIO HwStartIo; PHW_INTERRUPT HwInterrupt; PVIRTUAL_HW_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; UCHAR MapBuffers; BOOLEAN NeedPhysicalAddresses; BOOLEAN TaggedQueuing; BOOLEAN AutoRequestSense; BOOLEAN MultipleRequestPerLu; BOOLEAN ReceiveEvent; USHORT VendorIdLength; PVOID VendorId; union { USHORT ReservedUshort; USHORT PortVersionFlags; }; USHORT DeviceIdLength; PVOID DeviceId; PHW_ADAPTER_CONTROL HwAdapterControl; PHW_BUILDIO HwBuildIo; PHW_FREE_ADAPTER_RESOURCES HwFreeAdapterResources; PHW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest; PHW_COMPLETE_SERVICE_IRP HwCompleteServiceIrp; PHW_INITIALIZE_TRACING HwInitializeTracing; PHW_CLEANUP_TRACING HwCleanupTracing; } VIRTUAL_HW_INITIALIZATION_DATA; typedef VIRTUAL_HW_INITIALIZATION_DATA *PVIRTUAL_HW_INITIALIZATION_DATA; /* Miniport mappings */ typedef struct _MINIPORT_MAPPINGS { USHORT Version; PVOID IBFTable; PVOID Nic0Map; PVOID Nic1Map; ULONG NumberOfAdditionalNic; PVOID NicMap[]; } MINIPORT_MAPPINGS; typedef MINIPORT_MAPPINGS *PMINIPORT_MAPPINGS; /* Miniport dump pointers */ typedef struct _MINIPORT_DUMP_POINTERS { USHORT Version; USHORT Size; WCHAR DriverName[DUMP_MINIPORT_NAME_LENGTH]; struct _ADAPTER_OBJECT *AdapterObject; PVOID MappedRegisterBase; ULONG CommonBufferSize; PVOID MiniportPrivateDumpData; ULONG SystemIoBusNumber; INTERFACE_TYPE AdapterInterfaceType; ULONG MaximumTransferLength; ULONG NumberOfPhysicalBreaks; ULONG AlignmentMask; ULONG NumberOfAccessRanges; ACCESS_RANGE (*AccessRanges)[]; UCHAR NumberOfBuses; BOOLEAN Master; BOOLEAN MapBuffers; UCHAR MaximumNumberOfTargets; } MINIPORT_DUMP_POINTERS; typedef MINIPORT_DUMP_POINTERS *PMINIPORT_DUMP_POINTERS; /* Storage event association enumeration */ typedef enum _STOR_EVENT_ASSOCIATION_ENUM { StorEventAdapterAssociation = 0, StorEventLunAssociation = 1, StorEventTargetAssociation = 2, StorEventInvalidAssociation = 3 } STOR_EVENT_ASSOCIATION_ENUM; /* Storage log event details */ typedef struct _STOR_LOG_EVENT_DETAILS { ULONG InterfaceRevision; ULONG Size; ULONG Flags; STOR_EVENT_ASSOCIATION_ENUM EventAssociation; ULONG PathId; ULONG TargetId; ULONG LunId; BOOLEAN StorportSpecificErrorCode; ULONG ErrorCode; ULONG UniqueId; ULONG DumpDataSize; PVOID DumpData; ULONG StringCount; PWSTR *StringList; } STOR_LOG_EVENT_DETAILS; typedef STOR_LOG_EVENT_DETAILS *PSTOR_LOG_EVENT_DETAILS; /* Storage callbacks */ typedef BOOLEAN (NTAPI *PSTOR_SYNCHRONIZED_ACCESS)( PVOID, PVOID ); /* Functions in STORPORT.SYS */ STORPORT_API PUCHAR NTAPI StorPortAllocateRegistryBuffer( PVOID, PULONG ); STORPORT_API BOOLEAN NTAPI StorPortBusy( PVOID, ULONG ); STORPORT_API VOID NTAPI StorPortCompleteRequest( PVOID, UCHAR, UCHAR, UCHAR, UCHAR ); STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortConvertUlongToPhysicalAddress( ULONG_PTR ); STORPORT_API VOID __cdecl StorPortDebugPrint( ULONG, PCCHAR, ... ); STORPORT_API BOOLEAN NTAPI StorPortDeviceBusy( PVOID, UCHAR, UCHAR, UCHAR, ULONG ); STORPORT_API BOOLEAN NTAPI StorPortDeviceReady( PVOID, UCHAR, UCHAR, UCHAR ); STORPORT_API ULONG __cdecl StorPortExtendedFunction( STORPORT_FUNCTION_CODE, PVOID, ... ); STORPORT_API VOID NTAPI StorPortFreeDeviceBase( PVOID, PVOID ); STORPORT_API VOID NTAPI StorPortFreeRegistryBuffer( PVOID, PUCHAR ); STORPORT_API ULONG NTAPI StorPortGetBusData( PVOID, ULONG, ULONG, ULONG, PVOID, ULONG ); STORPORT_API PVOID NTAPI StorPortGetDeviceBase( PVOID, INTERFACE_TYPE, ULONG, STOR_PHYSICAL_ADDRESS, ULONG, BOOLEAN ); STORPORT_API PVOID NTAPI StorPortGetLogicalUnit( PVOID, UCHAR, UCHAR, UCHAR ); STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortGetPhysicalAddress( PVOID, PSCSI_REQUEST_BLOCK, PVOID, ULONG * ); STORPORT_API PSTOR_SCATTER_GATHER_LIST NTAPI StorPortGetScatterGatherList( PVOID, PSCSI_REQUEST_BLOCK ); STORPORT_API PVOID NTAPI StorPortGetUncachedExtension( PVOID, PPORT_CONFIGURATION_INFORMATION, ULONG ); STORPORT_API PVOID NTAPI StorPortGetVirtualAddress( PVOID, STOR_PHYSICAL_ADDRESS ); STORPORT_API ULONG NTAPI StorPortInitialize( PVOID, PVOID, struct _HW_INITIALIZATION_DATA *, PVOID ); STORPORT_API VOID NTAPI StorPortLogError( PVOID, PSCSI_REQUEST_BLOCK, UCHAR, UCHAR, UCHAR, ULONG, ULONG ); STORPORT_API VOID NTAPI StorPortMoveMemory( PVOID, PVOID, ULONG ); STORPORT_API VOID __cdecl StorPortNotification( SCSI_NOTIFICATION_TYPE, PVOID, ... ); STORPORT_API BOOLEAN NTAPI StorPortPause( PVOID, ULONG ); STORPORT_API BOOLEAN NTAPI StorPortPauseDevice( PVOID, UCHAR, UCHAR, UCHAR, ULONG ); STORPORT_API VOID NTAPI StorPortQuerySystemTime( PLARGE_INTEGER ); STORPORT_API VOID NTAPI StorPortReadPortBufferUchar( PVOID, PUCHAR, PUCHAR, ULONG ); STORPORT_API VOID NTAPI StorPortReadPortBufferUlong( PVOID, PULONG, PULONG, ULONG ); STORPORT_API VOID NTAPI StorPortReadPortBufferUshort( PVOID, PUSHORT, PUSHORT, ULONG ); STORPORT_API UCHAR NTAPI StorPortReadPortUchar( PVOID, PUCHAR ); STORPORT_API ULONG NTAPI StorPortReadPortUlong( PVOID, PULONG ); STORPORT_API USHORT NTAPI StorPortReadPortUshort( PVOID, PUSHORT ); STORPORT_API VOID NTAPI StorPortReadRegisterBufferUchar( PVOID, PUCHAR, PUCHAR, ULONG ); STORPORT_API VOID NTAPI StorPortReadRegisterBufferUlong( PVOID, PULONG, PULONG, ULONG ); STORPORT_API VOID NTAPI StorPortReadRegisterBufferUshort( PVOID, PUSHORT, PUSHORT, ULONG ); STORPORT_API UCHAR NTAPI StorPortReadRegisterUchar( PVOID, PUCHAR ); STORPORT_API ULONG NTAPI StorPortReadRegisterUlong( PVOID, PULONG ); STORPORT_API USHORT NTAPI StorPortReadRegisterUshort( PVOID, PUSHORT ); STORPORT_API BOOLEAN NTAPI StorPortReady( PVOID ); STORPORT_API BOOLEAN NTAPI StorPortRegistryRead( PVOID, PUCHAR, ULONG, ULONG, PUCHAR, PULONG ); STORPORT_API BOOLEAN NTAPI StorPortRegistryWrite( PVOID, PUCHAR, ULONG, ULONG, PUCHAR, ULONG ); STORPORT_API BOOLEAN NTAPI StorPortResume( PVOID ); STORPORT_API BOOLEAN NTAPI StorPortResumeDevice( PVOID, UCHAR, UCHAR, UCHAR ); STORPORT_API ULONG NTAPI StorPortSetBusDataByOffset( PVOID, ULONG, ULONG, ULONG, PVOID, ULONG, ULONG ); STORPORT_API BOOLEAN NTAPI StorPortSetDeviceQueueDepth( PVOID, UCHAR, UCHAR, UCHAR, ULONG ); STORPORT_API VOID NTAPI StorPortStallExecution( ULONG ); STORPORT_API BOOLEAN NTAPI StorPortSynchronizeAccess( PVOID, PSTOR_SYNCHRONIZED_ACCESS, PVOID ); STORPORT_API BOOLEAN NTAPI StorPortValidateRange( PVOID, INTERFACE_TYPE, ULONG, STOR_PHYSICAL_ADDRESS, ULONG, BOOLEAN ); STORPORT_API VOID NTAPI StorPortWritePortBufferUchar( PVOID, PUCHAR, PUCHAR, ULONG ); STORPORT_API VOID NTAPI StorPortWritePortBufferUlong( PVOID, PULONG, PULONG, ULONG ); STORPORT_API VOID NTAPI StorPortWritePortBufferUshort( PVOID, PUSHORT, PUSHORT, ULONG ); STORPORT_API VOID NTAPI StorPortWritePortUchar( PVOID, PUCHAR, UCHAR ); STORPORT_API VOID NTAPI StorPortWritePortUlong( PVOID, PULONG, ULONG ); STORPORT_API VOID NTAPI StorPortWritePortUshort( PVOID, PUSHORT, USHORT ); STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUchar( PVOID, PUCHAR, PUCHAR, ULONG ); STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUlong( PVOID, PULONG, PULONG, ULONG ); STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUshort( PVOID, PUSHORT, PUSHORT, ULONG ); STORPORT_API VOID NTAPI StorPortWriteRegisterUchar( PVOID, PUCHAR, UCHAR ); STORPORT_API VOID NTAPI StorPortWriteRegisterUlong( PVOID, PULONG, ULONG ); STORPORT_API VOID NTAPI StorPortWriteRegisterUshort( PVOID, PUSHORT, USHORT ); /* Functions implemented as macros */ #define StorPortConvertPhysicalAddressToUlong( x ) ((x).LowPart) #define StorPortConvertPhysicalAddressToULong64( x ) ((x).QuadPart) #if (NTDDI_VERSION >= 0x05020100) #define StorPortCopyMemory( p1, p2, p3 ) memcpy( p1, p2, p3 ) #endif #undef DebugPrint #if DBG #define DebugPrint( x ) StorPortDebugPrint x #else #define DebugPrint( x ) #endif /* Aliases */ #ifdef STOR_USE_SCSI_ALIASES #define ScsiDebugPrint StorPortDebugPrint #define ScsiPortCompleteRequest StorPortCompleteRequest #define ScsiPortConvertPhysicalAddressToUlong StorPortConvertPhysicalAddressToUlong #define ScsiPortConvertUlongToPhysicalAddress StorPortConvertUlongToPhysicalAddress #define ScsiPortFlushDma StorPortFlushDma #define ScsiPortFreeDeviceBase StorPortFreeDeviceBase #define ScsiPortGetBusData StorPortGetBusData #define ScsiPortGetDeviceBase StorPortGetDeviceBase #define ScsiPortGetLogicalUnit StorPortGetLogicalUnit #define ScsiPortGetPhysicalAddress StorPortGetPhysicalAddress #define ScsiPortGetSrb StorPortGetSrb #define ScsiPortGetUncachedExtension StorPortGetUncachedExtension #define ScsiPortGetVirtualAddress StorPortGetVirtualAddress #define ScsiPortInitialize StorPortInitialize #define ScsiPortIoMapTransfer StorPortIoMapTransfer #define ScsiPortLogError StorPortLogError #define ScsiPortMoveMemory StorPortMoveMemory #define ScsiPortNotification StorPortNotification #define ScsiPortQuerySystemTime StorPortQuerySystemTime #define ScsiPortReadPortBufferUchar( p1, p2, p3 ) \ StorPortReadPortBufferUchar( NULL, p1, p2, p3 ) #define ScsiPortReadPortBufferUlong( p1, p2, p3 ) \ StorPortReadPortBufferUlong( NULL, p1, p2, p3 ) #define ScsiPortReadPortBufferUshort( p1, p2, p3 ) \ StorPortReadPortBufferUshort( NULL, p1, p2, p3 ) #define ScsiPortReadPortUchar( x ) StorPortReadPortUchar( NULL, x ) #define ScsiPortReadPortUlong( x ) StorPortReadPortUlong( NULL, x ) #define ScsiPortReadPortUshort( x ) StorPortReadPortUshort( NULL, x ) #define ScsiPortReadRegisterBufferUchar( p1, p2, p3 ) \ ScsiPortReadRegisterBufferUchar( NULL, p1, p2, p3 ) #define ScsiPortReadRegisterBufferUlong( p1, p2, p3 ) \ ScsiPortReadRegisterBufferUlong( NULL, p1, p2, p3 ) #define ScsiPortReadRegisterBufferUshort( p1, p2, p3 ) \ ScsiPortReadRegisterBufferUshort( NULL, p1, p2, p3 ) #define ScsiPortReadRegisterUchar( x ) StorPortReadRegisterUchar( NULL, x ) #define ScsiPortReadRegisterUlong( x ) StorPortReadRegisterUlong( NULL, x ) #define ScsiPortReadRegisterUshort( x ) StorPortReadRegisterUshort( NULL, x ) #define ScsiPortSetBusDataByOffset StorPortSetBusDataByOffset #define ScsiPortStallExecution StorPortStallExecution #define ScsiPortValidateRange StorPortValidateRange #define ScsiPortWritePortBufferUchar( p1, p2, p3 ) \ StorPortWritePortBufferUchar( NULL, p1, p2, p3 ) #define ScsiPortWritePortBufferUlong( p1, p2, p3 ) \ StorPortWritePortBufferUlong( NULL, p1, p2, p3 ) #define ScsiPortWritePortBufferUshort( p1, p2, p3 ) \ StorPortWritePortBufferUshort( NULL, p1, p2, p3 ) #define ScsiPortWritePortUchar( p1, p2 ) \ StorPortWritePortUchar( NULL, p1, p2 ) #define ScsiPortWritePortUlong( p1, p2 ) \ StorPortWritePortUlong( NULL, p1, p2 ) #define ScsiPortWritePortUshort( p1, p2 ) \ StorPortWritePortUshort( NULL, p1, p2 ) #define ScsiPortWriteRegisterBufferUchar( p1, p2, p3 ) \ StorPortWriteRegisterBufferUchar( NULL, p1, p2, p3 ) #define ScsiPortWriteRegisterBufferUlong( p1, p2, p3 ) \ StorPortWriteRegisterBufferUlong( NULL, p1, p2, p3 ) #define ScsiPortWriteRegisterBufferUshort( p1, p2, p3 ) \ StorPortWriteRegisterBufferUshort( NULL, p1, p2, p3 ) #define ScsiPortWriteRegisterUchar( p1, p2 ) \ StorPortWriteRegisterUchar( NULL, p1, p2 ) #define ScsiPortWriteRegisterUlong( p1, p2 ) \ StorPortWriteRegisterUlong( NULL, p1, p2 ) #define ScsiPortWriteRegisterUshort( p1, p2 ) \ StorPortWriteRegisterUshort( NULL, p1, p2 ) #endif __inline BOOLEAN StorPortEnablePassiveInitialization( PVOID p1, PHW_PASSIVE_INITIALIZE_ROUTINE p2 ) { LONG v; v = FALSE; StorPortNotification( EnablePassiveInitialization, p1, p2, &v ); return( (BOOLEAN)v ); } __inline VOID StorPortInitializeDpc( PVOID p1, PSTOR_DPC p2, PHW_DPC_ROUTINE p3 ) { StorPortNotification( InitializeDpc, p1, p2, p3 ); } __inline BOOLEAN StorPortIssueDpc( PVOID p1, PSTOR_DPC p2, PVOID p3, PVOID p4 ) { LONG v; v = FALSE; StorPortNotification( IssueDpc, p1, p2, p3, p4, &v ); return( (BOOLEAN)v ); } __inline VOID StorPortAcquireSpinLock( PVOID p1, STOR_SPINLOCK p2, PVOID p3, PSTOR_LOCK_HANDLE p4 ) { StorPortNotification( AcquireSpinLock, p1, p2, p3, p4 ); } __inline VOID StorPortReleaseSpinLock( PVOID p1, PSTOR_LOCK_HANDLE p2 ) { StorPortNotification( ReleaseSpinLock, p1, p2 ); } __inline ULONG StorPortAllocatePool( PVOID p1, ULONG p2, ULONG p3, PVOID *p4 ) { return( StorPortExtendedFunction( ExtFunctionAllocatePool, p1, p2, p3, p4 ) ); } __inline ULONG StorPortFreePool( PVOID p1, PVOID p2 ) { return( StorPortExtendedFunction( ExtFunctionFreePool, p1, p2 ) ); } __inline ULONG StorPortAllocateMdl( PVOID p1, PVOID p2, ULONG p3, PVOID *p4 ) { return( StorPortExtendedFunction( ExtFunctionAllocateMdl, p1, p2, p3, p4 ) ); } __inline ULONG StorPortFreeMdl( PVOID p1, PVOID p2 ) { return( StorPortExtendedFunction( ExtFunctionFreeMdl, p1, p2 ) ); } __inline ULONG StorPortBuildMdlForNonPagedPool( PVOID p1, PVOID p2 ) { return( StorPortExtendedFunction( ExtFunctionBuildMdlForNonPagedPool, p1, p2 ) ); } __inline ULONG StorPortGetSystemAddress( PVOID p1, PSCSI_REQUEST_BLOCK p2, PVOID *p3 ) { return( StorPortExtendedFunction( ExtFunctionGetSystemAddress, p1, p2, p3 ) ); } __inline ULONG StorPortGetOriginalMdl( PVOID p1, PSCSI_REQUEST_BLOCK p2, PVOID *p3 ) { return( StorPortExtendedFunction( ExtFunctionGetOriginalMdl, p1, p2, p3 ) ); } __inline ULONG StorPortCompleteServiceIrp( PVOID p1, PVOID p2 ) { return( StorPortExtendedFunction( ExtFunctionCompleteServiceIrp, p1, p2 ) ); } __inline ULONG StorPortGetDeviceObjects( PVOID p1, PVOID *p2, PVOID *p3, PVOID *p4 ) { return( StorPortExtendedFunction( ExtFunctionGetDeviceObjects, p1, p2, p3, p4 ) ); } __inline ULONG StorPortBuildScatterGatherList( PVOID p1, PVOID p2, PVOID p3, ULONG p4, PpostScaterGatherExecute p5, PVOID p6, BOOLEAN p7, PVOID p8, ULONG p9 ) { return( StorPortExtendedFunction( ExtFunctionBuildScatterGatherList, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) ); } __inline ULONG StorPortPutScatterGatherList( PVOID p1, PSTOR_SCATTER_GATHER_LIST p2, BOOLEAN p3 ) { return( StorPortExtendedFunction( ExtFunctionPutScatterGatherList, p1, p2, p3 ) ); } __inline ULONG StorPortAcquireMSISpinLock( PVOID p1, ULONG p2, PULONG p3 ) { return( StorPortExtendedFunction( ExtFunctionAcquireMSISpinLock, p1, p2, p3 ) ); } __inline ULONG StorPortReleaseMSISpinLock( PVOID p1, ULONG p2, ULONG p3 ) { return( StorPortExtendedFunction( ExtFunctionReleaseMSISpinLock, p1, p2, p3 ) ); } __inline ULONG StorPortGetMSIInfo( PVOID p1, ULONG p2, PMESSAGE_INTERRUPT_INFORMATION p3 ) { return( StorPortExtendedFunction( ExtFunctionGetMessageInterruptInformation, p1, p2, p3 ) ); } __inline ULONG StorPortInitializePerfOpts( PVOID p1, BOOLEAN p2, PPERF_CONFIGURATION_DATA p3 ) { return( StorPortExtendedFunction( ExtFunctionInitializePerformanceOptimizations, p1, p2, p3 ) ); } __inline ULONG StorPortGetStartIoPerfParams( PVOID p1, PSCSI_REQUEST_BLOCK p2, PSTARTIO_PERFORMANCE_PARAMETERS p3 ) { return( StorPortExtendedFunction( ExtFunctionGetStartIoPerformanceParameters, p1, p2, p3 ) ); } __inline ULONG StorPortLogSystemEvent( PVOID p1, PSTOR_LOG_EVENT_DETAILS p2, PULONG p3 ) { return( StorPortExtendedFunction( ExtFunctionLogSystemEvent, p1, p2, p3 ) ); } __inline ULONG StorPortGetCurrentProcessorNumber( PVOID p1, PPROCESSOR_NUMBER p2 ) { return( StorPortExtendedFunction( ExtFunctionGetCurrentProcessorNumber, p1, p2 ) ); } __inline ULONG StorPortGetGroupAffinity( PVOID p1, USHORT p2, PKAFFINITY p3 ) { return( StorPortExtendedFunction( ExtFunctionGetGroupAffinity, p1, p2, p3 ) ); } __inline ULONG StorPortGetActiveGroupCount( PVOID p1, PUSHORT p2 ) { return( StorPortExtendedFunction( ExtFunctionGetActiveGroupCount, p1, p2 ) ); } __inline ULONG StorPortGetNodeAffinity( PVOID p1, ULONG p2, PGROUP_AFFINITY p3 ) { return( StorPortExtendedFunction( ExtFunctionGetNodeAffinity, p1, p2, p3 ) ); } __inline ULONG StorPortGetActiveNodeCount( PVOID p1, PULONG p2 ) { return( StorPortExtendedFunction( ExtFunctionGetActiveNodeCount, p1, p2 ) ); } __inline ULONG StorPortGetHighestNodeNumber( PVOID p1, PULONG p2 ) { return( StorPortExtendedFunction( ExtFunctionGetHighestNodeNumber, p1, p2 ) ); } __inline ULONG StorPortGetLogicalProcessorRelationship( PVOID p1, PPROCESSOR_NUMBER p2, LOGICAL_PROCESSOR_RELATIONSHIP p3, PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX p4, PULONG p5 ) { return( StorPortExtendedFunction( ExtFunctionGetLogicalProcessorRelationship, p1, p2, p3, p4, p5 ) ); } __inline ULONG StorPortAllocateContiguousMemorySpecifyCacheNode( PVOID p1, SIZE_T p2, PHYSICAL_ADDRESS p3, PHYSICAL_ADDRESS p4, PHYSICAL_ADDRESS p5, MEMORY_CACHING_TYPE p6, NODE_REQUIREMENT p7, PVOID *p8 ) { return( StorPortExtendedFunction( ExtFunctionAllocateContiguousMemorySpecifyCacheNode, p1, p2, p3, p4, p5, p6, p7, p8 ) ); } __inline ULONG StorPortFreeContiguousMemorySpecifyCache( PVOID p1, PVOID p2, SIZE_T p3, MEMORY_CACHING_TYPE p4 ) { return( StorPortExtendedFunction( ExtFunctionFreeContiguousMemorySpecifyCache, p1, p2, p3, p4 ) ); } #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _NTSTORPORT_ */