StorPortGetMSIInfo ...

Ok, the documentation for HwMSInterruptRoutine says that it is called at
DIRQL for the only two valid InterruptSynchronizationMode values. It also
says that a miniport can get additional information about the MessageID by
calling StorPortGetMSIInfo. The documentation for StorPortGetMSIInfo
states that it must be called at IRQL <= DISPATCH_LEVEL, making the
function virtually useless.

Is there some way other than calling StorPortGetMSIInfo to find out which
of my vectors got called?

What is the MessageID anyway?

Thanks.

Jerry.

The MessageID is the information about which of your vectors got called.


Jake Oshins
Hyper-V I/O Architect
Windows Kernel Group

This post implies no warranties and confers no rights.


wrote in message news:xxxxx@ntdev…

Ok, the documentation for HwMSInterruptRoutine says that it is called at
DIRQL for the only two valid InterruptSynchronizationMode values. It also
says that a miniport can get additional information about the MessageID by
calling StorPortGetMSIInfo. The documentation for StorPortGetMSIInfo states
that it must be called at IRQL <= DISPATCH_LEVEL, making the function
virtually useless.

Is there some way other than calling StorPortGetMSIInfo to find out which of
my vectors got called?

What is the MessageID anyway?

Thanks.

Jerry.

Specifically, MessageId is a 0-based index into the table of messages for your device. You probably only need to call StorPortGetMSIInfo during your HwStorInitialization function to retrieve all of the relevant data for your assigned messages. (To retrieve them all, start at ID 0 and continue until the function returns STOR_STATUS_INVALID_PARAMETER.) I wouldn’t expect that you’d need to call StorPortGetMSIInfo from your interrupt handler.

– Keith

Ok, Thanks, Jake, but … how does one interpret the thing? Like is it my
vector number or what? Without anything in the documentation describing
it, I would just take it to be something like a “handle.”

“Jake Oshins”
Sent by: xxxxx@lists.osr.com
08/06/2009 01:24 PM
Please respond to
“Windows System Software Devs Interest List”

To
“Windows System Software Devs Interest List”
cc

Subject
Re:[ntdev] StorPortGetMSIInfo …

The MessageID is the information about which of your vectors got called.


Jake Oshins
Hyper-V I/O Architect
Windows Kernel Group

This post implies no warranties and confers no rights.

--------------------------------------------------------------

wrote in message news:xxxxx@ntdev…

Ok, the documentation for HwMSInterruptRoutine says that it is called at
DIRQL for the only two valid InterruptSynchronizationMode values. It also

says that a miniport can get additional information about the MessageID by

calling StorPortGetMSIInfo. The documentation for StorPortGetMSIInfo
states
that it must be called at IRQL <= DISPATCH_LEVEL, making the function
virtually useless.

Is there some way other than calling StorPortGetMSIInfo to find out which
of
my vectors got called?

What is the MessageID anyway?

Thanks.

Jerry.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Ok, thanks, Keith, that was what I was looking for. Is that in the
documentatiion someplace?

xxxxx@microsoft.com
Sent by: xxxxx@lists.osr.com
08/06/2009 02:11 PM
Please respond to
“Windows System Software Devs Interest List”

To
“Windows System Software Devs Interest List”
cc

Subject
RE:[ntdev] StorPortGetMSIInfo …

Specifically, MessageId is a 0-based index into the table of messages for
your device. You probably only need to call StorPortGetMSIInfo during your
HwStorInitialization function to retrieve all of the relevant data for
your assigned messages. (To retrieve them all, start at ID 0 and continue
until the function returns STOR_STATUS_INVALID_PARAMETER.) I wouldn’t
expect that you’d need to call StorPortGetMSIInfo from your interrupt
handler.

– Keith


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Unfortunately, I don’t believe the documentation is sufficient for most folks to surmise this, so I totally understand why you reached the wrong conclusion. If you are so inclined, you’re welcome to send feedback to the WDK doc team via the feedback links in the WDK docs. Please be gentle. :slight_smile:

– Keith

Keith,

Unfortunately the HwStorInitialization is called at DIRQL, so by
documentation we cannot use StorPortGetMSIInfo API. Alternatively we shall
try to call this API in HwStorPassiveInitialize!

But (from my understanding), HwStorPassiveInitialize will not be invoked all
times, like during crash-dump path. So in such case, is the Windows storport
miniport drivers cannot use MSI(X) interrupts?

Kindly clarify this.

Thanks,
T.V.Gokul.

On Thu, Aug 6, 2009 at 11:32 PM, wrote:

> Specifically, MessageId is a 0-based index into the table of messages for
> your device. You probably only need to call StorPortGetMSIInfo during your
> HwStorInitialization function to retrieve all of the relevant data for your
> assigned messages. (To retrieve them all, start at ID 0 and continue until
> the function returns STOR_STATUS_INVALID_PARAMETER.) I wouldn’t expect that
> you’d need to call StorPortGetMSIInfo from your interrupt handler.
>
> – Keith
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

It is probably a good idea to run your dump driver in legacy interrupt
mode. StorExtGetMessageInterruptInformation isn’t defined in the dump
driver, StorPortNotification( GetExtendedFunctionTable …) is going
to fail in your dump driver so there won’t be a
GetMessageInterruptInformation storport extension. There also aren’t
actually any interrupts :slight_smile:

Mark Roddy

On Thu, Aug 13, 2009 at 8:06 AM, Gokul TV wrote:
> Keith,
>
> Unfortunately the HwStorInitialization is called at DIRQL, so by
> documentation we cannot use StorPortGetMSIInfo API. Alternatively we shall
> try to call this API in HwStorPassiveInitialize!
>
> But (from my understanding), HwStorPassiveInitialize will not be invoked all
> times, like during crash-dump path. So in such case, is the Windows storport
> miniport drivers cannot use MSI(X) interrupts?
>
> Kindly clarify this.
>
> Thanks,
> T.V.Gokul.
>
>
> On Thu, Aug 6, 2009 at 11:32 PM, wrote:
>>
>> Specifically, MessageId is a 0-based index into the table of messages for
>> your device. You probably only need to call StorPortGetMSIInfo during your
>> HwStorInitialization function to retrieve all of the relevant data for your
>> assigned messages. (To retrieve them all, start at ID 0 and continue until
>> the function returns STOR_STATUS_INVALID_PARAMETER.) I wouldn’t expect that
>> you’d need to call StorPortGetMSIInfo from your interrupt handler.
>>
>> – Keith
>>
>> —
>> NTDEV is sponsored by OSR
>>
>> For our schedule of WDF, WDM, debugging and other seminars visit:
>> http://www.osr.com/seminars
>>
>> To unsubscribe, visit the List Server section of OSR Online at
>> http://www.osronline.com/page.cfm?name=ListServer
>
> — NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and
> other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the
> List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer

Furthermore, it isn’t actually possible to run a storage driver with MSI in
the crash path. Crashdump/hibernate run in polled mode, which is
accomplished by invoking your level-triggered ISR repeatedly in a loop. No
actual interrupts can be generated, as this code runs with interrupts
disabled. (Can you imagine trying to take a snapshot of the system with
interrupts enabled?)


Jake Oshins
Hyper-V I/O Architect (former hibernation guy)
Windows Kernel Group

This post implies no warranties and confers no rights.


“Mark Roddy” wrote in message news:xxxxx@ntdev…
> It is probably a good idea to run your dump driver in legacy interrupt
> mode. StorExtGetMessageInterruptInformation isn’t defined in the dump
> driver, StorPortNotification( GetExtendedFunctionTable …) is going
> to fail in your dump driver so there won’t be a
> GetMessageInterruptInformation storport extension. There also aren’t
> actually any interrupts :slight_smile:
>
>
> Mark Roddy
>
>
>
> On Thu, Aug 13, 2009 at 8:06 AM, Gokul TV wrote:
>> Keith,
>>
>> Unfortunately the HwStorInitialization is called at DIRQL, so by
>> documentation we cannot use StorPortGetMSIInfo API. Alternatively we
>> shall
>> try to call this API in HwStorPassiveInitialize!
>>
>> But (from my understanding), HwStorPassiveInitialize will not be invoked
>> all
>> times, like during crash-dump path. So in such case, is the Windows
>> storport
>> miniport drivers cannot use MSI(X) interrupts?
>>
>> Kindly clarify this.
>>
>> Thanks,
>> T.V.Gokul.
>>
>>
>> On Thu, Aug 6, 2009 at 11:32 PM, wrote:
>>>
>>> Specifically, MessageId is a 0-based index into the table of messages
>>> for
>>> your device. You probably only need to call StorPortGetMSIInfo during
>>> your
>>> HwStorInitialization function to retrieve all of the relevant data for
>>> your
>>> assigned messages. (To retrieve them all, start at ID 0 and continue
>>> until
>>> the function returns STOR_STATUS_INVALID_PARAMETER.) I wouldn’t expect
>>> that
>>> you’d need to call StorPortGetMSIInfo from your interrupt handler.
>>>
>>> – Keith
>>>
>>> —
>>> NTDEV is sponsored by OSR
>>>
>>> For our schedule of WDF, WDM, debugging and other seminars visit:
>>> http://www.osr.com/seminars
>>>
>>> To unsubscribe, visit the List Server section of OSR Online at
>>> http://www.osronline.com/page.cfm?name=ListServer
>>
>> — NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and
>> other seminars visit: http://www.osr.com/seminars To unsubscribe, visit
>> the
>> List Server section of OSR Online at
>> http://www.osronline.com/page.cfm?name=ListServer
>

Thanks Jake and Keith for the information!

May be its good idea to add this, in storport miniport documentation. I’ll
do my part, by giving MSDN doc feedback :slight_smile:

Regards,
T.V.Gokul.