Problems with IoMapTransfer()

I am building a driver to run on Win2000 that communicates with a
BusMaster DMA device that has Scatter/Gather capabilities.

When I examine the value of map_registers_base that is passed to the
AdapterControl callback routine, I find that it is set to 0x00000000. This
appears to be an erroneous value. What could be causing this?
If I change the value of the ScatterGather field in the DeviceDescription,
from TRUE to FALSE, the value of map_registers_base passed to the
AdapterControl callback routine is then 0x85811BC9 (much nicer).
For both values of ScatterGather, IoMapTransfer seems to return a sensible
value for the physical address, but the value of Length gets set to 0,
which is clearly wrong. What might cause this?
I have made a call to MmGetMdlByteCount() to verify that the Mdl that I am
passing is as expected and has the expected length (1000 bytes). I have
verified that there should be map registers available
(NumberOfMapRegisters = 33).

It seems possible that the problem lies with the values that I am using to
populate the DeviceDescription (even though I pass NULL to IoMapTransfer
as the value for AdapterObject). I have found it hard to find detailed
descriptions of these fields. After a call to RtlZeroMemory(), I’m
currently making the following assignments.
DeviceDescription.Version = DEVICE_DESCRIPTION_VERSION;
DeviceDescription.Master = TRUE;
DeviceDescription.ScatterGather = TRUE; *See above*
DeviceDescription.DemandMode = FALSE;
DeviceDescription.AutoInitialize = FALSE;
DeviceDescription.Dma32BitAddresses = TRUE;
DeviceDescription.IgnoreCount = FALSE;
DeviceDescription.Reserved1 = FALSE;
DeviceDescription.Reserved2 = FALSE;
DeviceDescription.BusNumber = pUnit->BusNumber;
DeviceDescription.InterfaceType = PCIBus;
DeviceDescription.DmaWidth = Width16Bits;
DeviceDescription.MaximumLength = 128 * 1024;

Are any of these incorrect or are there any significant fields missing?
Where should I look for detailed documentation on the fields of the
DEVICE_DESCRIPTION structure (the NT DDK and Viscarola/Mason text do not
go into much detail)?

I have been able to perform transfers to and from buffers that were
created using HalAllocateCommonBuffer() but obviously that does not
require a Length variable to be set by IoMapTransfer().

Questions remain:

  1. Why does setting DeviceDescription.ScatterGather = TRUE cause a value
    for map_registers_base of 0x00000000 to be passed to the AdapterControl
    callback routine?
  2. Why does IoMapTransfer() set the Length parameter to 0?

Any help would be much appreciated,
Richard


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

  1. The zero value for MapRegisterBase is normal for 32-bit busmaster
    scatter/gather devices.

  2. The return value of zero for length is unusual, but perhaps you set this
    value on the way in?

  3. DmaWidth16Bits is I think WRONG for PCI devices, but it is probably
    ignored for these devices as well.

  4. For windows 2000 you should use the GetScatterGatherList interface
    instead of the MapTransfer interface. Much better interface for a lot of
    reasons, number one being that it hides all of this internal crapola that
    MapTransfer exposes.

Mark Roddy
xxxxx@hollistech.com
www.hollistech.com
WindowsNT Windows 2000 Consulting Services

-----Original Message-----
From: xxxxx@cix.co.uk [mailto:xxxxx@cix.co.uk]
Sent: Monday, January 22, 2001 12:38 PM
To: NT Developers Interest List
Cc: xxxxx@cix.co.uk
Subject: [ntdev] Problems with IoMapTransfer()

I am building a driver to run on Win2000 that communicates with a
BusMaster DMA device that has Scatter/Gather capabilities.

When I examine the value of map_registers_base that is passed to the
AdapterControl callback routine, I find that it is set to
0x00000000. This
appears to be an erroneous value. What could be causing this?
If I change the value of the ScatterGather field in the
DeviceDescription,
from TRUE to FALSE, the value of map_registers_base passed to the
AdapterControl callback routine is then 0x85811BC9 (much nicer).
For both values of ScatterGather, IoMapTransfer seems to
return a sensible
value for the physical address, but the value of Length gets
set to 0,
which is clearly wrong. What might cause this?
I have made a call to MmGetMdlByteCount() to verify that the
Mdl that I am
passing is as expected and has the expected length (1000
bytes). I have
verified that there should be map registers available
(NumberOfMapRegisters = 33).

It seems possible that the problem lies with the values that
I am using to
populate the DeviceDescription (even though I pass NULL to
IoMapTransfer
as the value for AdapterObject). I have found it hard to find
detailed
descriptions of these fields. After a call to RtlZeroMemory(), I’m
currently making the following assignments.
DeviceDescription.Version = DEVICE_DESCRIPTION_VERSION;
DeviceDescription.Master = TRUE;
DeviceDescription.ScatterGather = TRUE; *See above*
DeviceDescription.DemandMode = FALSE;
DeviceDescription.AutoInitialize = FALSE;
DeviceDescription.Dma32BitAddresses = TRUE;
DeviceDescription.IgnoreCount = FALSE;
DeviceDescription.Reserved1 = FALSE;
DeviceDescription.Reserved2 = FALSE;
DeviceDescription.BusNumber = pUnit->BusNumber;
DeviceDescription.InterfaceType = PCIBus;
DeviceDescription.DmaWidth = Width16Bits;
DeviceDescription.MaximumLength = 128 * 1024;

Are any of these incorrect or are there any significant
fields missing?
Where should I look for detailed documentation on the fields of the
DEVICE_DESCRIPTION structure (the NT DDK and Viscarola/Mason
text do not
go into much detail)?

I have been able to perform transfers to and from buffers that were
created using HalAllocateCommonBuffer() but obviously that does not
require a Length variable to be set by IoMapTransfer().

Questions remain:

  1. Why does setting DeviceDescription.ScatterGather = TRUE
    cause a value
    for map_registers_base of 0x00000000 to be passed to the
    AdapterControl
    callback routine?
  2. Why does IoMapTransfer() set the Length parameter to 0?

Any help would be much appreciated,
Richard


You are currently subscribed to ntdev as: xxxxx@stratus.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Mark,

Using GetScatterGatherList, however, generates a 64 bit scatter/gather list.
If you have a device that expects a 32 bit scatter/gather list, your only
option, that I am aware of, is to use IoMapTransfer.

Gary

-----Original Message-----
From: Roddy, Mark [mailto:xxxxx@stratus.com]
Sent: Monday, January 22, 2001 9:59 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Problems with IoMapTransfer()

  1. The zero value for MapRegisterBase is normal for 32-bit
    busmaster
    scatter/gather devices.

  2. The return value of zero for length is unusual, but
    perhaps you set this
    value on the way in?

  3. DmaWidth16Bits is I think WRONG for PCI devices, but it
    is probably
    ignored for these devices as well.

  4. For windows 2000 you should use the GetScatterGatherList
    interface
    instead of the MapTransfer interface. Much better interface
    for a lot of
    reasons, number one being that it hides all of this internal
    crapola that
    MapTransfer exposes.

Mark Roddy
xxxxx@hollistech.com
www.hollistech.com
WindowsNT Windows 2000 Consulting Services

-----Original Message-----
> From: xxxxx@cix.co.uk
[mailto:xxxxx@cix.co.uk]
> Sent: Monday, January 22, 2001 12:38 PM
> To: NT Developers Interest List
> Cc: xxxxx@cix.co.uk
> Subject: [ntdev] Problems with IoMapTransfer()
>
>
> I am building a driver to run on Win2000 that communicates
with a
> BusMaster DMA device that has Scatter/Gather capabilities.
>
> When I examine the value of map_registers_base that is
passed to the
> AdapterControl callback routine, I find that it is set to
> 0x00000000. This
> appears to be an erroneous value. What could be causing
this?
> If I change the value of the ScatterGather field in the
> DeviceDescription,
> from TRUE to FALSE, the value of map_registers_base passed
to the
> AdapterControl callback routine is then 0x85811BC9 (much
nicer).
> For both values of ScatterGather, IoMapTransfer seems to
> return a sensible
> value for the physical address, but the value of Length
gets
> set to 0,
> which is clearly wrong. What might cause this?
> I have made a call to MmGetMdlByteCount() to verify that
the
> Mdl that I am
> passing is as expected and has the expected length (1000
> bytes). I have
> verified that there should be map registers available
> (NumberOfMapRegisters = 33).
>
> It seems possible that the problem lies with the values
that
> I am using to
> populate the DeviceDescription (even though I pass NULL to

IoMapTransfer
> as the value for AdapterObject). I have found it hard to
find
> detailed
> descriptions of these fields. After a call to
RtlZeroMemory(), I’m
> currently making the following assignments.
> DeviceDescription.Version =
DEVICE_DESCRIPTION_VERSION;
> DeviceDescription.Master = TRUE;
> DeviceDescription.ScatterGather = TRUE; *See
above*
> DeviceDescription.DemandMode = FALSE;
> DeviceDescription.AutoInitialize = FALSE;
> DeviceDescription.Dma32BitAddresses = TRUE;
> DeviceDescription.IgnoreCount = FALSE;
> DeviceDescription.Reserved1 = FALSE;
> DeviceDescription.Reserved2 = FALSE;
> DeviceDescription.BusNumber = pUnit->BusNumber;
> DeviceDescription.InterfaceType = PCIBus;
> DeviceDescription.DmaWidth = Width16Bits;
> DeviceDescription.MaximumLength = 128 *
1024;
>
> Are any of these incorrect or are there any significant
> fields missing?
> Where should I look for detailed documentation on the
fields of the
> DEVICE_DESCRIPTION structure (the NT DDK and
Viscarola/Mason
> text do not
> go into much detail)?
>
> I have been able to perform transfers to and from buffers
that were
> created using HalAllocateCommonBuffer() but obviously that
does not
> require a Length variable to be set by IoMapTransfer().
>
> Questions remain:
> 1. Why does setting DeviceDescription.ScatterGather = TRUE

cause a value
> for map_registers_base of 0x00000000 to be passed to the
> AdapterControl
> callback routine?
> 2. Why does IoMapTransfer() set the Length parameter to 0?
>
>
> Any help would be much appreciated,
> Richard
>
> —
> You are currently subscribed to ntdev as:
xxxxx@stratus.com
> To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

If I understand you correctly, you are referring to the PHYSICAL_ADDRESS
field in the SCATTER_GATHER_ELEMENTs that constitute the SCATTER_GATHER_LIST
array. The assumption is NOT that you can pass the SCATTER_GATHER_LIST
unmodified to your hardware for processing, but that you take the contents
of the SCATTER_GATHER_LIST and use it to program, in a device dependant
manner, the DMA operation(s) of your device. So for example you might have
an array of shared memory on your device that is the device-dependent SGL,
which might be structured as an array of 32-bit-address,32-bit length
value-pairs. You program your device by copying each SCATTER_GATHER_ELEMENT
into your hardware shared memory array, translating 64-bit physical
addresses into 32-bit physical addresses (by lopping off the upper 32-bits.)

This is exactly what you have to do with MapTransfer, as MapTransfer also
returns PHYSICAL_ADDRESS values (64-bit) which have to be translated to
32-bit values for 32-bit hardware.

Note also that 64-bit PCI is a reality and DAC devices do exist, so 64-bit
operations are entirely possible on some platforms for some devices.

Mark Roddy
xxxxx@hollistech.com
www.hollistech.com
WindowsNT Windows 2000 Consulting Services

-----Original Message-----
From: Gary Little [mailto:xxxxx@Broadstor.com]
Sent: Monday, January 22, 2001 1:18 PM
To: NT Developers Interest List
Subject: [ntdev] RE: Problems with IoMapTransfer()

Mark,

Using GetScatterGatherList, however, generates a 64 bit
scatter/gather list.
If you have a device that expects a 32 bit scatter/gather
list, your only
option, that I am aware of, is to use IoMapTransfer.

Gary

-----Original Message-----
From: Roddy, Mark [mailto:xxxxx@stratus.com]
Sent: Monday, January 22, 2001 9:59 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Problems with
IoMapTransfer()

  1. The zero value for MapRegisterBase is normal
    for 32-bit
    busmaster
    scatter/gather devices.

  2. The return value of zero for length is unusual, but
    perhaps you set this
    value on the way in?

  3. DmaWidth16Bits is I think WRONG for PCI
    devices, but it
    is probably
    ignored for these devices as well.

  4. For windows 2000 you should use the
    GetScatterGatherList
    interface
    instead of the MapTransfer interface. Much
    better interface
    for a lot of
    reasons, number one being that it hides all of
    this internal
    crapola that
    MapTransfer exposes.

Mark Roddy
xxxxx@hollistech.com
www.hollistech.com
WindowsNT Windows 2000 Consulting Services

> -----Original Message-----
> From: xxxxx@cix.co.uk
[mailto:xxxxx@cix.co.uk]
> Sent: Monday, January 22, 2001 12:38 PM
> To: NT Developers Interest List
> Cc: xxxxx@cix.co.uk
> Subject: [ntdev] Problems with IoMapTransfer()
>
>
> I am building a driver to run on Win2000 that
communicates
with a
> BusMaster DMA device that has Scatter/Gather
capabilities.
>
> When I examine the value of map_registers_base that is
passed to the
> AdapterControl callback routine, I find that
it is set to
> 0x00000000. This
> appears to be an erroneous value. What could
be causing
this?
> If I change the value of the ScatterGather
field in the
> DeviceDescription,
> from TRUE to FALSE, the value of
map_registers_base passed
to the
> AdapterControl callback routine is then
0x85811BC9 (much
nicer).
> For both values of ScatterGather,
IoMapTransfer seems to
> return a sensible
> value for the physical address, but the value
of Length
gets
> set to 0,
> which is clearly wrong. What might cause this?
> I have made a call to MmGetMdlByteCount() to
verify that
the
> Mdl that I am
> passing is as expected and has the expected
length (1000
> bytes). I have
> verified that there should be map registers available
> (NumberOfMapRegisters = 33).
>
> It seems possible that the problem lies with
the values
that
> I am using to
> populate the DeviceDescription (even though I
pass NULL to

> IoMapTransfer
> as the value for AdapterObject). I have found
it hard to
find
> detailed
> descriptions of these fields. After a call to
RtlZeroMemory(), I’m
> currently making the following assignments.
> DeviceDescription.Version =
DEVICE_DESCRIPTION_VERSION;
> DeviceDescription.Master = TRUE;
> DeviceDescription.ScatterGather = TRUE;
*See
above*
> DeviceDescription.DemandMode = FALSE;
> DeviceDescription.AutoInitialize = FALSE;
> DeviceDescription.Dma32BitAddresses = TRUE;
> DeviceDescription.IgnoreCount = FALSE;
> DeviceDescription.Reserved1 = FALSE;
> DeviceDescription.Reserved2 = FALSE;
> DeviceDescription.BusNumber =
pUnit->BusNumber;
> DeviceDescription.InterfaceType
= PCIBus;
> DeviceDescription.DmaWidth = Width16Bits;
> DeviceDescription.MaximumLength = 128 *
1024;
>
> Are any of these incorrect or are there any
significant
> fields missing?
> Where should I look for detailed documentation on the
fields of the
> DEVICE_DESCRIPTION structure (the NT DDK and
Viscarola/Mason
> text do not
> go into much detail)?
>
> I have been able to perform transfers to and
from buffers
that were
> created using HalAllocateCommonBuffer() but
obviously that
does not
> require a Length variable to be set by
IoMapTransfer().
>
> Questions remain:
> 1. Why does setting
DeviceDescription.ScatterGather = TRUE

> cause a value
> for map_registers_base of 0x00000000 to be
passed to the
> AdapterControl
> callback routine?
> 2. Why does IoMapTransfer() set the Length
parameter to 0?
>
>
> Any help would be much appreciated,
> Richard
>
> —
> You are currently subscribed to ntdev as:
xxxxx@stratus.com
> To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@stratus.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

You’re right. It dawned on me as I read your reply that, that is
exactly what I do when using IoMapTransfer. I convert the 64 bit return
values from IOMT to the 32 bit values (address/length) for my SGL.

Gary

-----Original Message-----
From: Roddy, Mark [mailto:xxxxx@stratus.com]
Sent: Monday, January 22, 2001 10:27 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Problems with IoMapTransfer()

If I understand you correctly, you are referring to the
PHYSICAL_ADDRESS
field in the SCATTER_GATHER_ELEMENTs that constitute the
SCATTER_GATHER_LIST
array. The assumption is NOT that you can pass the
SCATTER_GATHER_LIST
unmodified to your hardware for processing, but that you
take the contents
of the SCATTER_GATHER_LIST and use it to program, in a
device dependant
manner, the DMA operation(s) of your device. So for example
you might have
an array of shared memory on your device that is the
device-dependent SGL,
which might be structured as an array of
32-bit-address,32-bit length
value-pairs. You program your device by copying each
SCATTER_GATHER_ELEMENT
into your hardware shared memory array, translating 64-bit
physical
addresses into 32-bit physical addresses (by lopping off the
upper 32-bits.)

This is exactly what you have to do with MapTransfer, as
MapTransfer also
returns PHYSICAL_ADDRESS values (64-bit) which have to be
translated to
32-bit values for 32-bit hardware.

Note also that 64-bit PCI is a reality and DAC devices do
exist, so 64-bit
operations are entirely possible on some platforms for some
devices.

Mark Roddy
xxxxx@hollistech.com
www.hollistech.com
WindowsNT Windows 2000 Consulting Services

> -----Original Message-----
> From: Gary Little [mailto:xxxxx@Broadstor.com]
> Sent: Monday, January 22, 2001 1:18 PM
> To: NT Developers Interest List
> Subject: [ntdev] RE: Problems with IoMapTransfer()
>
>
> Mark,
>
> Using GetScatterGatherList, however, generates a 64 bit
> scatter/gather list.
> If you have a device that expects a 32 bit scatter/gather
> list, your only
> option, that I am aware of, is to use IoMapTransfer.
>
> Gary
>
> -----Original Message-----
> From: Roddy, Mark
[mailto:xxxxx@stratus.com]
> Sent: Monday, January 22, 2001 9:59 AM
> To: NT Developers Interest List
> Subject: [ntdev] RE: Problems with
> IoMapTransfer()
>
> 1) The zero value for MapRegisterBase is
normal
> for 32-bit
> busmaster
> scatter/gather devices.
>
> 2) The return value of zero for length is
unusual, but
> perhaps you set this
> value on the way in?
>
> 3) DmaWidth16Bits is I think WRONG for PCI
> devices, but it
> is probably
> ignored for these devices as well.
>
> 4) For windows 2000 you should use the
> GetScatterGatherList
> interface
> instead of the MapTransfer interface. Much
> better interface
> for a lot of
> reasons, number one being that it hides all
of
> this internal
> crapola that
> MapTransfer exposes.
>
>
> Mark Roddy
> xxxxx@hollistech.com
> www.hollistech.com
> WindowsNT Windows 2000 Consulting Services
>
>
>
> > -----Original Message-----
> > From: xxxxx@cix.co.uk
> [mailto:xxxxx@cix.co.uk]
> > Sent: Monday, January 22, 2001 12:38 PM
> > To: NT Developers Interest List
> > Cc: xxxxx@cix.co.uk
> > Subject: [ntdev] Problems with
IoMapTransfer()
> >
> >
> > I am building a driver to run on Win2000
that
> communicates
> with a
> > BusMaster DMA device that has
Scatter/Gather
> capabilities.
> >
> > When I examine the value of
map_registers_base that is
> passed to the
> > AdapterControl callback routine, I find
that
> it is set to
> > 0x00000000. This
> > appears to be an erroneous value. What
could
> be causing
> this?
> > If I change the value of the ScatterGather

> field in the
> > DeviceDescription,
> > from TRUE to FALSE, the value of
> map_registers_base passed
> to the
> > AdapterControl callback routine is then
> 0x85811BC9 (much
> nicer).
> > For both values of ScatterGather,
> IoMapTransfer seems to
> > return a sensible
> > value for the physical address, but the
value
> of Length
> gets
> > set to 0,
> > which is clearly wrong. What might cause
this?
> > I have made a call to MmGetMdlByteCount()
to
> verify that
> the
> > Mdl that I am
> > passing is as expected and has the
expected
> length (1000
> > bytes). I have
> > verified that there should be map
registers available
> > (NumberOfMapRegisters = 33).
> >
> > It seems possible that the problem lies
with
> the values
> that
> > I am using to
> > populate the DeviceDescription (even
though I
> pass NULL to
>
> > IoMapTransfer
> > as the value for AdapterObject). I have
found
> it hard to
> find
> > detailed
> > descriptions of these fields. After a call
to
> RtlZeroMemory(), I’m
> > currently making the following
assignments.
> > DeviceDescription.Version =
> DEVICE_DESCRIPTION_VERSION;
> > DeviceDescription.Master = TRUE;
> > DeviceDescription.ScatterGather =
TRUE;
> See
> above

> > DeviceDescription.DemandMode = FALSE;
> > DeviceDescription.AutoInitialize =
FALSE;
> > DeviceDescription.Dma32BitAddresses =
TRUE;
> > DeviceDescription.IgnoreCount
= FALSE;
> > DeviceDescription.Reserved1 =
FALSE;
> > DeviceDescription.Reserved2 =
FALSE;
> > DeviceDescription.BusNumber =
> pUnit->BusNumber;
> > DeviceDescription.InterfaceType

> = PCIBus;
> > DeviceDescription.DmaWidth =
Width16Bits;
> > DeviceDescription.MaximumLength
= 128 *
> 1024;
> >
> > Are any of these incorrect or are there
any
> significant
> > fields missing?
> > Where should I look for detailed
documentation on the
> fields of the
> > DEVICE_DESCRIPTION structure (the NT DDK
and
> Viscarola/Mason
> > text do not
> > go into much detail)?
> >
> > I have been able to perform transfers to
and
> from buffers
> that were
> > created using HalAllocateCommonBuffer()
but
> obviously that
> does not
> > require a Length variable to be set by
> IoMapTransfer().
> >
> > Questions remain:
> > 1. Why does setting
> DeviceDescription.ScatterGather = TRUE
>
> > cause a value
> > for map_registers_base of 0x00000000 to be

> passed to the
> > AdapterControl
> > callback routine?
> > 2. Why does IoMapTransfer() set the Length

> parameter to 0?
> >
> >
> > Any help would be much appreciated,
> > Richard
> >
> > —
> > You are currently subscribed to ntdev as:
> xxxxx@stratus.com
> > To unsubscribe send a blank email to
> leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> >
>
> —
> You are currently subscribed to ntdev as:
> xxxxx@delphieng.com
> To unsubscribe send a blank email to
> leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
> —
> You are currently subscribed to ntdev as:
xxxxx@stratus.com
> To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Try these values:

RtlZeroMemory(&DevDescr, sizeof(DEVICE_DESCRIPTION));
DevDescr.Version = DEVICE_DESCRIPTION_VERSION;
DevDescr.Master = TRUE;
DevDescr.ScatterGather = TRUE;
DevDescr.Dma32BitAddresses = TRUE;
DevDescr.InterfaceType = PCIBus;
DevDescr.DmaWidth = Width32Bits;
DevDescr.DmaSpeed = Compatible;
DevDescr.MaximumLength = (ULONG)-1;

This is from the debugged and tested code of the WDM Win9x driver (have not
test it on w2k yet).

Max


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com