29 DPRINT1(
"InitializeConfiguration(%p %p %lu %lu)\n",
40 PortConfig->SystemIoBusNumber =
BusNumber;
42 PortConfig->AdapterInterfaceType = InitData->AdapterInterfaceType;
44 PortConfig->MaximumTransferLength = -1;
45 PortConfig->DmaChannel = -1;
46 PortConfig->DmaPort = -1;
50 PortConfig->Master =
TRUE;
53 PortConfig->Dma32BitAddresses =
TRUE;
54 PortConfig->DemandMode =
FALSE;
55 PortConfig->MapBuffers = InitData->MapBuffers;
57 PortConfig->NeedPhysicalAddresses =
TRUE;
58 PortConfig->TaggedQueuing =
TRUE;
59 PortConfig->AutoRequestSense =
TRUE;
60 PortConfig->MultipleRequestPerLu =
TRUE;
61 PortConfig->ReceiveEvent = InitData->ReceiveEvent;
62 PortConfig->RealModeInitialized =
FALSE;
63 PortConfig->BufferAccessScsiPortControlled =
TRUE;
64 PortConfig->MaximumNumberOfTargets = 128;
66 PortConfig->SpecificLuExtensionSize = InitData->SpecificLuExtensionSize;
67 PortConfig->SrbExtensionSize = InitData->SrbExtensionSize;
68 PortConfig->MaximumNumberOfLogicalUnits = 1;
69 PortConfig->WmiDataProvider =
TRUE;
71 PortConfig->NumberOfAccessRanges = InitData->NumberOfAccessRanges;
72 DPRINT1(
"NumberOfAccessRanges: %lu\n", PortConfig->NumberOfAccessRanges);
73 if (PortConfig->NumberOfAccessRanges != 0)
78 if (PortConfig->AccessRanges ==
NULL)
82 PortConfig->NumberOfAccessRanges *
sizeof(
ACCESS_RANGE));
85 for (
i = 0;
i < 7;
i++)
86 PortConfig->InitiatorBusId[
i] = 0xff;
106 DPRINT1(
"AssignResourceToConfiguration(%p %p %lu)\n",
114 for (
j = 0;
j < PartialResourceList->
Count;
j++)
118 switch (PartialDescriptor->
Type)
121 DPRINT1(
"Port: 0x%I64x (0x%lx)\n",
122 PartialDescriptor->
u.
Port.Start.QuadPart,
123 PartialDescriptor->
u.
Port.Length);
124 if (RangeNumber < NumberOfAccessRanges)
126 AccessRange = &((*(PortConfiguration->AccessRanges))[RangeNumber]);
135 DPRINT1(
"Memory: 0x%I64x (0x%lx)\n",
136 PartialDescriptor->
u.
Memory.Start.QuadPart,
137 PartialDescriptor->
u.
Memory.Length);
138 if (RangeNumber < NumberOfAccessRanges)
140 AccessRange = &((*(PortConfiguration->AccessRanges))[RangeNumber]);
149 DPRINT1(
"Interrupt: Level %lu Vector %lu\n",
155 PortConfiguration->BusInterruptLevel = PartialDescriptor->
u.
Interrupt.Level;
156 PortConfiguration->BusInterruptVector = PartialDescriptor->
u.
Interrupt.Vector;
161 PortConfiguration->InterruptMode =
Latched;
171 PortConfiguration->BusInterruptLevel2 = PartialDescriptor->
u.
Interrupt.Level;
172 PortConfiguration->BusInterruptVector2 = PartialDescriptor->
u.
Interrupt.Vector;
177 PortConfiguration->InterruptMode2 =
Latched;
188 DPRINT1(
"Dma: Channel: %lu Port: %lu\n",
189 PartialDescriptor->
u.
Dma.Channel,
190 PartialDescriptor->
u.
Dma.Port);
193 PortConfiguration->DmaChannel = PartialDescriptor->
u.
Dma.Channel;
194 PortConfiguration->DmaPort = PartialDescriptor->
u.
Dma.Port;
206 PortConfiguration->DmaChannel2 = PartialDescriptor->
u.
Dma.Channel;
207 PortConfiguration->DmaPort2 = PartialDescriptor->
u.
Dma.Port;
243 DPRINT1(
"MiniportInitialize(%p %p %p)\n",
244 Miniport, DeviceExtension, InitData);
246 Miniport->DeviceExtension = DeviceExtension;
247 Miniport->InitData = InitData;
251 Miniport->InitData->DeviceExtensionSize;
257 if (MiniportExtension ==
NULL)
262 MiniportExtension->
Miniport = Miniport;
263 Miniport->MiniportExtension = MiniportExtension;
268 DeviceExtension->BusNumber,
269 DeviceExtension->SlotNumber);
275 DeviceExtension->AllocatedResources,
276 InitData->NumberOfAccessRanges);
290 DPRINT1(
"MiniportFindAdapter(%p)\n", Miniport);
293 Result = Miniport->InitData->HwFindAdapter(&Miniport->MiniportExtension->HwDeviceExtension,
297 &Miniport->PortConfig,
305 DPRINT1(
"SP_RETURN_NOT_FOUND\n");
320 DPRINT1(
"SP_RETURN_BAD_CONFIG\n");
340 DPRINT1(
"MiniportHwInitialize(%p)\n", Miniport);
343 Result = Miniport->InitData->HwInitialize(&Miniport->MiniportExtension->HwDeviceExtension);
356 DPRINT1(
"MiniportHwInterrupt(%p)\n",
359 Result = Miniport->InitData->HwInterrupt(&Miniport->MiniportExtension->HwDeviceExtension);
373 DPRINT1(
"MiniportHwStartIo(%p %p)\n",
376 Result = Miniport->InitData->HwStartIo(&Miniport->MiniportExtension->HwDeviceExtension,
Srb);
#define TAG_MINIPORT_DATA
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
#define CM_RESOURCE_DMA_16
_In_ PSCSI_REQUEST_BLOCK Srb
PCONFIGURATION_INFORMATION NTAPI IoGetConfigurationInformation(VOID)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
IN PVOID IN PVOID IN USHORT IN USHORT Size
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@386 Memory
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@383 Port
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
#define CmResourceTypePort
NTSTATUS MiniportInitialize(_In_ PMINIPORT Miniport, _In_ PFDO_DEVICE_EXTENSION DeviceExtension, _In_ PHW_INITIALIZATION_DATA InitData)
#define STATUS_INTERNAL_ERROR
CM_PARTIAL_RESOURCE_LIST PartialResourceList
BOOLEAN MiniportStartIo(_In_ PMINIPORT Miniport, _In_ PSCSI_REQUEST_BLOCK Srb)
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@387 Dma
struct _CM_FULL_RESOURCE_DESCRIPTOR * PCM_FULL_RESOURCE_DESCRIPTOR
#define CM_RESOURCE_DMA_32
#define CM_RESOURCE_DMA_8_AND_16
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define TAG_ACCRESS_RANGE
_Reserved_ PVOID Reserved
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define NT_SUCCESS(StatCode)
NTSTATUS MiniportHwInitialize(_In_ PMINIPORT Miniport)
#define SP_RETURN_NOT_FOUND
BOOLEAN MiniportHwInterrupt(_In_ PMINIPORT Miniport)
struct _MINIPORT * Miniport
SCSI_PHYSICAL_ADDRESS RangeStart
#define STATUS_UNSUCCESSFUL
#define ExAllocatePoolWithTag(hernya, size, tag)
struct _PORT_CONFIGURATION_INFORMATION PORT_CONFIGURATION_INFORMATION
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
#define CM_RESOURCE_DMA_8
NTSTATUS MiniportFindAdapter(_In_ PMINIPORT Miniport)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static VOID AssignResourcesToConfiguration(_In_ PPORT_CONFIGURATION_INFORMATION PortConfiguration, _In_ PCM_RESOURCE_LIST ResourceList, _In_ ULONG NumberOfAccessRanges)
static NTSTATUS InitializeConfiguration(_In_ PPORT_CONFIGURATION_INFORMATION PortConfig, _In_ PHW_INITIALIZATION_DATA InitData, _In_ ULONG BusNumber, _In_ ULONG SlotNumber)
#define SP_RETURN_BAD_CONFIG
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define CmResourceTypeInterrupt
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@384 Interrupt
#define CM_RESOURCE_INTERRUPT_LATCHED
#define RtlZeroMemory(Destination, Length)
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381 u
#define STATUS_ADAPTER_HARDWARE_ERROR
#define CmResourceTypeMemory
#define STATUS_DEVICE_CONFIGURATION_ERROR
#define CmResourceTypeDma
struct _MINIPORT_DEVICE_EXTENSION MINIPORT_DEVICE_EXTENSION