本文整理汇总了C++中PropVariantInit函数的典型用法代码示例。如果您正苦于以下问题:C++ PropVariantInit函数的具体用法?C++ PropVariantInit怎么用?C++ PropVariantInit使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PropVariantInit函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetCurrentEffectsSetting
//-------------------------------------------------------------------------
// Description:
//
// GetCurrentEffectsSetting
// Gets the current aggregate effects-enable setting
//
// Parameters:
//
// properties - Property store holding configurable effects settings
//
// pkeyEnable - VT_UI4 property holding an enable/disable setting
//
// processingMode - Audio processing mode
//
// Return values:
// LONG - true if the effect is enabled
//
// Remarks:
// The routine considers the value of the specified property, the well known
// master PKEY_AudioEndpoint_Disable_SysFx property, and the specified
// processing mode.If the processing mode is RAW then the effect is off. If
// PKEY_AudioEndpoint_Disable_SysFx is non-zero then the effect is off.
//
LONG GetCurrentEffectsSetting(IPropertyStore* properties, PROPERTYKEY pkeyEnable, GUID processingMode)
{
HRESULT hr;
BOOL enabled;
PROPVARIANT var;
PropVariantInit(&var);
// Get the state of whether channel swap MFX is enabled or not.
// Check the master disable property defined by Windows
hr = properties->GetValue(PKEY_AudioEndpoint_Disable_SysFx, &var);
enabled = (SUCCEEDED(hr)) && !((var.vt == VT_UI4) && (var.ulVal != 0));
PropVariantClear(&var);
// Check the APO's enable property, defined by this APO.
hr = properties->GetValue(pkeyEnable, &var);
enabled = enabled && ((SUCCEEDED(hr)) && ((var.vt == VT_UI4) && (var.ulVal != 0)));
PropVariantClear(&var);
enabled = enabled && !IsEqualGUID(processingMode, AUDIO_SIGNALPROCESSINGMODE_RAW);
return (LONG)enabled;
}
示例2: CHECK_HR
HRESULT FakeDevice::GetObjectIDsFromPersistentUniqueIDs(
ACCESS_SCOPE Scope,
_In_ IPortableDevicePropVariantCollection* pPersistentIDs,
_In_ IPortableDevicePropVariantCollection* pObjectIDs)
{
HRESULT hr = S_OK;
DWORD dwCount = 0;
if ((pPersistentIDs == NULL) ||
(pObjectIDs == NULL))
{
hr = E_POINTER;
CHECK_HR(hr, ("Cannot have NULL parameter"));
return hr;
}
// Iterate through the persistent ID list and add the equivalent object ID for each element.
hr = pPersistentIDs->GetCount(&dwCount);
CHECK_HR(hr, "Failed to get count from persistent ID collection");
if (hr == S_OK)
{
PROPVARIANT pvPersistentID = {0};
for(DWORD dwIndex = 0; dwIndex < dwCount; dwIndex++)
{
PropVariantInit(&pvPersistentID);
hr = pPersistentIDs->GetAt(dwIndex, &pvPersistentID);
CHECK_HR(hr, "Failed to get persistent ID at index %d", dwIndex);
if (hr == S_OK)
{
hr = m_DeviceContent.GetObjectIDByPersistentID(Scope, pvPersistentID.pwszVal, pObjectIDs);
CHECK_HR(hr, "Failed to get object ID from persistent unique ID '%ws'", pvPersistentID.pwszVal);
}
if (hr == HRESULT_FROM_WIN32(ERROR_NOT_FOUND))
{
PROPVARIANT pvEmptyObjectID = {0};
pvEmptyObjectID.vt = VT_LPWSTR;
pvEmptyObjectID.pwszVal = L"";
// Insert empty string when object cannot be found
hr = pObjectIDs->Add(&pvEmptyObjectID);
CHECK_HR(hr, "Failed to set empty string for persistent unique ID '%ws' when object cannot be found", pvPersistentID.pwszVal);
}
PropVariantClear(&pvPersistentID);
if(FAILED(hr))
{
break;
}
}
}
return hr;
}
示例3: LoadUnknownMetadata
static HRESULT LoadUnknownMetadata(IStream *input, const GUID *preferred_vendor,
DWORD persist_options, MetadataItem **items, DWORD *item_count)
{
HRESULT hr;
MetadataItem *result;
STATSTG stat;
BYTE *data;
ULONG bytesread;
TRACE("\n");
hr = IStream_Stat(input, &stat, STATFLAG_NONAME);
if (FAILED(hr))
return hr;
data = HeapAlloc(GetProcessHeap(), 0, stat.cbSize.QuadPart);
if (!data) return E_OUTOFMEMORY;
hr = IStream_Read(input, data, stat.cbSize.QuadPart, &bytesread);
if (bytesread != stat.cbSize.QuadPart) hr = E_FAIL;
if (hr != S_OK)
{
HeapFree(GetProcessHeap(), 0, data);
return hr;
}
result = HeapAlloc(GetProcessHeap(), 0, sizeof(MetadataItem));
if (!result)
{
HeapFree(GetProcessHeap(), 0, data);
return E_OUTOFMEMORY;
}
PropVariantInit(&result[0].schema);
PropVariantInit(&result[0].id);
PropVariantInit(&result[0].value);
result[0].value.vt = VT_BLOB;
result[0].value.u.blob.cbSize = bytesread;
result[0].value.u.blob.pBlobData = data;
*items = result;
*item_count = 1;
return S_OK;
}
示例4: GetDeviceName
//
// Retrieves the device friendly name for a particular device in a device collection.
//
LPWSTR GetDeviceName(IMMDeviceCollection *DeviceCollection, UINT DeviceIndex)
{
IMMDevice *device;
LPWSTR deviceId;
HRESULT hr;
hr = DeviceCollection->Item(DeviceIndex, &device);
if (FAILED(hr))
{
printf("Unable to get device %d: %x\n", DeviceIndex, hr);
return NULL;
}
hr = device->GetId(&deviceId);
if (FAILED(hr))
{
printf("Unable to get device %d id: %x\n", DeviceIndex, hr);
return NULL;
}
IPropertyStore *propertyStore;
hr = device->OpenPropertyStore(STGM_READ, &propertyStore);
SafeRelease(&device);
if (FAILED(hr))
{
printf("Unable to open device %d property store: %x\n", DeviceIndex, hr);
return NULL;
}
PROPVARIANT friendlyName;
PropVariantInit(&friendlyName);
hr = propertyStore->GetValue(PKEY_Device_FriendlyName, &friendlyName);
SafeRelease(&propertyStore);
if (FAILED(hr))
{
printf("Unable to retrieve friendly name for device %d : %x\n", DeviceIndex, hr);
return NULL;
}
wchar_t deviceName[128];
hr = StringCbPrintf(deviceName, sizeof(deviceName), L"%s (%s)", friendlyName.vt != VT_LPWSTR ? L"Unknown" : friendlyName.pwszVal, deviceId);
if (FAILED(hr))
{
printf("Unable to format friendly name for device %d : %x\n", DeviceIndex, hr);
return NULL;
}
PropVariantClear(&friendlyName);
CoTaskMemFree(deviceId);
wchar_t *returnValue = _wcsdup(deviceName);
if (returnValue == NULL)
{
printf("Unable to allocate buffer for return\n");
return NULL;
}
return returnValue;
}
示例5: CoCreateInstance
// ----------------------------------------------------------------------------
//
AudioVolumeController* AudioVolumeController::createVolumeController( )
{
HRESULT hr;
IMMDeviceEnumerator *pEnumerator = NULL;
IMMDevice *pDefaultDevice = NULL;
IAudioEndpointVolume *endpointVolume = NULL;
LPWSTR pstrDefaultId = NULL;
IPropertyStore *pProperties = NULL;
try {
hr = CoCreateInstance(
CLSID_MMDeviceEnumerator, NULL,
CLSCTX_ALL, IID_IMMDeviceEnumerator,
(void**)&pEnumerator);
AUDIO_VOLUME_ASSERT( hr, "Cannot create COM device enumerator instance" );
// Get the default audio endpoint (if we don't get one its not an error)
hr = pEnumerator->GetDefaultAudioEndpoint( eRender, eConsole, &pDefaultDevice );
AUDIO_VOLUME_ASSERT( hr, "Cannot get default audio render device" );
hr = pDefaultDevice->OpenPropertyStore( STGM_READ, &pProperties );
AUDIO_VOLUME_ASSERT( hr, "Cannot open IMMDevice property store" );
PROPVARIANT varName;
// Initialize container for property value.
PropVariantInit(&varName);
// Get the endpoint's friendly-name property.
hr = pProperties->GetValue( PKEY_Device_DeviceDesc , &varName);
AUDIO_VOLUME_ASSERT( hr, "Cannot open IMMDevice name property" );
CString render_name = CW2A( varName.pwszVal );
DMXStudio::log_status( "Default audio render device '%s'", render_name );
PropVariantClear(&varName);
hr = pDefaultDevice->Activate( IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, NULL, (LPVOID *)&endpointVolume );
AUDIO_VOLUME_ASSERT( hr, "Cannot activate default render device" );
SAFE_RELEASE( pDefaultDevice );
SAFE_RELEASE( pProperties );
SAFE_RELEASE( pEnumerator );
CoTaskMemFree( pstrDefaultId );
return new AudioVolumeController( endpointVolume, render_name );
}
catch ( ... ) {
CoTaskMemFree( pstrDefaultId );
SAFE_RELEASE( pDefaultDevice );
SAFE_RELEASE( pProperties );
SAFE_RELEASE( pEnumerator );
throw;
}
}
示例6: IF_TRUE_ACTION_JUMP
HRESULT CSwapAPOLFX::Initialize(UINT32 cbDataSize, BYTE* pbyData)
{
HRESULT hr = S_OK;
PROPVARIANT var;
IF_TRUE_ACTION_JUMP( ((NULL == pbyData) && (0 != cbDataSize)), hr = E_INVALIDARG, Exit);
IF_TRUE_ACTION_JUMP( ((NULL != pbyData) && (0 == cbDataSize)), hr = E_POINTER, Exit);
IF_TRUE_ACTION_JUMP( (cbDataSize != sizeof(APOInitSystemEffects) ), hr = E_INVALIDARG, Exit);
APOInitSystemEffects* papoSysFxInit = (APOInitSystemEffects*)pbyData;
//
// Store locally for later reference
//
m_spAPOSystemEffectsProperties = papoSysFxInit->pAPOSystemEffectsProperties;
//
// Get the current value
//
PropVariantInit(&var);
if (m_spAPOSystemEffectsProperties != NULL)
{
// Get the state of whether channel swap LFX is enabled or not
hr = m_spAPOSystemEffectsProperties->GetValue(PKEY_Endpoint_Enable_Channel_Swap_LFX, &var);
if (SUCCEEDED(hr) && (var.vt == VT_UI4))
{
if (var.ulVal == 0L)
{
m_fEnableSwapLFX = FALSE;
}
else
{
m_fEnableSwapLFX = TRUE;
}
}
else
{
PropVariantClear(&var);
}
}
//
// Register for notification of registry updates
//
hr = m_spEnumerator.CoCreateInstance(__uuidof(MMDeviceEnumerator));
IF_FAILED_JUMP(hr, Exit);
hr = m_spEnumerator->RegisterEndpointNotificationCallback(this);
IF_FAILED_JUMP(hr, Exit);
m_bIsInitialized = true;
Exit:
return hr;
}
示例7: EnumDevice
///////////////////////////////////////////////////////////////////////////
//
// Function:
// EnumDevice
//
// Description:
// Enumerate audio device and return the device information.
//
// Parameters:
// eDataFlow: eRender for render device, eCapture for capture device
// uNumElements: Size of audio device info structure array.
// pDevicInfo: device info structure array. Caller is responsible to allocate and free
// memory. The array size is specified by uNumElements.
//
// Return:
// S_OK if successful
//
///////////////////////////////////////////////////////////////////////////////
HRESULT EnumDevice(EDataFlow eDataFlow, UINT uNumElements, AUDIO_DEVICE_INFO *pDevicInfo)
{
HRESULT hResult = S_OK;
WCHAR* pszDeviceId = NULL;
PROPVARIANT value;
UINT index, dwCount;
bool IsMicArrayDevice;
CComPtr<IMMDeviceEnumerator> spEnumerator;
CComPtr<IMMDeviceCollection> spEndpoints;
hResult = spEnumerator.CoCreateInstance(__uuidof(MMDeviceEnumerator));
IF_FAILED_JUMP(hResult, Exit);
hResult = spEnumerator->EnumAudioEndpoints(eDataFlow, DEVICE_STATE_ACTIVE, &spEndpoints);
IF_FAILED_JUMP(hResult, Exit);
hResult = spEndpoints->GetCount(&dwCount);
IF_FAILED_JUMP(hResult, Exit);
if (dwCount != uNumElements)
return E_INVALIDARG;
ZeroMemory(pDevicInfo, sizeof(AUDIO_DEVICE_INFO)*uNumElements);
for (index = 0; index < dwCount; index++)
{
CComPtr<IMMDevice> spDevice;
CComPtr<IPropertyStore> spProperties;
PropVariantInit(&value);
hResult = spEndpoints->Item(index, &spDevice);
IF_FAILED_JUMP(hResult, Exit);
hResult = spDevice->GetId(&pszDeviceId);
IF_FAILED_JUMP(hResult, Exit);
hResult = spDevice->OpenPropertyStore(STGM_READ, &spProperties);
IF_FAILED_JUMP(hResult, Exit);
hResult = spProperties->GetValue(PKEY_Device_FriendlyName, &value);
IF_FAILED_JUMP(hResult, Exit);
EndpointIsMicArray(spDevice, IsMicArrayDevice);
StringCchCopy(pDevicInfo[index].szDeviceID, MAX_STR_LEN-1, pszDeviceId);
StringCchCopy(pDevicInfo[index].szDeviceName, MAX_STR_LEN-1, value.pwszVal);
pDevicInfo[index].bIsMicArrayDevice = IsMicArrayDevice;
PropVariantClear(&value);
CoTaskMemFree(pszDeviceId);
pszDeviceId = NULL;
}
Exit:
return hResult;
}
示例8: CoCreateInstance
std::string CAESinkDirectSound::GetDefaultDevice()
{
IMMDeviceEnumerator* pEnumerator = NULL;
IMMDevice* pDevice = NULL;
IPropertyStore* pProperty = NULL;
HRESULT hr;
PROPVARIANT varName;
std::string strDevName = "default";
hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&pEnumerator);
if (FAILED(hr))
{
CLog::Log(LOGERROR, __FUNCTION__": Could not allocate WASAPI device enumerator. CoCreateInstance error code: %s", WASAPIErrToStr(hr));
goto failed;
}
hr = pEnumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, &pDevice);
if (FAILED(hr))
{
CLog::Log(LOGERROR, __FUNCTION__": Retrieval of audio endpoint enumeration failed.");
goto failed;
}
hr = pDevice->OpenPropertyStore(STGM_READ, &pProperty);
if (FAILED(hr))
{
CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint properties failed.");
goto failed;
}
PropVariantInit(&varName);
hr = pProperty->GetValue(PKEY_AudioEndpoint_FormFactor, &varName);
if (FAILED(hr))
{
CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint form factor failed.");
goto failed;
}
AEDeviceType aeDeviceType = winEndpoints[(EndpointFormFactor)varName.uiVal].aeDeviceType;
PropVariantClear(&varName);
hr = pProperty->GetValue(PKEY_AudioEndpoint_GUID, &varName);
if (FAILED(hr))
{
CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint GUID failed.");
goto failed;
}
strDevName = localWideToUtf(varName.pwszVal);
PropVariantClear(&varName);
failed:
SAFE_RELEASE(pProperty);
SAFE_RELEASE(pDevice);
SAFE_RELEASE(pEnumerator);
return strDevName;
}
示例9: PropVariantInit
STDMETHODIMP tTVPPlayerCallback::Invoke( IMFAsyncResult *pAsyncResult ) {
HRESULT hr;
MediaEventType met = MESessionClosed;
CComPtr<IMFMediaEvent> pMediaEvent;
if( SUCCEEDED(hr = owner_->GetMediaSession()->EndGetEvent( pAsyncResult, &pMediaEvent )) ) {
if( SUCCEEDED(hr = pMediaEvent->GetType(&met)) ) {
PROPVARIANT pvValue;
PropVariantInit(&pvValue);
switch( met ) {
case MESessionClosed:
owner_->OnMediaItemCleared();
break;
case MESessionPaused:
owner_->OnPause();
break;
case MESessionEnded:
owner_->OnPlayBackEnded();
break;
case MESessionNotifyPresentationTime:
break;
case MESessionRateChanged:
if( SUCCEEDED(pMediaEvent->GetValue( &pvValue )) ) {
double value;
if( FAILED(PropVariantToDouble(pvValue,&value)) ) {
value = 1.0;
}
owner_->OnRateSet(value);
} else {
owner_->OnRateSet(1.0);
}
break;
case MESessionScrubSampleComplete:
break;
case MESessionStarted:
owner_->OnPlay();
break;
case MESessionStopped:
owner_->OnStop();
break;
case MESessionStreamSinkFormatChanged:
break;
case MESessionTopologiesCleared:
break;
case MESessionTopologySet:
break;
case MESessionTopologyStatus: {
UINT32 status = MF_TOPOSTATUS_INVALID;
pMediaEvent->GetUINT32( MF_EVENT_TOPOLOGY_STATUS, &status );
owner_->OnTopologyStatus(status);
break;
}
}
PropVariantClear(&pvValue);
}
owner_->GetMediaSession()->BeginGetEvent( this, NULL );
}
return S_OK;
}
示例10: OpenPropertySet
void CWordBinaryMetadataDiscoveryWorker::DiscoverSummaryInformation(REFFMTID iidPropsertySet)
{
bool bNotFound;
OpenPropertySet(iidPropsertySet, bNotFound);
if(bNotFound)
{
ClosePropertySet();
return;
}
if(NULL == m_pPropertyStg)
throw Workshare::Exception(_T("NULL pointer encountered (m_pPropertyStg)"));
IEnumSTATPROPSTG *pEnumProp;
HRESULT hRes = m_pPropertyStg->Enum(&pEnumProp);
if(FAILED(hRes))
{
ClosePropertySet();
HandlePropertyError(_T(__FUNCTION__), _T("Enumerate user-defined properties failed"), hRes);
return;
}
STATPROPSTG PropertyInformation;
ZeroMemory(&PropertyInformation, sizeof(STATPROPSTG));
PROPSPEC propSpec;
PROPVARIANT propVar;
SetCodePageProperty();
while(S_OK == pEnumProp->Next(1, &PropertyInformation, NULL))
{
PropVariantInit(&propVar);
// Build a PROPSPEC for this property.
ZeroMemory(&propSpec, sizeof(PROPSPEC));
propSpec.ulKind = PRSPEC_PROPID;
propSpec.propid = PropertyInformation.propid;
// Read this property.
hRes = m_pPropertyStg->ReadMultiple(1, &propSpec, &propVar);
if(SUCCEEDED(hRes))
{
if (FMTID_SummaryInformation == iidPropsertySet)
AddBuiltInPropertyForSummary(propVar, PropertyInformation.propid);
else if (FMTID_DocSummaryInformation == iidPropsertySet)
AddBuiltInPropertyForDocSummary(propVar, PropertyInformation.propid);
}
else
{
CStdString sErr;
sErr.Format(_T("Failed to read property id: %d, error code: %d"), propSpec.propid, hRes);
LOG_WS_ERROR(sErr);
}
}
pEnumProp->Release();
ClosePropertySet();
}
示例11: CHECK_HR
/**
* This method is called when we receive a WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_FORMATS
* command. This message is sent when the client needs to know the possible formats supported
* by the specified content type (e.g. for image objects, the driver may choose to support JPEG and BMP files).
*
* The parameters sent to us are:
* - WPD_PROPERTY_CAPABILITIES_CONTENT_TYPE - a GUID value containing the content type
* whose formats the caller is interested in. If the value is WPD_CONTENT_TYPE_ALL, then the driver
* must return a list of all formats supported by the device.
*
* The driver should:
* - Return an IPortableDevicePropVariantCollection (of type VT_CLSID) in
* WPD_PROPERTY_CAPABILITIES_FORMATS, indicating the formats supported by the
* specified content type.
* If there are no formats supported by the specified content type, the driver should return an
* empty collection.
*/
HRESULT WpdCapabilities::OnGetSupportedFormats(
_In_ IPortableDeviceValues* pParams,
_In_ IPortableDeviceValues* pResults)
{
HRESULT hr = S_OK;
GUID guidContentType = GUID_NULL;
CComPtr<IPortableDevicePropVariantCollection> pFormats;
// First get ALL parameters for this command. If we cannot get ALL parameters
// then E_INVALIDARG should be returned and no further processing should occur.
// Get the content type whose supported formats have been requested
if (hr == S_OK)
{
hr = pParams->GetGuidValue(WPD_PROPERTY_CAPABILITIES_CONTENT_TYPE, &guidContentType);
CHECK_HR(hr, "Missing value for WPD_PROPERTY_CAPABILITIES_CONTENT_TYPE");
}
// CoCreate a collection to store the supported formats.
if (hr == S_OK)
{
hr = CoCreateInstance(CLSID_PortableDevicePropVariantCollection,
NULL,
CLSCTX_INPROC_SERVER,
IID_IPortableDevicePropVariantCollection,
(VOID**) &pFormats);
CHECK_HR(hr, "Failed to CoCreate CLSID_PortableDevicePropVariantCollection");
}
// Add the supported formats for the specified content type to the collection.
if (hr == S_OK)
{
PROPVARIANT pv = {0};
PropVariantInit(&pv);
// Don't call PropVariantClear, since we did not allocate the memory for these GUIDs
if ((guidContentType == WPD_CONTENT_TYPE_DOCUMENT) ||
((guidContentType == WPD_CONTENT_TYPE_ALL)))
{
// Add WPD_OBJECT_FORMAT_TEXT to the supported formats collection
pv.vt = VT_CLSID;
pv.puuid = (CLSID*)&WPD_OBJECT_FORMAT_TEXT;
hr = pFormats->Add(&pv);
CHECK_HR(hr, "Failed to add WPD_OBJECT_FORMAT_TEXT");
}
}
// Set the WPD_PROPERTY_CAPABILITIES_FORMATS value in the results.
if (hr == S_OK)
{
hr = pResults->SetIUnknownValue(WPD_PROPERTY_CAPABILITIES_FORMATS, pFormats);
CHECK_HR(hr, "Failed to set WPD_PROPERTY_CAPABILITIES_FORMATS");
}
return hr;
}
示例12: PropVariantInit
//! Retrieves the value associated with pkey, if it exists.
QVariant ShellNodeInfo::propertyValue(const PROPERTYKEY &pkey)
{
QVariant ret;
PROPVARIANT var;
PropVariantInit(&var);
if (d->item->GetProperty(pkey, &var) == S_OK)
ret = util::fromPROPVARIANT(var);
PropVariantClear(&var);
return ret;
}
示例13: PropVariantInit
void MFDecoderSourceReader::reset()
{
if (!m_sourceReader)
return;
PROPVARIANT vPos;
PropVariantInit(&vPos);
vPos.vt = VT_I8;
vPos.uhVal.QuadPart = 0;
m_sourceReader->SetCurrentPosition(GUID_NULL, vPos);
}
示例14: ConvertJavaToPropVariant
//nog werk nodig! met de union!!
PROPVARIANT ConvertJavaToPropVariant(JNIEnv* env, jobject jobjPropVariant)
{
//variabelen
jclass cls;
jmethodID mid;
PROPVARIANT pv;
jstring jsValue;
LPWSTR wszBuffer;
LPWSTR wszValue;
jobject jobjObjectValue;
//methode implementatie
PropVariantInit(&pv);
cls = env->FindClass("jmtp/PropVariant");
//printf("convert 1\n");
mid = env->GetMethodID(cls, "getVt", "()I");
pv.vt = static_cast<VARTYPE>(env->CallIntMethod(jobjPropVariant, mid));
//printf("convert 2\n");
int strLength;
switch(pv.vt)
{
case VT_LPWSTR:
//printf("convert 3\n");
mid = env->GetMethodID(cls, "getValue", "()Ljava/lang/Object;");
jsValue = (jstring)env->CallObjectMethod(jobjPropVariant, mid);
strLength = env->GetStringLength(jsValue);
//printf("convert3.4:%d\n", strLength);
wszBuffer = ConvertJavaStringToWCHAR(env, jsValue); //(WCHAR*)env->GetStringChars(jsValue, NULL);
wszValue = new WCHAR[strLength+1];
if (wszValue == NULL) {
//printf("conver tproblem null\n");
}
for (int i = 0; i < strLength; i++) {
wszValue[i] = wszBuffer[i];
}
wszValue[strLength] = 0;
//wcscpy_s(wszValue, strLength, wszBuffer);
//wprintf(L"convert3.5:%s\n", wszBuffer);
//wprintf(L"convert3.6:%s\n", wszValue);
delete wszBuffer;
pv.pwszVal = wszValue;
//wprintf(L"convert4:%s\n", pv.pwszVal);
break;
case VT_BOOL:
mid = env->GetMethodID(cls, "getValue", "()Ljava/lang/Object;");
jobjObjectValue = env->CallObjectMethod(jobjPropVariant, mid);
mid = env->GetMethodID(env->FindClass("java/lang/Boolean"), "booleanValue", "()Z");
pv.boolVal = env->CallBooleanMethod(jobjObjectValue, mid);
break;
}
//andere types worden momenteel niet ondersteunt
return pv;
}
示例15: PropVariantInit
void CMFCamCapture::runSession()
{
PROPVARIANT var;
PropVariantInit(&var);
HRESULT hr = S_OK;
CHECK_HR(hr = m_spSession->Start(&GUID_NULL, &var));
done:
PropVariantClear(&var);
}