IWMSDataContainerCallback::OnWrite
Previous | Next |
IWMSDataContainerCallback::OnWrite
The OnWrite method returns the results of the IWMSDataContainer::Write method call.
Syntax
HRESULT OnWrite( HRESULT hr, DWORD dwActualBytesTransferred, QWORD qwContext );
Parameters
hr
[in] HRESULT containing the result of the call to IWMSDataContainer::Write.
dwActualBytesTransferred
[in] DWORD containing the actual amount, in bytes, of data transferred.
qwContext
[in] QWORD containing a value defined by the server to identify which IWMSDataContainer::Write request the plug-in is responding to when it calls 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 |