Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Recupera sincrónicamente un conjunto de propiedades para un objeto especificado opcionalmente en función de los parámetros extendidos especificados.
Sintaxis
HRESULT DevGetObjectPropertiesEx(
[in] DEV_OBJECT_TYPE ObjectType,
[in] PCWSTR pszObjectId,
[in] ULONG QueryFlags,
[in] ULONG cRequestedProperties,
[in] const DEVPROPCOMPKEY *pRequestedProperties,
[in] ULONG cExtendedParameterCount,
[in] const DEV_QUERY_PARAMETER *pExtendedParameters,
[out] PULONG pcPropertyCount,
[out] const DEVPROPERTY **ppProperties
);
Parámetros
[in] ObjectType
Valor de la DEV_OBJECT_TYPE que determina el tipo de objeto para el que se van a recuperar las propiedades.
[in] pszObjectId
Identidad del objeto para el que se van a recuperar las propiedades.
[in] QueryFlags
Combinación de DEV_QUERY_FLAGS valores que se combinan mediante una operación OR bit a bit. No es válido pasar
[in] cRequestedProperties
Número de estructuras de
[in] pRequestedProperties
Proporciona una matriz de estructuras de DEVPROPCOMPKEY que especifican las propiedades que se deben recuperar para el objeto especificado.
El campo LocaleName del estructura de DEVPROPCOMPKEY se omite y debe establecerse en NULL.
Si cRequestedProperties es 0, debe ser NULL.
[in] cExtendedParameterCount
Reservado para el uso del sistema. Debe establecerse en 0.
[in] pExtendedParameters
Reservado para el uso del sistema. Debe establecerse en NULL.
[out] pcPropertyCount
Número de estructuras de
[out] ppProperties
Puntero que recibe la matriz recién asignada de resultados DEVPROPERTY. Los llamadores deben liberar el puntero mediante DevFreeObjectProperties.
Valor devuelto
S_OK se devuelve si la función evaluó correctamente los criterios de búsqueda y devolvió objetos coincidentes; de lo contrario, es un valor de error adecuado.
Observaciones
Esta función es una manera eficaz de recuperar de forma sincrónica un conjunto de propiedades de un objeto dado su tipo e identidad. La matriz de propiedades devueltas debe liberarse mediante DevFreeObjectProperties. Si no existe una propiedad solicitada, ppProperties seguirán contienendo una entrada para esa propiedad, pero la entrada tendrá un tipo de DEVPROP_TYPE_EMPTY.
Ejemplo
En el ejemplo siguiente se muestra cómo llamar a DevGetObjectPropertiesEx para recuperar un conjunto de propiedades solicitadas y, a continuación, llamar a DevFindProperty para buscar una propiedad determinada dentro de una matriz de estructuras DEVPROPERTY.
void
Example1(PCWSTR DeviceInstancePath)
{
HRESULT hr = S_OK;
const DEVPROPERTY* TempProperty = NULL;
ULONG PropertyCount = 0;
const DEVPROPERTY* PropertyList = NULL;
DEVPROPCOMPKEY RequestedProperties[] =
{
{ DEVPKEY_Device_HardwareIds, DEVPROP_STORE_SYSTEM, NULL },
{ DEVPKEY_Device_CompatibleIds, DEVPROP_STORE_SYSTEM, NULL }
};
hr = DevGetObjectPropertiesEx(DevObjectTypeDevice,
DeviceInstancePath,
DevQueryFlagNone,
RTL_NUMBER_OF(RequestedProperties),
RequestedProperties,
0,
NULL,
&PropertyCount,
&PropertyList);
if (FAILED(hr))
{
wprintf(L"Failed to retrieve properties. hr = 0x%08x\n", hr);
goto exit;
}
wprintf(L"Hardware IDs:\n");
TempProperty = DevFindProperty(&DEVPKEY_Device_HardwareIds,
DEVPROP_STORE_SYSTEM,
NULL,
PropertyCount,
PropertyList);
if ((TempProperty == NULL) ||
(TempProperty->Type == DEVPROP_TYPE_EMPTY) ||
(TempProperty->Buffer == NULL))
{
wprintf(L"<none>\n");
}
else if ((TempProperty->Type != DEVPROP_TYPE_STRING_LIST) ||
(TempProperty->BufferSize < sizeof(WCHAR)))
{
wprintf(L"Device '%ws' has a corrupted Hardware IDs property.\n",
DeviceInstancePath);
}
else
{
for (PCWSTR CurrentId = (PCWSTR)TempProperty->Buffer;
*CurrentId != L'\0';
CurrentId += wcslen(CurrentId) + 1)
{
wprintf(L"%ws\n", CurrentId);
}
}
wprintf(L"\nCompatible IDs:\n");
TempProperty = DevFindProperty(&DEVPKEY_Device_CompatibleIds,
DEVPROP_STORE_SYSTEM,
NULL,
PropertyCount,
PropertyList);
if ((TempProperty == NULL) ||
(TempProperty->Type == DEVPROP_TYPE_EMPTY) ||
(TempProperty->Buffer == NULL))
{
wprintf(L"<none>\n");
}
else if ((TempProperty->Type != DEVPROP_TYPE_STRING_LIST) ||
(TempProperty->BufferSize < sizeof(WCHAR)))
{
wprintf(L"Device '%ws' has a corrupted Compatible IDs property.\n",
DeviceInstancePath);
}
else
{
for (PCWSTR CurrentId = (PCWSTR)TempProperty->Buffer;
*CurrentId != L'\0';
CurrentId += wcslen(CurrentId) + 1)
{
wprintf(L"%ws\n", CurrentId);
}
}
exit:
if (PropertyList != NULL)
{
DevFreeObjectProperties(PropertyCount, PropertyList);
}
return;
}
Requisitos
| Requisito | Valor |
|---|---|
| cliente mínimo admitido | Windows 10, versión 1809 |
| servidor mínimo admitido | Windows Server 2019 |
| encabezado de |
devquery.h |
| biblioteca de |
Onecore.lib |
| DLL de |
Cfgmgr32.dll |