本文整理汇总了C++中IPropertyStore::GetValue方法的典型用法代码示例。如果您正苦于以下问题:C++ IPropertyStore::GetValue方法的具体用法?C++ IPropertyStore::GetValue怎么用?C++ IPropertyStore::GetValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPropertyStore
的用法示例。
在下文中一共展示了IPropertyStore::GetValue方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetDefaultDevice
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;
}
示例2: _GetDeviceName
// Private method
// dwKeyName means:
// 0 DeviceDesc (main name)
// 1 DeviceInterface_FriendlyName (interface name)
// 2 Device_FriendlyName (main name + interface name)
void _GetDeviceName(IMMDevice *pDevice, LPWSTR pszBuffer, int bufferLen, DWORD dwKeyName)
{
static const WCHAR szDefault[] = L"<Device not available>";
HRESULT hr = E_FAIL;
IPropertyStore *pProps = NULL;
PROPVARIANT varName;
// Initialize container for property value.
PropVariantInit(&varName);
// assert(pszBuffer != NULL);
// assert(bufferLen > 0);
// assert(dwKeyName == 0 || dwKeyName == 1 || dwKeyName == 2);
if (pDevice != NULL)
{
hr = pDevice->OpenPropertyStore(STGM_READ, &pProps);
if (hr == S_OK)
{
switch (dwKeyName) {
case 0:
hr = pProps->GetValue(PKEY_Device_DeviceDesc, &varName);
break;
case 1:
hr = pProps->GetValue(PKEY_DeviceInterface_FriendlyName, &varName);
break;
case 2:
hr = pProps->GetValue(PKEY_Device_FriendlyName, &varName);
break;
}
}
}
if (hr == S_OK)
{
// Found the device name.
wcsncpy_s(pszBuffer, bufferLen, varName.pwszVal, _TRUNCATE);
}
else
{
// Failed to find the device name.
wcsncpy_s(pszBuffer, bufferLen, szDefault, _TRUNCATE);
}
PropVariantClear(&varName);
SAFE_RELEASE(pProps);
return;
}
示例3: GetDeviceName
//
// Retrieves the device friendly name for a particular device in a device collection.
//
// The returned string was allocated using malloc() so it should be freed using free();
//
String GetDeviceName(IMMDeviceCollection *DeviceCollection, UINT DeviceIndex)
{
IMMDevice *device;
LPWSTR deviceId;
HRESULT hr;
hr = DeviceCollection->Item(DeviceIndex, &device);
PersistentAssert(SUCCEEDED(hr), "DeviceCollection->Item failed");
hr = device->GetId(&deviceId);
PersistentAssert(SUCCEEDED(hr), "device->GetId failed");
IPropertyStore *propertyStore;
hr = device->OpenPropertyStore(STGM_READ, &propertyStore);
SafeRelease(&device);
PersistentAssert(SUCCEEDED(hr), "device->OpenPropertyStore failed");
PROPVARIANT friendlyName;
PropVariantInit(&friendlyName);
hr = propertyStore->GetValue(PKEY_Device_FriendlyName, &friendlyName);
SafeRelease(&propertyStore);
PersistentAssert(SUCCEEDED(hr), "propertyStore->GetValue failed");
String Result = String(UnicodeString(friendlyName.pwszVal)); // + String(" (") + String( UnicodeString(deviceId) ) + String(")")
PropVariantClear(&friendlyName);
CoTaskMemFree(deviceId);
return Result;
}
示例4: assert
static HRESULT
DeviceNameGet(
IMMDeviceCollection *dc, UINT id, wchar_t *name, size_t nameBytes)
{
HRESULT hr = 0;
IMMDevice *device = nullptr;
LPWSTR deviceId = nullptr;
IPropertyStore *ps = nullptr;
PROPVARIANT pv;
assert(dc);
assert(name);
name[0] = 0;
assert(0 < nameBytes);
PropVariantInit(&pv);
HRR(dc->Item(id, &device));
HRR(device->GetId(&deviceId));
HRR(device->OpenPropertyStore(STGM_READ, &ps));
HRG(ps->GetValue(PKEY_Device_FriendlyName, &pv));
SafeRelease(&ps);
wcsncpy_s(name, nameBytes / sizeof name[0], pv.pwszVal, _TRUNCATE);
end:
PropVariantClear(&pv);
CoTaskMemFree(deviceId);
SafeRelease(&ps);
return hr;
}
示例5: GetBufferProgress
HRESULT CPlayer::GetBufferProgress( DWORD *pProgress )
{
IPropertyStore *pProp = NULL;
PROPVARIANT var;
// Get the property store from the media session.
HRESULT hr = MFGetService(
m_pSession,
MFNETSOURCE_STATISTICS_SERVICE,
IID_PPV_ARGS( &pProp )
);
if ( SUCCEEDED( hr ) )
{
PROPERTYKEY key;
key.fmtid = MFNETSOURCE_STATISTICS;
key.pid = MFNETSOURCE_BUFFERPROGRESS_ID;
hr = pProp->GetValue( key, &var );
}
if ( SUCCEEDED( hr ) )
{
*pProgress = var.lVal;
// cout << "buff prog " << *pProgress << endl;
}
PropVariantClear( &var );
SafeRelease( &pProp );
return hr;
}
示例6: createVolumeController
// ----------------------------------------------------------------------------
//
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;
}
}
示例7: 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;
}
示例8: GetString
PLUGIN_EXPORT LPCWSTR GetString(void* data)
{
static WCHAR result[256];
wsprintf(result, L"ERROR");
if (!InitCom() || !pEnumerator)
{
UnInitCom();
wsprintf(result, L"ERROR - Initializing COM");
return result;
}
IMMDevice * pEndpoint = 0;
if (pEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &pEndpoint) == S_OK)
{
IPropertyStore * pProps = 0;
if (pEndpoint->OpenPropertyStore(STGM_READ, &pProps) == S_OK)
{
PROPVARIANT varName;
PropVariantInit(&varName);
if (pProps->GetValue(PKEY_Device_DeviceDesc, &varName) == S_OK)
{
wcsncpy(result, varName.pwszVal, 255);
PropVariantClear(&varName);
SAFE_RELEASE(pProps)
SAFE_RELEASE(pEndpoint)
UnInitCom();
return result;
}
else
{
PropVariantClear(&varName);
SAFE_RELEASE(pProps)
SAFE_RELEASE(pEndpoint)
wsprintf(result, L"ERROR - Getting Device Description");
}
}
else
{
SAFE_RELEASE(pProps)
SAFE_RELEASE(pEndpoint)
wsprintf(result, L"ERROR - Getting Property");
}
}
else
{
SAFE_RELEASE(pEndpoint)
wsprintf(result, L"ERROR - Getting Default Device");
}
UnInitCom();
return result;
}
示例9: CoCreateInstance
const QHash<QString, QString> WASAPISystem::getDevices(EDataFlow dataflow) {
QHash<QString, QString> devices;
HRESULT hr;
IMMDeviceEnumerator *pEnumerator = NULL;
IMMDeviceCollection *pCollection = NULL;
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), reinterpret_cast<void **>(&pEnumerator));
if (! pEnumerator || FAILED(hr)) {
qWarning("WASAPI: Failed to instatiate enumerator");
} else {
hr = pEnumerator->EnumAudioEndpoints(dataflow, DEVICE_STATE_ACTIVE, &pCollection);
if (! pCollection || FAILED(hr)) {
qWarning("WASAPI: Failed to enumerate");
} else {
devices.insert(QString(), tr("Default Device"));
UINT ndev = 0;
pCollection->GetCount(&ndev);
for (unsigned int idx=0;idx<ndev;++idx) {
IMMDevice *pDevice = NULL;
IPropertyStore *pStore = NULL;
pCollection->Item(idx, &pDevice);
pDevice->OpenPropertyStore(STGM_READ, &pStore);
LPWSTR strid = NULL;
pDevice->GetId(&strid);
PROPVARIANT varName;
PropVariantInit(&varName);
pStore->GetValue(PKEY_Device_FriendlyName, &varName);
devices.insert(QString::fromWCharArray(strid), QString::fromWCharArray(varName.pwszVal));
PropVariantClear(&varName);
CoTaskMemFree(strid);
pStore->Release();
pDevice->Release();
}
pCollection->Release();
}
pEnumerator->Release();
}
return devices;
}
示例10: GetAudioDeviceDetails
HRESULT GetAudioDeviceDetails(_In_ IMMDevice* immDevice, _Out_ AudioDevice* pInfo)
{
IPropertyStore *propStore = nullptr;
PROPVARIANT varName;
PROPVARIANT varId;
PropVariantInit(&varId);
PropVariantInit(&varName);
HRESULT hResult = immDevice->OpenPropertyStore(STGM_READ, &propStore);
if (SUCCEEDED(hResult)) {
hResult = propStore->GetValue(PKEY_AudioEndpoint_Path, &varId);
}
if (SUCCEEDED(hResult)) {
hResult = propStore->GetValue(PKEY_Device_FriendlyName, &varName);
}
if (SUCCEEDED(hResult)) {
assert(varId.vt == VT_LPWSTR);
assert(varName.vt == VT_LPWSTR);
// Now save somewhere the device display name & id
pInfo->name = varName.pwszVal;
pInfo->id = varId.pwszVal;
}
PropVariantClear(&varName);
PropVariantClear(&varId);
if (propStore != nullptr) {
propStore->Release();
}
return hResult;
}
示例11: GetDeviceInfo
static void GetDeviceInfo(IMMDevice *pDevice, MFDevice *pDev)
{
wchar_t *pWC;
pDevice->GetId(&pWC);
MFString_CopyUTF16ToUTF8(pDev->strings[MFDS_ID], pWC);
CoTaskMemFree(pWC);
DWORD state;
pDevice->GetState(&state);
UpdateState(pDev, state);
IPropertyStore *pProps;
pDevice->OpenPropertyStore(STGM_READ, &pProps);
PROPVARIANT v;
PropVariantInit(&v);
pProps->GetValue(PKEY_DeviceInterface_FriendlyName, &v);
MFString_CopyUTF16ToUTF8(pDev->strings[MFDS_InterfaceName], v.pwszVal);
PropVariantClear(&v);
PropVariantInit(&v);
pProps->GetValue(PKEY_Device_DeviceDesc, &v);
MFString_CopyUTF16ToUTF8(pDev->strings[MFDS_Description], v.pwszVal);
PropVariantClear(&v);
PropVariantInit(&v);
pProps->GetValue(PKEY_Device_FriendlyName, &v);
MFString_CopyUTF16ToUTF8(pDev->strings[MFDS_DeviceName], v.pwszVal);
PropVariantClear(&v);
PropVariantInit(&v);
pProps->GetValue(PKEY_Device_Manufacturer, &v);
MFString_CopyUTF16ToUTF8(pDev->strings[MFDS_Manufacturer], v.pwszVal ? v.pwszVal : L"");
PropVariantClear(&v);
pProps->Release();
}
示例12: GetDeviceName
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 nullptr;
}
hr = device->GetId(&deviceId);
if (FAILED(hr))
{
printf("Unable to get device %d id: %x\n", DeviceIndex, hr);
return nullptr;
}
IPropertyStore *propertyStore;
hr = device->OpenPropertyStore(STGM_READ, &propertyStore);
if (FAILED(hr))
{
printf("Unable to open device %d property store: %x\n", DeviceIndex, hr);
return nullptr;
}
PROPVARIANT friendlyName;
PropVariantInit(&friendlyName);
hr = propertyStore->GetValue(PKEY_Device_FriendlyName, &friendlyName);
if (FAILED(hr))
{
printf("Unable to retrieve friendly name for device %d : %x\n", DeviceIndex, hr);
return nullptr;
}
DVAR(friendlyName.vt);
if (friendlyName.vt != VT_LPWSTR)
DVAR("Unknown");
else
DVAR((const wchar_t *)friendlyName.pwszVal);
PropVariantClear(&friendlyName);
CoTaskMemFree(deviceId);
return nullptr;
}
示例13: audio_device_get_list
Array AudioDriverWASAPI::audio_device_get_list(bool p_capture) {
Array list;
IMMDeviceCollection *devices = NULL;
IMMDeviceEnumerator *enumerator = NULL;
list.push_back(String("Default"));
CoInitialize(NULL);
HRESULT hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void **)&enumerator);
ERR_FAIL_COND_V(hr != S_OK, Array());
hr = enumerator->EnumAudioEndpoints(p_capture ? eCapture : eRender, DEVICE_STATE_ACTIVE, &devices);
ERR_FAIL_COND_V(hr != S_OK, Array());
UINT count = 0;
hr = devices->GetCount(&count);
ERR_FAIL_COND_V(hr != S_OK, Array());
for (ULONG i = 0; i < count; i++) {
IMMDevice *device = NULL;
hr = devices->Item(i, &device);
ERR_BREAK(hr != S_OK);
IPropertyStore *props = NULL;
hr = device->OpenPropertyStore(STGM_READ, &props);
ERR_BREAK(hr != S_OK);
PROPVARIANT propvar;
PropVariantInit(&propvar);
hr = props->GetValue(PKEY_Device_FriendlyName, &propvar);
ERR_BREAK(hr != S_OK);
list.push_back(String(propvar.pwszVal));
PropVariantClear(&propvar);
props->Release();
device->Release();
}
devices->Release();
enumerator->Release();
return list;
}
示例14: GetPropertyValueForArray
HRESULT GetPropertyValueForArray(PCWSTR pszFilename, PCWSTR pszCanonicalName,char*value)
{
// Convert the Canonical name of the property to PROPERTYKEY
PROPERTYKEY key;
HRESULT hr = PSGetPropertyKeyFromName(pszCanonicalName, &key);
if (SUCCEEDED(hr))
{
IPropertyStore* pps = NULL;
// Call the helper to get the property store for the initialized item
hr = GetPropertyStore(pszFilename, GPS_DEFAULT, &pps);
if (SUCCEEDED(hr))
{
PROPVARIANT propvarValue = { 0 };
HRESULT hr = pps->GetValue(key, &propvarValue);
if (SUCCEEDED(hr))
{
PWSTR pszDisplayValue = NULL;
hr = PSFormatForDisplayAlloc(key, propvarValue, PDFF_DEFAULT, &pszDisplayValue);
if (SUCCEEDED(hr))
{
wprintf(L"%s = %s\n", pszCanonicalName, pszDisplayValue);
if (value!= NULL)
{
WideCharToMultiByte(CP_OEMCP, 0, pszDisplayValue, -1, value, 1000, NULL, FALSE);
}
CoTaskMemFree(pszDisplayValue);
}
PropVariantClear(&propvarValue);
}
//return hr;
//hr = PrintProperty(pps, key, pszCanonicalName);
pps->Release();
}
else
{
wprintf(L"Error %x: getting the propertystore for the item.\n", hr);
}
}
else
{
wprintf(L"Invalid property specified: %s\n", pszCanonicalName);
}
return hr;
}
示例15: addDeviceSelectorItem
static void addDeviceSelectorItem(QComboBox *const deviceSelector, IMMDevice *const pEndpoint) {
LPWSTR pwszID = 0;
IPropertyStore *pProps = 0;
pEndpoint->GetId(&pwszID);
pEndpoint->OpenPropertyStore(STGM_READ, &pProps);
if (pwszID && pProps) {
PROPVARIANT varName;
std::memset(&varName, 0, sizeof varName);
if (SUCCEEDED(pProps->GetValue(PKEY_Device_FriendlyName, &varName))) {
deviceSelector->addItem(QString::fromWCharArray(varName.pwszVal),
QVariant::fromValue(std::wstring(pwszID)));
CoTaskMemFree(varName.pwszVal);
//PropVariantClear(&varName);
}
CoTaskMemFree(pwszID);
pProps->Release();
}
}