Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Before Posting...
Please check out the Community Guidelines in the Announcements and Administration Category.

Storport driver HwFindAdapter.

OSR_Community_UserOSR_Community_User Member Posts: 110,217
Hello All,
Hi All,
I am modifying the Virtual miniport driver code into a storport miniport driver for a commerically available SAS HBA.

The following two steps work as expected:
1. INF file modification according to the hardware details - the driver files get installed on Win 7 and Windows registry reflects the correct details.
2. Driver entry routine is called and returns success.


Issues and questions:
1. For HwFindAdapter(), function has been modified to look like below:-
HwFindAdapter(IN PVOID PDevExt,
IN PVOID PHwContext,
IN PVOID PBusInformation,
IN PCHAR PArgumentString,
IN OUT PPORT_CONFIGURATION_INFORMATION PConfigInfo,
IN PBOOLEAN PBAgain)

Values filled in as reported by WinDbg is shown below:
HwFindAdapter(void * PDevExt = 0x8d19b00c,
void * PHwContext = 0x00000000,
void * PBusInformation = 0x00000000,
char * PArgumentString = 0x8d19bd28 "PlaceHolder=0;",
struct _PORT_CONFIGURATION_INFORMATION * PConfigInfo = 0x8d193a88,
unsigned char * PBAgain = 0x80786683 "")



Questions:
1) What can cause PHwContext, PBusInformation values to be 0x00000? How can I fix it?

2) IoRegisterdeviceInterface() at the end of HwFindAdapter function is failing since. PHwContext is 0x00000
The call is modified to be :
status = IoRegisterDeviceInterface((PDEVICE_OBJECT) PHwContext, &GUID_DEVCLASS_SCSIADAPTER,NULL,&pDevExt->DeviceInterface);

3) Since it is a commecial HBA, how do I get the memory map and capabilities values from the BAR.
I am getting BAR as follows:
pDevExt->RegisterBase =
(unsigned int *)StorPortGetDeviceBase(pDevExt,
PConfigInfo->AdapterInterfaceType,
PConfigInfo->SystemIoBusNumber,
AccessRange->RangeStart,
AccessRange->RangeLength,
(BOOLEAN)!AccessRange->RangeInMemory);
pDevExt->RegisterBasePhys = AccessRange->RangeStart.LowPart;

How can I get HBA capabilities from this?

Thanks for your help.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Upcoming OSR Seminars
Developing Minifilters 29 July 2019 OSR Seminar Space
Writing WDF Drivers 23 Sept 2019 OSR Seminar Space
Kernel Debugging 21 Oct 2019 OSR Seminar Space
Internals & Software Drivers 18 Nov 2019 Dulles, VA