Direct access to local 1394 initial register space on XP

Hello,

I am writing a virtual AV/C subunit driver on Windows XP. When the
local node is IRM (1394 Isochronous Resource Manager), I need to
directly access the 1394 CHANNELS_AVAILABLE and BANDWITH_AVAILABLE
registers.

System crashed when I tried to access the local CHANNELS_AVAILABLE
register using REQUEST_ASYNC_READ. Following are the details of the
IRB.

p1394Irb->u.AsyncRead.DestinationAddress.IA_Destination_ID =
localNodeId;
p1394Irb->u.AsyncRead.nNumberOfBytesToRead = 4;
p1394Irb->u.AsyncRead.DestinationAddress.IA_Destination_Offset.Off_High
= 0xffff;
p1394Irb->u.AsyncRead.DestinationAddress.IA_Destination_Offset.Off_Low
= 0xf0000224;

Is there any way to access local 1394 initial register space using
vitual 1394 bus driver on Windows XP?

Thanks,
-Amjad

I answered this in another forum, but I will repeat here.

Unfortunately, you cannot access all the host controller registers directly.

However, you can get the info you need. For CHANNELS_AVAILABLE you can send
the REQUEST_ISOCH_ALLOCATE_CHANNEL request to the 1394 bus driver. In
return you will get an allocated channel, but also a bitmap of the available
channels after the call, returned in
u.IsochAllocateChannel.ChannelsAvailable. You can just free the allocated
channel if not needed.

For BANDWIDTH_AVAILABLE you can use a similar process with the
REQUEST_ISOCH_ALLOCATE_BANDWIDTH request. The available bandwidth is
returned in the u.IsochAllocateBandwidth.BytesPerFrameAvailable field of the
IRB. Again, if you don’t need the bandwidth allocated, just free it.

Kind of a backwards way of going about getting these values.

Bill McKenzie
Compuware Corporation

wrote in message news:xxxxx@ntdev…
>
> Hello,
>
> I am writing a virtual AV/C subunit driver on Windows XP. When the
> local node is IRM (1394 Isochronous Resource Manager), I need to
> directly access the 1394 CHANNELS_AVAILABLE and BANDWITH_AVAILABLE
> registers.
>
> System crashed when I tried to access the local CHANNELS_AVAILABLE
> register using REQUEST_ASYNC_READ. Following are the details of the
> IRB.
>
> p1394Irb->u.AsyncRead.DestinationAddress.IA_Destination_ID =
> localNodeId;
> p1394Irb->u.AsyncRead.nNumberOfBytesToRead = 4;
> p1394Irb->u.AsyncRead.DestinationAddress.IA_Destination_Offset.Off_High
> = 0xffff;
> p1394Irb->u.AsyncRead.DestinationAddress.IA_Destination_Offset.Off_Low
> = 0xf0000224;
>
>
> Is there any way to access local 1394 initial register space using
> vitual 1394 bus driver on Windows XP?
>
> Thanks,
> -Amjad
>
>
>
>