Freigeben über


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

Weitere Informationen

PSCreateSimplePropertyChange