Freigeben über


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

Weitere Informationen

CLUSPROP_BINARY

CLUSPROP_DISK_NUMBER

CLUSPROP_DISK_SIGNATURE

CLUSPROP_DWORD

CLUSPROP_LIST

CLUSPROP_MULTI_SZ

CLUSPROP_PARTITION_INFO

CLUSPROP_PROPERTY_NAME

CLUSPROP_REQUIRED_DEPENDENCY

CLUSPROP_RESOURCE_CLASS

CLUSPROP_RESOURCE_CLASS_INFO

CLUSPROP_SCSI_ADDRESS

CLUSPROP_SYNTAX

CLUSPROP_SZ

CLUSPROP_ULARGE_INTEGER

CLUSPROP_VALUE