Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os Dispositivos Portáteis Windows podem suportar uma ou mais categorias funcionais. Essas categorias são descritas na tabela a seguir.
| Categoria | Descrição |
|---|---|
| Captura de áudio | O dispositivo pode ser usado para gravar áudio. |
| Informações de renderização | O dispositivo fornece dados que descrevem os arquivos de mídia que ele é capaz de renderizar. |
| Serviço de mensagens curtas (SMS) | O dispositivo suporta mensagens de texto. |
| Captura de imagens fixas | O dispositivo pode ser usado para capturar imagens estáticas. |
| Armazenamento | O dispositivo pode ser usado para armazenar arquivos. |
A função ListFunctionalCategories no módulo DeviceCapabilities.cpp demonstra a recuperação de categorias funcionais para um dispositivo selecionado.
Seu aplicativo pode recuperar as categorias funcionais suportadas por um dispositivo usando as interfaces descritas na tabela a seguir.
| Interface | Descrição |
|---|---|
| Interface de Capacidades de Dispositivo Portátil IPortableDeviceCapabilities | Fornece acesso aos métodos de obtenção da categoria funcional. |
| Interface IPortableDevicePropVariantCollection | Usado para enumerar e armazenar dados de categoria funcional. |
A primeira tarefa realizada pelo aplicativo de exemplo é a recuperação de um objetoIPortableDeviceCapabilities, que é usado para recuperar as categorias funcionais no dispositivo selecionado.
HRESULT hr = S_OK;
CComPtr<IPortableDeviceCapabilities> pCapabilities;
CComPtr<IPortableDevicePropVariantCollection> pCategories;
DWORD dwNumCategories = 0;
if (pDevice == NULL)
{
printf("! A NULL IPortableDevice interface pointer was received\n");
return;
}
// Get an IPortableDeviceCapabilities interface from the IPortableDevice interface to
// access the device capabilities-specific methods.
hr = pDevice->Capabilities(&pCapabilities);
if (FAILED(hr))
{
printf("! Failed to get IPortableDeviceCapabilities from IPortableDevice, hr = 0x%lx\n",hr);
}
// Get all functional categories supported by the device.
if (SUCCEEDED(hr))
{
hr = pCapabilities->GetFunctionalCategories(&pCategories);
if (FAILED(hr))
{
printf("! Failed to get functional categories from the device, hr = 0x%lx\n",hr);
}
}
As categorias recuperadas são armazenadas em um IPortableDevicePropVariantCollection objeto.
A próxima etapa é a enumeração e exibição das categorias suportadas. A primeira etapa que o aplicativo de exemplo realiza é recuperar a contagem de categorias suportadas. Em seguida, ele usa essa contagem para iterar através do objeto IPortableDevicePropVariantCollection que contém as categorias suportadas.
if (SUCCEEDED(hr))
{
hr = pCategories->GetCount(&dwNumCategories);
if (FAILED(hr))
{
printf("! Failed to get number of functional categories, hr = 0x%lx\n",hr);
}
}
printf("\n%d Functional Categories Found on the device\n\n", dwNumCategories);
// Loop through each functional category and display its name
if (SUCCEEDED(hr))
{
for (DWORD dwIndex = 0; dwIndex < dwNumCategories; dwIndex++)
{
PROPVARIANT pv = {0};
PropVariantInit(&pv);
hr = pCategories->GetAt(dwIndex, &pv);
if (SUCCEEDED(hr))
{
// We have a functional category. It is assumed that
// functional categories are returned as VT_CLSID
// VarTypes.
if (pv.puuid != NULL)
{
// Display the functional category name
DisplayFunctionalCategory(*pv.puuid);
printf("\n");
}
}
PropVariantClear(&pv);
}
}
Tópicos relacionados