Expand Minimize

KsDeviceRegisterAdapterObject function

The KsDeviceRegisterAdapterObject function registers a DMA adapter object with AVStream for performing scatter/gather DMA on the specified device. All drivers compiled for Win64 should use IKsDeviceFunctions::RegisterAdapterObjectEx instead.

Syntax


void KsDeviceRegisterAdapterObject(
  _In_ PKSDEVICE       Device,
  _In_ PADAPTER_OBJECT AdapterObject,
  _In_ ULONG           MaxMappingByteCount,
  _In_ ULONG           MappingTableStride
);

Parameters

Device [in]

A pointer to the KSDEVICE structure representing the AVStream device for which to register an adapter object.

AdapterObject [in]

A pointer to the DMA_ADAPTER structure returned by IoGetDmaAdapter that represents the DMA controller..

MaxMappingByteCount [in]

This parameter specifies the maximum number of bytes that the device can handle for a single mapping. Allows AVStream to automatically break up large chunks of contiguous physical memory into multiple scatter/gather elements for devices that impose a size limit on individual mappings in DMA transfers. Breaks are not guaranteed to occur on page boundaries.

MappingTableStride [in]

This parameter specifies how many bytes each entry in the mapping table requires. This must be at least sizeof (KSMAPPING) and can be as large as necessary.

Additional space can be used by the minidriver as context information.

Return value

None

Remarks

A minidriver that calls KsDeviceRegisterAdapterObject is responsible for previously acquiring the adapter object through IoGetDmaAdapter.

Also note that if the minidriver specifies the KSPIN_FLAG_GENERATE_MAPPINGS flag for any pin on any filter on the device, the minidriver must call KsDeviceRegisterAdapterObject before processing any data. More information about this flag can be found in the reference page for KSPIN_DESCRIPTOR_EX. Also see AVStream DMA Services.

Important   If you set MaxMappingByteCount to one physical page in length, mappings are not guaranteed to reside on a single physical page.

In addition, as noted in the member description above, setting MaxMappingsByteCount does not guarantee that breaks will occur on page boundaries. If you require breaks on page boundaries, consider not specifying a limit on mapping sizes; instead, break the returned scatter/gather mappings into page-aligned chunks manually.

Also see Supporting DMA in 64-Bit AVStream Drivers.

Requirements

Target platform

Universal

Version

Available in Microsoft Windows XP and later operating systems and DirectX 8.0 and later DirectX versions.

Header

Ks.h (include Ks.h)

Library

Ks.lib

IRQL

PASSIVE_LEVEL

See also

KSFILTER_DESCRIPTOR
KSPIN_DESCRIPTOR_EX
KSMAPPING
IoGetDmaAdapter

 

 

Send comments about this topic to Microsoft

Show:
© 2015 Microsoft