Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
.gif)
| Previous | Next |
IWMSDataContainer::Write
The server calls the Write method to write data from a buffer to the data container.
Syntax
HRESULT Write( BYTE* pbBuffer, DWORD dwDataSize, QWORD qwWritePosition, IWMSDataContainerCallback* pCallback, QWORD qwContext );
Parameters
pbBuffer
[in] Pointer to a BYTE specifying the address of the buffer containing the data to be written.
dwDataSize
[in] DWORD containing the data size in bytes.
qwWritePosition
[in] QWORD containing the position in the data container to write to. This must be WMS_DATA_CONTAINER_NONSEEKABLE if the data container does not support seeking. For example, a live source cannot be seekable, but a file can be.
pCallback
[in] Pointer to the IWMSDataContainerCallback interface. The plug-in calls IWMSDataContainerCallback::OnWrite to respond to the server.
qwContext
[in] QWORD containing a value defined by the server to identify which Write request the plug-in is responding to when it calls IWMSDataContainerCallback::OnWrite. The plug-in must pass this value back unaltered.
Return Values
If the method succeeds, the plug-in must return S_OK. To report an error, the plug-in can return any HRESULT other than S_OK. If the plug-in uses the IWMSEventLog interface to log error information directly to the Windows Event Viewer, it is recommended that it return NS_E_PLUGIN_ERROR_REPORTED. Typically, the server attempts to make plug-in error information available to the server object model, the Windows Event Viewer, and the troubleshooting list in the details pane of the Windows Media Services MMC. However, if the plug-in uses the IWMSEventLog interface to send custom error information to the Windows Event Viewer, returning NS_E_PLUGIN_ERROR_REPORTED stops the server from also logging to the event viewer. For more information about retrieving plug-in error information, see Identifying Plug-in Errors.
Example Code
HRESULT STDMETHODCALLTYPE CDataContainer::Write(
BYTE *pbBuffer,
DWORD dwDataSize,
QWORD qwWritePosition,
IWMSDataContainerCallback *pCallback,
QWORD qwContext)
{
HRESULT hr = S_OK;
BOOL fSuccess = TRUE;
DWORD dwOffsetLow = 0, dwOffsetHigh = 0;
DWORD dwError = NO_ERROR;
DWORD dwBytesTransferred = 0;
dwOffsetLow = LODWORD( qwWritePosition );
dwOffsetHigh = HIDWORD( qwWritePosition );
dwOffsetLow = SetFilePointer( m_hFile, dwOffsetLow,
(long*)&dwOffsetHigh, FILE_BEGIN );
if( ( dwOffsetLow == 0xFFFFFFFF ) && ( ( dwError = GetLastError() )
!= NO_ERROR ) )
{
hr = HRESULT_FROM_WIN32( dwError );
goto EXIT;
}
fSuccess = WriteFile(
m_hFile,
pbBuffer,
dwDataSize,
&dwBytesTransferred,
NULL);
if ( !fSuccess )
{
dwError = GetLastError();
hr = HRESULT_FROM_WIN32( GetLastError() );
goto EXIT;
}
pCallback->OnWrite( hr,
dwBytesTransferred,
qwContext );
EXIT:
return( hr );
}
Requirements
Header: datacontainer.h.
Library: WMSServerTypeLib.dll.
Platform: Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; Windows Server 2008.
See Also
| Previous | Next |