Função PSCreatePropertyChangeArray (propsys.h)
Cria um contêiner para um conjunto de objetos IPropertyChange . Esse contêiner pode ser usado com IFileOperation para aplicar um conjunto de alterações de propriedade a um conjunto de arquivos.
Sintaxe
PSSTDAPI PSCreatePropertyChangeArray(
[in, optional] const PROPERTYKEY *rgpropkey,
[in, optional] const PKA_FLAGS *rgflags,
[in, optional] const PROPVARIANT *rgpropvar,
[in] UINT cChanges,
[in] REFIID riid,
[out] void **ppv
);
Parâmetros
[in, optional] rgpropkey
Tipo: const PROPERTYKEY*
Ponteiro para uma matriz de estruturas PROPERTYKEY que nomeia as propriedades específicas cujas alterações estão sendo armazenadas. Se esse valor for NULL, cChanges deverá ser 0.
[in, optional] rgflags
Tipo: const PKA_FLAGS*
Ponteiro para uma matriz de valores PKA_FLAGS . Se esse valor for NULL, cChanges deverá ser 0.
[in, optional] rgpropvar
Tipo: const PROPVARIANT*
Ponteiro para uma matriz de estruturas PROPVARIANT . Se esse valor for NULL, cChanges deverá ser 0.
[in] cChanges
Tipo: UINT
Contagem de alterações a serem aplicadas. Esse é o número de elementos em cada uma das matrizes rgpropkey, rgflags e rgpropvar.
[in] riid
Tipo: REFIID
Referência à ID da interface solicitada.
[out] ppv
Tipo: void**
Quando essa função retorna, contém o ponteiro de interface solicitado em riid. Normalmente, isso é IPropertyChangeArray.
Retornar valor
Tipo: HRESULT
Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Essa função cria um objeto COM (Component Object Model) que implementa IPropertyChangeArray. Esse objeto é um contêiner para um conjunto de interfaces IPropertyChange e pode ser usado com IFileOperation para aplicar um conjunto de alterações de propriedade a um conjunto de arquivos.
Você deve inicializar COM com CoInitialize ou OleInitialize antes de chamar PSCreatePropertyChangeArray. O COM deve permanecer inicializado durante o tempo de vida deste objeto. A matriz de alteração de propriedade é executada em um STA (apartamento de thread único).
Uma matriz de alteração de propriedade pode ser inicializada especificando alterações simples usando os parâmetros ou usando vários métodos IPropertyChangeArray para inserir ou acrescentar alterações adicionais.
Os parâmetros são vinculados por seu valor de índice. Por exemplo, para a propriedade rgpropkey[0], o novo valor rgpropvar[0] é aplicado conforme especificado por rgflags[0]. O parâmetro cChanges indica quantos desses conjuntos existem. Portanto, o número de elementos em cada matriz deve ser o mesmo: ARRAYSIZE(rgpropkey) = ARRAYSIZE(rgflags) = ARRAYSIZE(rgpropvar) = cChanges.
IFileOperation aplica todas as alterações na matriz de alteração de propriedade a um arquivo simultaneamente para evitar abrir o arquivo várias vezes.
Exemplos
O exemplo a seguir, a ser incluído como parte de um programa maior, demonstra como usar PSCreatePropertyChangeArray para definir a propriedade Comment como "Fun" e Rating como 4 em um ou mais arquivos.
// IFileOperation *pfo;
// Assume variable pfo has been initialized by calling SetOperationFlags,
// ApplyPropertiesToItems, and SetProgressMessage as appropriate.
PROPVARIANT rgpropvar[2] = {0};
HRESULT hr = InitPropVariantFromString(L"Fun", &rgpropvar[0]);
if (SUCCEEDED(hr))
{
hr = InitPropVariantFromUInt32(RATING_FOUR_STARS_SET, &rgpropvar[1]);
if (SUCCEEDED(hr))
{
REFPROPERTYKEY rgkey[2] = {PKEY_Comment, PKEY_Rating};
PKA_FLAGS rgflags[2] = {PKA_SET, PKA_SET};
IPropertyChangeArray *pChangeArray;
hr = PSCreatePropertyChangeArray(rgkey, rgflags, rgpropvar, 2, IID_PPV_ARGS(&pChangeArray));
if (SUCCEEDED(hr))
{
hr = pfo->SetProperties(pChangeArray);
if (SUCCEEDED(hr))
{
hr = pfo->PerformOperations();
}
pChangeArray->Release();
}
}
ClearPropVariantArray(rgpropvar, ARRAYSIZE(rgpropvar));
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP com SP2, Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 com SP1 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | propsys.h |
Biblioteca | Propsys.lib |
DLL | Propsys.dll (versão 6.0 ou posterior) |
Redistribuível | Pesquisa da Área de Trabalho do Windows (WDS) 3.0 |