PSCreatePropertyChangeArray-Funktion (propsys.h)
Erstellt einen Container für einen Satz von IPropertyChange-Objekten . Dieser Container kann mit IFileOperation verwendet werden, um eine Reihe von Eigenschaftenänderungen auf eine Gruppe von Dateien anzuwenden.
Syntax
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
);
Parameter
[in, optional] rgpropkey
Typ: const PROPERTYKEY*
Zeiger auf ein Array von PROPERTYKEY-Strukturen , die die spezifischen Eigenschaften benennen, deren Änderungen gespeichert werden. Wenn dieser Wert NULL ist, muss cChanges 0 sein.
[in, optional] rgflags
Typ: const PKA_FLAGS*
Zeiger auf ein Array mit PKA_FLAGS Werten. Wenn dieser Wert NULL ist, muss cChanges 0 sein.
[in, optional] rgpropvar
Typ: const PROPVARIANT*
Zeiger auf ein Array von PROPVARIANT-Strukturen . Wenn dieser Wert NULL ist, muss cChanges 0 sein.
[in] cChanges
Typ: UINT
Anzahl der änderungen, die angewendet werden sollen. Dies ist die Anzahl der Elemente in jedem der Arrays rgpropkey, rgflags und rgpropvar.
[in] riid
Typ: REFIID
Verweis auf die ID der angeforderten Schnittstelle.
[out] ppv
Typ: void**
Wenn diese Funktion zurückgibt, enthält den in riid angeforderten Schnittstellenzeiger. Dies ist in der Regel IPropertyChangeArray.
Rückgabewert
Typ: HRESULT
Wenn diese Funktion erfolgreich ist, gibt sie S_OK zurück. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.
Hinweise
Diese Funktion erstellt ein COM-Objekt (Component Object Model), das IPropertyChangeArray implementiert. Dieses Objekt ist ein Container für eine Reihe von IPropertyChange-Schnittstellen und kann mit IFileOperation verwendet werden, um eine Reihe von Eigenschaftenänderungen auf einen Satz von Dateien anzuwenden.
Sie müssen COM mit CoInitialize oder OleInitialize initialisieren , bevor Sie PSCreatePropertyChangeArray aufrufen. COM muss für die Lebensdauer dieses Objekts initialisiert bleiben. Das Eigenschaftsänderungsarray wird in einem Singlethread-Apartment (STA) ausgeführt.
Ein Eigenschaftsänderungsarray kann entweder durch Angeben einfacher Änderungen mithilfe der Parameter oder mithilfe verschiedener IPropertyChangeArray-Methoden zum Einfügen oder Anfügen zusätzlicher Änderungen initialisiert werden.
Die Parameter sind durch ihren Indexwert miteinander verknüpft. Für instance wird für die Eigenschaft rgpropkey[0] der neue Wert rgpropvar[0] gemäß rgflags[0] angewendet. Der cChanges-Parameter gibt an, wie viele dieser Sätze vorhanden sind. Daher sollte die Anzahl der Elemente in jedem Array gleich sein: ARRAYSIZE(rgpropkey) = ARRAYSIZE(rgflags) = ARRAYSIZE(rgpropvar) = cChanges.
IFileOperation wendet alle Änderungen im Eigenschaftenänderungsarray gleichzeitig auf eine Datei an, um zu vermeiden, dass die Datei mehrmals geöffnet wird.
Beispiele
Im folgenden Beispiel, das als Teil eines größeren Programms eingeschlossen werden soll, wird veranschaulicht, wie Sie PSCreatePropertyChangeArray verwenden, um die Comment-Eigenschaft für eine oder mehrere Dateien auf "Fun" und "Rating " auf 4 festzulegen.
// 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));
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP mit SP2, Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 mit SP1 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | propsys.h |
Bibliothek | Propsys.lib |
DLL | Propsys.dll (Version 6.0 oder höher) |
Verteilbare Komponente | Windows Desktop Search (WDS) 3.0 |