IPortWaveRTStream interface is supported in Windows Vista and later operating systems, and it is a stream-specific interface that provides helper methods for use by the WaveRT miniport driver. The miniport driver calls the methods to perform allocation and mapping of cyclic buffers for audio data. The WaveRT port driver implements this interface. The port driver gives an
IPortWaveRTStream object reference to each miniport driver stream object that it creates.
IPortWaveRTStream inherits from the IUnknown interface.
An audio stream is associated with each pin instance on a WaveRT filter. The adapter driver forms the filter by binding the WaveRT port and miniport drivers. When the port driver calls the IMiniportWaveRT::NewStream method to create the miniport driver stream object, the port driver passes an
IPortWaveRTStream reference as one of the method's call parameters.
To allocate the memory needed for the cyclic buffer, the miniport driver must call the AllocatePagesForMdl method or the AllocateContiguousPagesForMdl method of the
IPortWaveRTStream interface. The interface provides additional methods that can map the allocated pages, unmap them, and can also free them.
The methods in the
IPortWaveRTStream interface are based on, and are similar to, the MmXxx kernel functions that perform allocation and mapping of memory descriptor lists (MDLs). However, the MmXxx functions cannot be used in place of the
The IPortWaveRTStream interface inherits from the IUnknown interface. IPortWaveRTStream also has these types of members:
The IPortWaveRTStream interface has these methods.
|IPortWaveRTStream::AllocateContiguousPagesForMdl||The AllocateContiguousPagesForMdl method allocates a list of contiguous, nonpaged, physical memory pages and returns a pointer to a memory descriptor list (MDL) that describes them.|
|IPortWaveRTStream::AllocatePagesForMdl||The AllocatePagesForMdl method allocates a list of nonpaged physical memory pages and returns a pointer to a memory descriptor list (MDL) that describes them.|
|IPortWaveRTStream::FreePagesFromMdl||The FreePagesFromMdl method frees a memory descriptor list (MDL).|
|IPortWaveRTStream::GetPhysicalPageAddress||The GetPhysicalPageAddress method returns the physical address for a page within a memory descriptor list (MDL).|
|IPortWaveRTStream::GetPhysicalPagesCount||The GetPhysicalPagesCount method returns the count of the physical pages in a memory descriptor list (MDL).|
|IPortWaveRTStream::MapAllocatedPages||The MapAllocatedPages method maps a list of previously allocated physical pages into a contiguous block of virtual memory that is accessible from kernel-mode.|
|IPortWaveRTStream::UnmapAllocatedPages||The UnmapAllocatedPages method releases a mapping.|