DriverEntry ambiguity

SCSI miniports are portable to Win9x, and, in Win9x, the 2 DriverEntry arguments of a miniport can have some other values then DriverObject/RegistryPath.

The SCSI miniport must not ever attempt to interpret them, it must only pass them to ScsiPortInitialize.

Another notation is used as a hint “never interpret them in a SCSI miniport”.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: D M
To: Windows System Software Devs Interest List
Sent: Monday, August 29, 2005 2:52 PM
Subject: [ntdev] DriverEntry ambiguity

Can some pne please tell me why DriverEntry( ) has two signatures.

  1. being the deviceobject and hte registry path
  2. being both arg1 and arg2 as PVOIDs?

It is the SCSI requires some special initialization, as I saw the second type used with MiniPorts.

D M

— Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256 You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’ To unsubscribe send a blank email to xxxxx@lists.osr.com

this might be off topic, but could one of the parameters in driverentry be a
function pointer, or a data structure that has a function pointer, that
windows uses in *ScsiPortInitialize

*
On 8/29/05, Maxim S. Shatskih wrote:
>
> SCSI miniports are portable to Win9x, and, in Win9x, the 2 DriverEntry
> arguments of a miniport can have some other values then
> DriverObject/RegistryPath.
> The SCSI miniport must not ever attempt to interpret them, it must only
> pass them to ScsiPortInitialize.
> Another notation is used as a hint “never interpret them in a SCSI
> miniport”.
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
> ----- Original Message -----
> From: D M
> To: Windows System Software Devs Interest List
> Sent: Monday, August 29, 2005 2:52 PM
> Subject: [ntdev] DriverEntry ambiguity
>
> Can some pne please tell me why DriverEntry( ) has two signatures.
>
> 1. being the deviceobject and hte registry path
> 2. being both arg1 and arg2 as PVOIDs?
>
>
> It is the SCSI requires some special initialization, as I saw the second
> type used with MiniPorts.
>
> D M
>
>
>
> http:
> — Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256 You are currently subscribed
> to ntdev as: unknown lmsubst tag argument: ‘’ To unsubscribe send a blank
> email to %%email.unsub%%
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
>
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>



- Developer</http:>

Think about it. If you look at SCSIPORT and its miniport you will see a normal, inside out device driver. The miniport, the inside part, loads first and therefore has the DriverEntry routine. When it calls ScsiPortInitialize, the SCSIPORT dll is loaded, linkages resolved and the DRIVER_OBJECT is hooked with the DISPATCH function calls and the ADD_DEVICE routine. When AddDevice is called, if every thing is copasetic, you will see your FindAdapter callback. The two PVOIDS in DriverEntry become a PDRIVER_OBJECT and PUNICODE_STRING since ScsiPortInitialize provides the DriverEntry functionality for a SCSI miniport.


The personal opinion of
Gary G. Little

“Developer” wrote in message news:xxxxx@ntdev…
this might be off topic, but could one of the parameters in driverentry be a function pointer, or a data structure that has a function pointer, that windows uses in ScsiPortInitialize

On 8/29/05, Maxim S. Shatskih wrote:
SCSI miniports are portable to Win9x, and, in Win9x, the 2 DriverEntry arguments of a miniport can have some other values then DriverObject/RegistryPath.

The SCSI miniport must not ever attempt to interpret them, it must only pass them to ScsiPortInitialize.

Another notation is used as a hint “never interpret them in a SCSI miniport”.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: D M
To: Windows System Software Devs Interest List
Sent: Monday, August 29, 2005 2:52 PM
Subject: [ntdev] DriverEntry ambiguity

Can some pne please tell me why DriverEntry( ) has two signatures.

1. being the deviceobject and hte registry path
2. being both arg1 and arg2 as PVOIDs?

It is the SCSI requires some special initialization, as I saw the second type used with MiniPorts.

D M

— Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256 You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’ To unsubscribe send a blank email to %%email.unsub%%


Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com



- Developer

Gary,

Thanks for the wonderful explanation of flow of code. Unfortunately, the
only miniport code I have studied is ini910u.c and aha154x.c from the DDK
samples. I observed that the many parameters passed to FindAdapter, the
samples ignored most of them. The prototype of FindAdapter is

FindAdapter(
IN PVOID HwDeviceExtension,
IN PVOID Context,
IN PVOID BusInformation,
IN PCHAR ArgumentString,
IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo,
OUT PBOOLEAN Again)

the skeleton driver never used ArgumentString ?

What is the usage of these parameters???

On 8/29/05, Gary G. Little wrote:
>
> Think about it. If you look at SCSIPORT and its miniport you will see a
> normal, inside out device driver. The miniport, the inside part, loads first
> and therefore has the DriverEntry routine. When it calls ScsiPortInitialize,
> the SCSIPORT dll is loaded, linkages resolved and the DRIVER_OBJECT is
> hooked with the DISPATCH function calls and the ADD_DEVICE routine. When
> AddDevice is called, if every thing is copasetic, you will see your
> FindAdapter callback. The two PVOIDS in DriverEntry become a PDRIVER_OBJECT
> and PUNICODE_STRING since ScsiPortInitialize provides the DriverEntry
> functionality for a SCSI miniport.
>
> –
> The personal opinion of
> Gary G. Little
> “Developer” wrote in message news:xxxxx@ntdev…
>
> this might be off topic, but could one of the parameters in driverentry be
> a function pointer, or a data structure that has a function pointer, that
> windows uses in *ScsiPortInitialize
>
>
>
>
> *
> On 8/29/05, Maxim S. Shatskih wrote:
> >
> > SCSI miniports are portable to Win9x, and, in Win9x, the 2 DriverEntry
> > arguments of a miniport can have some other values then
> > DriverObject/RegistryPath.
> > The SCSI miniport must not ever attempt to interpret them, it must
> > only pass them to ScsiPortInitialize.
> > Another notation is used as a hint “never interpret them in a SCSI
> > miniport”.
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> > ----- Original Message -----
> > From: D M
> > To: Windows System Software Devs Interest List
> > Sent: Monday, August 29, 2005 2:52 PM
> > Subject: [ntdev] DriverEntry ambiguity
> >
> > Can some pne please tell me why DriverEntry( ) has two signatures.
> >
> > 1. being the deviceobject and hte registry path
> > 2. being both arg1 and arg2 as PVOIDs?
> >
> >
> > It is the SCSI requires some special initialization, as I saw the second
> > type used with MiniPorts.
> >
> > D M
> >
> >
> > http:
> > — Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
> > You are currently subscribed to ntdev as: unknown lmsubst tag argument:
> > ‘’ To unsubscribe send a blank email to %%email.unsub%%
> >
> >
> > —
> > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: unknown lmsubst tag argument:
> > ‘’
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
>
>
>
> –
>
> - Developer
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
>
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>



- Developer</http:>

…just to clarify, ini910u.c ignores them, not aha154x.c

On 8/29/05, Developer wrote:
>
> Gary,
>
> Thanks for the wonderful explanation of flow of code. Unfortunately, the
> only miniport code I have studied is ini910u.c and aha154x.c from the DDK
> samples. I observed that the many parameters passed to FindAdapter, the
> samples ignored most of them. The prototype of FindAdapter is
>
> FindAdapter(
> IN PVOID HwDeviceExtension,
> IN PVOID Context,
> IN PVOID BusInformation,
> IN PCHAR ArgumentString,
> IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo,
> OUT PBOOLEAN Again)
>
> the skeleton driver never used ArgumentString ?
>
> What is the usage of these parameters???
>
>
>
> On 8/29/05, Gary G. Little wrote:
> >
> > Think about it. If you look at SCSIPORT and its miniport you will see a
> > normal, inside out device driver. The miniport, the inside part, loads first
> > and therefore has the DriverEntry routine. When it calls ScsiPortInitialize,
> > the SCSIPORT dll is loaded, linkages resolved and the DRIVER_OBJECT is
> > hooked with the DISPATCH function calls and the ADD_DEVICE routine. When
> > AddDevice is called, if every thing is copasetic, you will see your
> > FindAdapter callback. The two PVOIDS in DriverEntry become a PDRIVER_OBJECT
> > and PUNICODE_STRING since ScsiPortInitialize provides the DriverEntry
> > functionality for a SCSI miniport.
> >
> > –
> > The personal opinion of
> > Gary G. Little
> > “Developer” wrote in message news:xxxxx@ntdev
> > …
> >
> > this might be off topic, but could one of the parameters in driverentry
> > be a function pointer, or a data structure that has a function pointer, that
> > windows uses in *ScsiPortInitialize
> >
> >
> >
> >
> > *
> > On 8/29/05, Maxim S. Shatskih wrote:
> > >
> > > SCSI miniports are portable to Win9x, and, in Win9x, the 2
> > > DriverEntry arguments of a miniport can have some other values then
> > > DriverObject/RegistryPath.
> > > The SCSI miniport must not ever attempt to interpret them, it must
> > > only pass them to ScsiPortInitialize.
> > > Another notation is used as a hint “never interpret them in a SCSI
> > > miniport”.
> > > Maxim Shatskih, Windows DDK MVP
> > > StorageCraft Corporation
> > > xxxxx@storagecraft.com
> > > http://www.storagecraft.com
> > >
> > > ----- Original Message -----
> > > From: D M
> > > To: Windows System Software Devs Interest List
> > > Sent: Monday, August 29, 2005 2:52 PM
> > > Subject: [ntdev] DriverEntry ambiguity
> > >
> > > Can some pne please tell me why DriverEntry( ) has two signatures.
> > >
> > > 1. being the deviceobject and hte registry path
> > > 2. being both arg1 and arg2 as PVOIDs?
> > >
> > >
> > > It is the SCSI requires some special initialization, as I saw the
> > > second type used with MiniPorts.
> > >
> > > D M
> > >
> > >
> > >
> > > http:
> > > — Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
> > > You are currently subscribed to ntdev as: unknown lmsubst tag
> > > argument: ‘’ To unsubscribe send a blank email to %%email.unsub%%
> > >
> > >
> > > —
> > > Questions? First check the Kernel Driver FAQ at
> > > http://www.osronline.com/article.cfm?id=256
> > >
> > > You are currently subscribed to ntdev as: unknown lmsubst tag
> > > argument: ‘’
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com
> > >
> >
> >
> >
> > –
> >
> > - Developer
> >
> >
> > —
> > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: unknown lmsubst tag argument:
> > ‘’
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
>
>
>
> –
>
> - Developer



- Developer</http:>

ArgumentString allows you to pass a text string from the Registry Key “Parameters” to your miniport. I think, it’s been 3 years since I used it and I’m flying strictly from memory, the path is HKLM\CurrentControlSet\Services<yourmp>\Parameters.


The personal opinion of
Gary G. Little
“Developer” wrote in message news:xxxxx@ntdev…
…just to clarify, ini910u.c ignores them, not aha154x.c

On 8/29/05, Developer wrote:
Gary,

Thanks for the wonderful explanation of flow of code. Unfortunately, the only miniport code I have studied is ini910u.c and aha154x.c from the DDK samples. I observed that the many parameters passed to FindAdapter, the samples ignored most of them. The prototype of FindAdapter is

FindAdapter(
IN PVOID HwDeviceExtension,
IN PVOID Context,
IN PVOID BusInformation,
IN PCHAR ArgumentString,
IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo,
OUT PBOOLEAN Again)

the skeleton driver never used ArgumentString ?

What is the usage of these parameters???

On 8/29/05, Gary G. Little wrote:
Think about it. If you look at SCSIPORT and its miniport you will see a normal, inside out device driver. The miniport, the inside part, loads first and therefore has the DriverEntry routine. When it calls ScsiPortInitialize, the SCSIPORT dll is loaded, linkages resolved and the DRIVER_OBJECT is hooked with the DISPATCH function calls and the ADD_DEVICE routine. When AddDevice is called, if every thing is copasetic, you will see your FindAdapter callback. The two PVOIDS in DriverEntry become a PDRIVER_OBJECT and PUNICODE_STRING since ScsiPortInitialize provides the DriverEntry functionality for a SCSI miniport.


The personal opinion of
Gary G. Little

“Developer” wrote in message news:xxxxx@ntdev…
this might be off topic, but could one of the parameters in driverentry be a function pointer, or a data structure that has a function pointer, that windows uses in ScsiPortInitialize

On 8/29/05, Maxim S. Shatskih wrote:
SCSI miniports are portable to Win9x, and, in Win9x, the 2 DriverEntry arguments of a miniport can have some other values then DriverObject/RegistryPath.

The SCSI miniport must not ever attempt to interpret them, it must only pass them to ScsiPortInitialize.

Another notation is used as a hint “never interpret them in a SCSI miniport”.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: D M
To: Windows System Software Devs Interest List
Sent: Monday, August 29, 2005 2:52 PM
Subject: [ntdev] DriverEntry ambiguity

Can some pne please tell me why DriverEntry( ) has two signatures.

1. being the deviceobject and hte registry path
2. being both arg1 and arg2 as PVOIDs?

It is the SCSI requires some special initialization, as I saw the second type used with MiniPorts.

D M

— Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256 You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’ To unsubscribe send a blank email to %%email.unsub%%


Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com



- Developer


Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com



- Developer



- Developer

ArgumentString is some registry value.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com
----- Original Message -----
From: Developer
To: Windows System Software Devs Interest List
Sent: Monday, August 29, 2005 7:07 PM
Subject: Re: [ntdev] DriverEntry ambiguity

Gary,

Thanks for the wonderful explanation of flow of code. Unfortunately, the only miniport code I have studied is ini910u.c and aha154x.c from the DDK samples. I observed that the many parameters passed to FindAdapter, the samples ignored most of them. The prototype of FindAdapter is

FindAdapter(
IN PVOID HwDeviceExtension,
IN PVOID Context,
IN PVOID BusInformation,
IN PCHAR ArgumentString,
IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo,
OUT PBOOLEAN Again)

the skeleton driver never used ArgumentString ?

What is the usage of these parameters???

On 8/29/05, Gary G. Little wrote:
Think about it. If you look at SCSIPORT and its miniport you will see a normal, inside out device driver. The miniport, the inside part, loads first and therefore has the DriverEntry routine. When it calls ScsiPortInitialize, the SCSIPORT dll is loaded, linkages resolved and the DRIVER_OBJECT is hooked with the DISPATCH function calls and the ADD_DEVICE routine. When AddDevice is called, if every thing is copasetic, you will see your FindAdapter callback. The two PVOIDS in DriverEntry become a PDRIVER_OBJECT and PUNICODE_STRING since ScsiPortInitialize provides the DriverEntry functionality for a SCSI miniport.


The personal opinion of
Gary G. Little

“Developer” wrote in message news:xxxxx@ntdev…
this might be off topic, but could one of the parameters in driverentry be a function pointer, or a data structure that has a function pointer, that windows uses in ScsiPortInitialize

On 8/29/05, Maxim S. Shatskih wrote:
SCSI miniports are portable to Win9x, and, in Win9x, the 2 DriverEntry arguments of a miniport can have some other values then DriverObject/RegistryPath.

The SCSI miniport must not ever attempt to interpret them, it must only pass them to ScsiPortInitialize.

Another notation is used as a hint “never interpret them in a SCSI miniport”.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: D M
To: Windows System Software Devs Interest List
Sent: Monday, August 29, 2005 2:52 PM
Subject: [ntdev] DriverEntry ambiguity

Can some pne please tell me why DriverEntry( ) has two signatures.

1. being the deviceobject and hte registry path
2. being both arg1 and arg2 as PVOIDs?

It is the SCSI requires some special initialization, as I saw the second type used with MiniPorts.

D M

— Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256 You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’ To unsubscribe send a blank email to %%email.unsub%%


Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com



- Developer


Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com



- Developer — Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256 You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’ To unsubscribe send a blank email to xxxxx@lists.osr.com