REQUEST_ISOCH_ALLOCATE_BANDWIDTH control code

The REQUEST_ISOCH_ALLOCATE_BANDWIDTH request allocates isochronous bandwidth to be used in subsequent operations.

The relevant members of the IRB for this request are:


typedef struct _IRB {
  ULONG FunctionNumber;
    .
    .
    .
  union {
    struct {
      ULONG     nMaxBytesPerFrameRequested;
      ULONG     fulSpeed;
      HANDLE    hBandwidth;
      ULONG     BytesPerFrameAvailable;
      ULONG     SpeedSelected;
    } IsochAllocateBandwidth;
    .
    .
    .
  } u;
} IRB;

IRB Input

FunctionNumber

REQUEST_ISOCH_ALLOCATE_BANDWIDTH

u.IsochAllocateBandwidth.nMaxBytesPerFrameRequested

Specifies the bandwidth requested, in bytes per isochronous frame. If the host controller is configured to strip away the packet headers, the device driver does not need to include the packet header size in the number of bytes requested. The driver also does not need to round the value up to the nearest quadlet.

u.IsochAllocateBandwidth.fulSpeed

Specifies the connection speed to use in allocating bandwidth. The possible speed values are SPEED_FLAGS_xxx, where xxx is the (approximate) transfer rate in megabits per second. Existing hardware supports transfer rates of 100, 200, and 400 Mb/sec.

Transfer RateDescription

SPEED_FLAGS_100

100 Mb/s

SPEED_FLAGS_200

200 Mb/s

SPEED_FLAGS_400

400 Mb/s

 

Note  In Windows 7 and later versions of Windows, you can specify new values higher speed and greater sized payloads. For more information, see New Flags for Speed and Payload Size and IEEE 1394 IOCTL Changes in Device Driver Interface (DDI) Changes in Windows 7.

IRB Output

u.IsochAllocateBandwidth.hBandwidth

Specifies the handle to use to refer to the bandwidth resource. The caller can set the IRB_FLAG_ALLOW_REMOTE_FREE flag in Flags member of the IRB structure to indicate that the system should free the memory allocated for this handle. If caller does not set this flag, then caller will have to free the bandwidth handle.

u.IsochAllocateBandwidth.BytesPerFrameAvailable

Specifies the bytes per frame that are available after the allocation attempt. Drivers should not rely on this bandwidth being available, since another device may allocate or deallocate bandwidth at any time. The bus driver fills in this member, even if the request fails.

u.IsochAllocateBandwidth.SpeedSelected

Specifies the actual speed selected in allocating bandwidth. The value is one of SPEED_FLAGS_xxx (see the fulSpeed member description above).

Note  In Windows 7 and later versions of Windows, you can specify new values higher speed and greater sized payloads. For more information, see New Flags for Speed and Payload Size and IEEE 1394 IOCTL Changes in Device Driver Interface (DDI) Changes in Windows 7.

I/O Status Block

If the bus driver successfully allocates the bandwidth, it sets Irp->IoStatus.Status to STATUS_SUCCESS. If it defers the request, it returns STATUS_PENDING. Otherwise it sets the appropriate error status.

Operation

Once the device driver no longer needs allocated bandwidth, it must deallocate it with the REQUEST_ISOCH_FREE_BANDWIDTH request.

On Windows 2000 and later, this request may be submitted at any IRQL.

See Also

IOCTL_IEEE1394_API_REQUEST

Requirements

Header

1394.h (include 1394.h)

IRQL

< = DISPATCH_LEVEL

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft