CLUSPROP_BUFFER_HELPER Union (clusapi.h)
Wird zum Erstellen oder Analysieren einer Eigenschaftsliste oder einer Wertliste verwendet.
Syntax
typedef union CLUSPROP_BUFFER_HELPER {
BYTE *pb;
WORD *pw;
DWORD *pdw;
LONG *pl;
LPWSTR psz;
PCLUSPROP_LIST pList;
PCLUSPROP_SYNTAX pSyntax;
PCLUSPROP_PROPERTY_NAME pName;
PCLUSPROP_VALUE pValue;
PCLUSPROP_BINARY pBinaryValue;
PCLUSPROP_WORD pWordValue;
PCLUSPROP_DWORD pDwordValue;
PCLUSPROP_LONG pLongValue;
PCLUSPROP_ULARGE_INTEGER pULargeIntegerValue;
PCLUSPROP_LARGE_INTEGER pLargeIntegerValue;
PCLUSPROP_SZ pStringValue;
PCLUSPROP_MULTI_SZ pMultiSzValue;
PCLUSPROP_SECURITY_DESCRIPTOR pSecurityDescriptor;
PCLUSPROP_RESOURCE_CLASS pResourceClassValue;
PCLUSPROP_RESOURCE_CLASS_INFO pResourceClassInfoValue;
PCLUSPROP_DISK_SIGNATURE pDiskSignatureValue;
PCLUSPROP_SCSI_ADDRESS pScsiAddressValue;
PCLUSPROP_DISK_NUMBER pDiskNumberValue;
PCLUSPROP_PARTITION_INFO pPartitionInfoValue;
PCLUSPROP_REQUIRED_DEPENDENCY pRequiredDependencyValue;
PCLUSPROP_PARTITION_INFO_EX pPartitionInfoValueEx;
PCLUSPROP_PARTITION_INFO_EX2 pPartitionInfoValueEx2;
PCLUSPROP_FILETIME pFileTimeValue;
} CLUSPROP_BUFFER_HELPER, *PCLUSPROP_BUFFER_HELPER;
Member
pb
Zeiger auf einen Puffer, der ein Bytearray enthält.
pw
Zeiger auf einen Puffer, der ein Array von WORD-Werten enthält.
pdw
Zeiger auf einen Puffer, der ein Array von DWORD-Werten enthält.
pl
Zeiger auf einen Puffer, der ein Array von signierten langen Werten enthält.
psz
Zeiger auf einen Puffer, der einen MIT NULL beendeten Unicode-Zeichenfolgenwert enthält.
pList
Zeiger auf eine CLUSPROP_LIST Struktur, die den Anfang einer Eigenschaftsliste beschreibt.
pSyntax
Zeiger auf eine CLUSPROP_SYNTAX Struktur, die das Format und den Typ eines Werts beschreibt.
pName
Zeiger auf eine CLUSPROP_PROPERTY_NAME-Struktur , die einen Eigenschaftsnamenswert enthält.
pValue
Zeiger auf eine CLUSPROP_VALUE Struktur, die das Format, den Typ und die Länge eines Datenwerts beschreibt.
pBinaryValue
Zeiger auf eine CLUSPROP_BINARY Struktur, die einen binären Datenwert enthält.
pWordValue
Zeiger auf eine CLUSPROP_WORD-Struktur , die einen numerischen Wert enthält.
pDwordValue
Zeiger auf eine CLUSPROP_DWORD-Struktur , die einen numerischen Wert enthält.
pLongValue
Zeiger auf eine CLUSPROP_LONG-Struktur , die einen signierten long-Wert enthält.
pULargeIntegerValue
Zeiger auf eine CLUSPROP_ULARGE_INTEGER-Struktur , die einen großen ganzzahligen Wert ohne Vorzeichen enthält.
pLargeIntegerValue
Zeiger auf eine CLUSPROP_LARGE_INTEGER-Struktur , die einen großen ganzzahligen Wert enthält.
pStringValue
Zeiger auf eine CLUSPROP_SZ-Struktur , die einen wert mit NULL beendeten Unicode-Zeichenfolge enthält.
pMultiSzValue
Zeiger auf eine CLUSPROP_MULTI_SZ-Struktur , die mehrere Unicode-Zeichenfolgenwerte mit Null-Endung enthält.
pSecurityDescriptor
Zeiger auf eine CLUSPROP_SECURITY_DESCRIPTOR-Struktur , die einen Sicherheitsdeskriptor enthält.
pResourceClassValue
Zeiger auf eine CLUSPROP_RESOURCE_CLASS-Struktur , die einen Ressourcenklassenwert enthält.
pResourceClassInfoValue
Zeiger auf eine CLUSPROP_RESOURCE_CLASS_INFO-Struktur , die einen Ressourcenklasseninformationswert enthält.
pDiskSignatureValue
Zeiger auf eine CLUSPROP_DISK_SIGNATURE Struktur, die einen Datenträgersignaturwert enthält.
pScsiAddressValue
Zeiger auf eine CLUSPROP_SCSI_ADDRESS-Struktur , die einen SCSI-Adresswert enthält.
pDiskNumberValue
Zeiger auf eine CLUSPROP_DISK_NUMBER Struktur, die einen Datenträgernummerwert enthält.
pPartitionInfoValue
Zeiger auf eine CLUSPROP_PARTITION_INFO-Struktur , die einen Partitionsinformationswert enthält.
pRequiredDependencyValue
Zeiger auf eine CLUSPROP_REQUIRED_DEPENDENCY-Struktur , die einen Ressourcenabhängigkeitswert enthält.
pPartitionInfoValueEx
Zeiger auf eine CLUSPROP_PARTITION_INFO_EX-Struktur , die einen Partitionsinformationswert enthält.
pPartitionInfoValueEx2
Ein Zeiger auf eine CLUSPROP_PARTITION_INFO_EX2-Struktur , die einen Partitionsinformationswert enthält.
Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 und Windows Server 2008: Dieser Member ist vor Windows Server 2016 nicht verfügbar.
pFileTimeValue
Zeiger auf eine CLUSPROP_FILETIME-Struktur , die einen Datums-/Uhrzeitwert enthält.
Hinweise
Die CLUSPROP_BUFFER_HELPER-Struktur ist nützlich beim Arbeiten mit Eigenschaften- und Wertlisten. Anwendungen können einen generischen CLUSPROP_BUFFER_HELPER-Zeiger verwenden, um durch Offsets durch die Einträge einer Eigenschafts- oder Wertliste voranzuschreiten und Werte abzurufen oder festzulegen, ohne in den entsprechenden Datentyp umwandeln zu müssen.
Eine alternative Struktur , RESUTIL_PROPERTY_ITEM, kann auch verwendet werden, um mit mehreren Eigenschaften zu arbeiten.
Gehen Sie vorsichtig vor, wenn Sie auf große ganzzahlige Werte in DWORD-ausgerichteten Strukturen verweisen, z. B. Wertlisten, Eigenschaftenlisten und Parameterblöcke. Bei Windows Server für Itanium-basierten Systemen beginnt ein natürlich ausgerichteter ganzzahliger Wert immer mit einer Adresse, die auf 0 oder 8 Stunden endet. Die DWORD-Ausrichtung kann dazu führen, dass große Werte an nicht ausgerichteten Grenzen beginnen (Adressen, die auf 4h oder C enden), was zu einem Ausrichtungsfehler führt, wenn die Daten gelesen oder geschrieben werden. Sie können Ausrichtungsfehler vermeiden, indem Sie die hohen und niedrigen Teile großer Werte separat behandeln oder lokale Variablen verwenden, die garantiert auf natürliche Weise ausgerichtet werden.
Beispiele
Weitere Informationen finden Sie unter Erstellen von Eigenschaftenlisten, Analysieren von Eigenschaftenlisten, Erstellen von Wertlisten und Analysieren einer Wertliste.
//////////////////////////////////////////////////////////////////////
//
// HOW TO USE CLUSPROP_BUFFER HELPER
//
// (1) Position cbh to the next read or write location.
// (2) Read or write data using an appropriate pointer.
// (3) Check position within buffer.
//
// Repeat (1)(2)(3)
//
//////////////////////////////////////////////////////////////////////
void ClusDocEx_UsingCBH()
{
LPVOID lp = LocalAlloc( LPTR, 100 ); // It is important for cbh
// to know the allocated
// size.
CLUSPROP_BUFFER_HELPER cbh;
// ( 1 )
//
// Position cbh. The pb member is convenient for
// targeting single bytes.
//
cbh.pb = (LPBYTE) lp;
//
// The pb member points to the first byte of lp.
//
// lp -----> 0 0 0 0 0 0 0 0 0 0 0 ... 0
//
// cbh.pb-->|-|
//
//
// Note what happens when different cbh pointer types are used:
//
// lp -----> 0 0 0 0 0 0 0 0 0 0 0 0 ... 0
//
// cbh.pdw -->|-------|
// cbh.psz -->|-|
// cbh.pValue -->|---------------|
// cbh.pValue->Syntax.dw-->|-------|
// cbh.pValue->cbLength -->|-------|
//
//
// The configuration of bytes that will be affected by a read
// or write operation depends on the type of pointer used.
//
// ( 2 )
//
// Read or write data to the present location. Note how the
// structure pointers let you "reach over" intervening members.
//
cbh.pValue->Syntax.dw = CLUSPROP_SYNTAX_LIST_VALUE_DWORD;
cbh.pValue->cbLength = sizeof( DWORD );
cbh.pDwordValue->dw = 0x0000EEEEL;
//
// Result: lp ----->| syntax | length | value | 0 0 0 0 ... 0
//
// ( 3 )
//
// Check your remaining space. Be sure you have room to advance
// cbh past the current data and perform a read operation on the
// next value.
//
DWORD cbPosition = cbh.pb - (LPBYTE) lp;
DWORD cbAdvance = ClusDocEx_ListEntrySize( sizeof( DWORD ) ); // See "ClusDocEx.h"
if( ( cbPosition + cbAdvance + sizeof( DWORD ) ) > 100 )
{
// handle the fact that there's more data than the reported size of the buffer
}
//
// Repeat ( 1 ), ( 2 ), and ( 3 ) for the next value:
//
// Position cbh
cbh.pb += cbAdvance;
// Write next entry
cbh.pStringValue->Syntax.dw = CLUSPROP_SYNTAX_LIST_VALUE_SZ;
cbh.pStringValue->cbLength = ( lstrlenW( L"String Value" ) + 1 ) * sizeof( WCHAR );
StringCchCopyW( cbh.pStringValue->sz, cbh.pStringValue->cbLength, L"String Value" );
// Check space
cbPosition = cbh.pb - (LPBYTE) lp;
cbAdvance = ClusDocEx_ListEntrySize( cbh.pStringValue->cbLength );
if( ( cbPosition + cbAdvance + sizeof( DWORD ) ) > 100 )
{
//
}
//
// Repeat ( 1 ), ( 2 ), and ( 3 ) until all values have been written or read.
//
cbh.pb = NULL;
LocalFree( lp );
}
Anforderungen
Unterstützte Mindestversion (Client) | Nicht unterstützt |
Unterstützte Mindestversion (Server) | Windows Server 2008 Enterprise, Windows Server 2008 Datacenter |
Kopfzeile | clusapi.h |