WindowsRuntimeBufferExtensions::GetWindowsRuntimeBuffer Method (MemoryStream, Int32, Int32)
Returns a Windows.Storage.Streams.IBuffer interface that represents a region within the memory that the specified memory stream represents.
This API is not CLS-compliant. Namespace: System.Runtime.InteropServices.WindowsRuntime
Assembly: System.Runtime.WindowsRuntime (in System.Runtime.WindowsRuntime.dll)
[CLSCompliantAttribute(false)] [ExtensionAttribute] public: static IBuffer^ GetWindowsRuntimeBuffer( MemoryStream^ underlyingStream, int positionInStream, int length )
Parameters
- underlyingStream
- Type: System.IO::MemoryStream
The stream that shares memory with the IBuffer.
- positionInStream
- Type: System::Int32
The position of the shared memory region in underlyingStream.
- length
- Type: System::Int32
The maximum size of the shared memory region. If the number of bytes in underlyingStream, starting at positionInStream, is less than length, the IBuffer that is returned represents only the available bytes.
Return Value
Type: IBufferA Windows.Storage.Streams.IBuffer interface that is backed by a region within the memory that backs the specified memory stream.
Usage Note
In Visual Basic and C#, you can call this method as an instance method on any object of type MemoryStream. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).| Exception | Condition |
|---|---|
| ArgumentNullException | underlyingStream is nullptr. |
| ArgumentOutOfRangeException | positionInStream or length is less than 0 (zero). |
| ArgumentException | positionInStream is beyond the end of source. |
| UnauthorizedAccessException | underlyingStream cannot expose its underlying memory buffer. |
| ObjectDisposedException | underlyingStream has been closed. |
The Capacity property of the IBuffer is set to length or to the number of bytes between positionInStream and the capacity of the stream, whichever is less. The Length property of the IBuffer is set to 0 (zero) if positionInStream is beyond length of the stream; otherwise, it is set to length or to the number of bytes between positionInStream and the length of the stream, whichever is less.
If underlyingStream is resized, it may represent a different region of memory; however, the IBuffer continues to represent the memory of the original stream before it was resized.