IWMSBufferAllocator.AllocateBuffer (Visual Basic .NET)
Previous | Next |
IWMSBufferAllocator.AllocateBuffer (Visual Basic .NET)
The AllocateBuffer method initializes an INSSBuffer object.
Syntax
Parameters
dwMaxBufferSize
Uint32 containing the maximum size of the buffer in bytes. This must be less than 16 MB (16,777,216 bytes).
ppBuffer
Reference to an INSSBuffer object containing the buffer.
Return Values
This method does not return a value.
If this method fails, it throws an exception.
Number | Description |
0x80070057 | dwMaxBufferSize is greater than 16 MB or ppBuffer is null. |
0x8007000E | There is insufficient memory to complete the function. |
Remarks
This method is used internally mainly by media parser, data sink, and data source plug-ins. Custom plug-in applications include, but are not limited to, data source and cache proxy plug-ins.
Example Code
The following example uses the IWMSBufferAllocator object to allocate a buffer to hold the written playlist file.
Public Sub WritePlaylist( _ ByVal pPlaylist As interop_msxml.IXMLDOMDocument, _ ByVal pCallback As IWMSPlaylistParserCallback, _ ByVal qwContext As System.UInt64) _ Implements IWMSPlaylistParser.WritePlaylist Dim NodeList As IXMLDOMNodeList Dim pBufAlloc As IWMSBufferAllocator Dim pINSSBuffer As INSSBuffer Dim strPls As String Dim strMedia As String Dim pBuf As IntPtr Dim i As Integer Dim j As Integer Dim Enc As Encoder = Encoding.Unicode.GetEncoder() Dim Bytes As Byte() Dim iBytes As Integer Try strPls = "!- DJ_FILE v1.0 -!" & vbCrLf NodeList = pPlaylist.getElementsByTagName("media") For i = 0 To (NodeList.length - 1) For j = 0 To (NodeList(i).attributes.length - 1) If NodeList(i).attributes(j).nodeName = "src" Then strMedia = NodeList(i).attributes(j).nodeValue Else strPls = strPls & "# " & _ NodeList(i).attributes(j).nodeName & "=" & _ Chr(34) & NodeList(i).attributes(j).nodeValue & _ Chr(34) & vbCrLf End If Next If Not strMedia = vbNullString Then strPls = strPls & strMedia & vbCrLf End If Next iBytes = Enc.GetByteCount(strPls.ToCharArray(), 0, strPls.Length, False) Bytes = Array.CreateInstance(GetType(Byte), iBytes) iBytes = Enc.GetBytes(strPls.ToCharArray(), 0, strPls.Length, _ Bytes, 0, True) pBufAlloc = m_ClassFactory pBufAlloc.AllocateBuffer(Convert.ToUInt32(iBytes), pINSSBuffer) pINSSBuffer.SetLength(Convert.ToUInt32(iBytes)) pINSSBuffer.GetBuffer(pBuf) Marshal.Copy(Bytes, 0, pBuf, iBytes) pCallback.OnWritePlaylist(S_OK, pINSSBuffer, qwContext) Catch e As Exception pCallback.OnWritePlaylist(E_FAIL, pINSSBuffer, qwContext) End Try End Sub
Requirements
Reference: Add a reference to Microsoft.WindowsMediaServices.
Namespace: Microsoft.WindowsMediaServices.Interop.
Assembly: Microsoft.WindowsMediaServices.dll.
Library: WMSServerTypeLib.dll.
Platform: Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; Windows Server 2008.
See Also
Previous | Next |