|
AudRecordLib
|
Implements the wrapper of the native IAudRecord interface. More...
#include "stdafx.h"#include "AudRecordWrap.h"#include "error.h"#include "InterfaceWrap.h"#include <exception>Namespaces | |
| namespace | AudRecordCLI |
Defines | |
| #define | NATIVE_ENDPOINT_FROM_MANAGED(managed, native) |
| #define | NATIVE_CODECCONFIG_FROM_MANAGED(managed, native) |
Implements the wrapper of the native IAudRecord interface.
| #define NATIVE_CODECCONFIG_FROM_MANAGED | ( | managed, | |
| native | |||
| ) |
pin_ptr<const WCHAR> _name_string = PtrToStringChars(managed->Name); \
{ \
IntPtr origUnknownPtr = Marshal::GetIUnknownForObject(managed->DescInterface); \
IWMStreamConfig* pConfig = (static_cast<IWMStreamConfig*>(origUnknownPtr.ToPointer())); \
/* We don't need a reference to persist, since managed->Interface */ \
/* already has a reference that will outlive the call */ \
Marshal::Release(origUnknownPtr); \
IWMStreamConfig* pTest = NULL; \
HRESULT hrQI = S_OK; \
/* assert that the returned interface of the correct type */ \
ASSERT((hrQI = pConfig->QueryInterface(&pTest), (pTest ? pTest->Release() : 0ul), SUCCEEDED(hrQI))); \
native.pConfig = pConfig; \
native.pName = _name_string; \
}
Fills in a native CondecConfig struct using the info in a managed AudRecordCLI::CodecConfiguration struct. This isn't a function because the pin_ptr needs to live for the lifetime of the cstring it produces
| #define NATIVE_ENDPOINT_FROM_MANAGED | ( | managed, | |
| native | |||
| ) |
pin_ptr<const WCHAR> _name_string = PtrToStringChars(managed->Name); \
{ \
IntPtr origUnknownPtr = Marshal::GetIUnknownForObject(managed->Interface); \
IMMDevice* pMMDevice = (static_cast<IMMDevice*>(origUnknownPtr.ToPointer())); \
/* We don't need a reference to persist, since managed->Interface */ \
/* already has a reference that will outlive the call */ \
Marshal::Release(origUnknownPtr); \
IMMDevice* pTest = NULL; \
HRESULT hrQI = S_OK; \
/* assert that the returned interface of the correct type */ \
ASSERT((hrQI = pMMDevice->QueryInterface(&pTest), (pTest ? pTest->Release() : 0ul), SUCCEEDED(hrQI))); \
native.pEndPoint = pMMDevice; \
native.pName = _name_string; \
}
Fills in a native Endpoint struct using the info in a managed AudRecordCLI::Endpoint struct. This isn't a function because the pin_ptr needs to live for the lifetime of the cstring it produces
1.7.5.1