ResUtilPropertyListFromParameterBlock-Funktion (resapi.h)
Erstellt eine Eigenschaftenliste aus einer Eigenschaftentabelle und einem Parameterblock.
Syntax
DWORD ResUtilPropertyListFromParameterBlock(
[in] const PRESUTIL_PROPERTY_ITEM pPropertyTable,
[out, optional] PVOID pOutPropertyList,
[in, out] LPDWORD pcbOutPropertyListSize,
[in] const LPBYTE pInParams,
[out] LPDWORD pcbBytesReturned,
[out] LPDWORD pcbRequired
);
Parameter
[in] pPropertyTable
Zeiger auf eine Eigenschaftentabelle, die die Eigenschaften beschreibt, die in die resultierende Eigenschaftenliste aufgenommen werden.
[out, optional] pOutPropertyList
Zeiger auf einen Ausgabepuffer, der die Eigenschaftenliste empfängt.
[in, out] pcbOutPropertyListSize
Zeiger auf die Größe des Ausgabepuffers in Bytes.
[in] pInParams
Zeiger auf den Parameterblock, in dem die Eigenschaftswerte gespeichert sind.
[out] pcbBytesReturned
Wenn die Funktion ERROR_SUCCESS zurückgibt, verweist pcbBytesReturned auf die tatsächliche Bytegröße der Eigenschaftenliste, auf die pOutPropertyList verweist. Wenn die Funktion ERROR_SUCCESS nicht zurückgibt, zeigt pcbBytesReturned auf den Wert 0.
[out] pcbRequired
Wenn die Funktion ERROR_MORE_DATA zurückgibt, zeigt pcbRequired auf die Bytegröße, die erforderlich ist, um die Eigenschaftenliste zu enthalten. Wenn die Funktion nicht ERROR_MORE_DATA zurückgibt, zeigt pcbBytesReturned auf den Wert 0.
Rückgabewert
Wenn der Vorgang erfolgreich ist, gibt die Funktion ERROR_SUCCESS zurück.
Wenn der Vorgang fehlschlägt, gibt die Funktion einen Systemfehlercode zurück. Im Folgenden sind mögliche Fehlercodes aufgeführt.
Rückgabecode | Beschreibung |
---|---|
|
Der Ausgabepuffer ist zu klein, um die resultierende Eigenschaftsliste zu enthalten. |
|
Mindestens ein Eingabeparameter war ungültig. |
|
Bei der Zuweisung von Arbeitsspeicher ist ein Fehler aufgetreten. |
Hinweise
In dieser Funktion bestimmt die Eigenschaftentabelle die Reihenfolge, in der die Eigenschaften in der Eigenschaftenliste angezeigt werden, sowie den Namen und das Format jeder Eigenschaft. Die Funktion liest die Eigenschaftentabelle, um den Namen und das Format der einzelnen Eigenschaften zu bestimmen.
Der Parameterblock stellt die Eigenschaftswerte bereit.
Beispiele
Im folgenden Beispiel werden drei Eigenschaften definiert (Protocol, PortNumber und ConnectionName). Sie verwendet die ResUtilPropertyListFromParameterBlock-Funktion , um eine Eigenschaftenliste zu erstellen. In diesem Beispiel wird die Headerdatei ClusDocEx.h verwendet, die in der Failoverclusterdokumentation definiert ist.
//////////////////////////////////////////////////////////////////////
// Be sure to create the following file before you compile.
// For a code listing, see "ClusDocEx.h".
#include "ClusDocEx.h"
//////////////////////////////////////////////////////////////////////
// This example defines three fictional properties:
// Protocol (DWORD)
// PortNumber (DWORD)
// ConnectionName (PWSTR)
// These properties are not associated with any cluster object.
// They are used only to demonstrate the
// ResUtilPropertyListFromParameterBlock function.
// Protocol property constants
#define PROP_NAME__PROTOCOL L"Protocol"
typedef enum PROTOCOLS{
PROTOCOL_NONE = 0,
PROTOCOL_BOTH = 1,
PROTOCOL_TCP = 2,
PROTOCOL_UDP = 3
};
#define PROP_MIN__PROTOCOL (PROTOCOL_NONE)
#define PROP_MAX__PROTOCOL (PROTOCOL_UDP)
#define PROP_DEFAULT__PROTOCOL (PROTOCOL_BOTH)
// PortNumber property
#define PROP_NAME__PORTNUMBER L"PortNumber"
#define PROP_MIN__PORTNUMBER (0)
#define PROP_MAX__PORTNUMBER (65536)
#define PROP_DEFAULT__PORTNUMBER (80)
// ConnectionName property
#define PROP_NAME__CONNECTIONNAME L"ConnectionName"
// Parameter block
typedef struct _PARAMBLOCK{
DWORD dwProtocol;
DWORD dwPortNumber;
PWSTR pszConnectionName;
} PARAMBLOCK;
// Property table
RESUTIL_PROPERTY_ITEM
pPropTable[] =
{
{ PROP_NAME__PROTOCOL,
NULL,
CLUSPROP_FORMAT_DWORD,
PROP_DEFAULT__PROTOCOL,
PROP_MIN__PROTOCOL,
PROP_MAX__PROTOCOL,
RESUTIL_PROPITEM_REQUIRED,
FIELD_OFFSET( _PARAMBLOCK, dwProtocol ) },
{ PROP_NAME__PORTNUMBER,
NULL,
CLUSPROP_FORMAT_DWORD,
PROP_DEFAULT__PORTNUMBER,
PROP_MIN__PORTNUMBER,
PROP_MAX__PORTNUMBER,
RESUTIL_PROPITEM_REQUIRED,
FIELD_OFFSET( _PARAMBLOCK, dwPortNumber ) },
{ PROP_NAME__CONNECTIONNAME,
NULL,
CLUSPROP_FORMAT_SZ,
0, 0, 0, 0,
FIELD_OFFSET( _PARAMBLOCK, pszConnectionName ) },
{ 0 }
};
int main()
{
DWORD nResult = ERROR_SUCCESS,
cbBufSize = 1024,
cbReturned = 0,
cbRequired = 0;
PVOID pPropList = LocalAlloc( LPTR, cbBufSize );
// Values for the property list
PARAMBLOCK NewParams = { PROTOCOL_TCP, 21, L"FTP" };
nResult = ResUtilPropertyListFromParameterBlock(
pPropTable,
pPropList,
&cbBufSize,
(LPBYTE) &NewParams,
&cbReturned,
&cbRequired );
if( nResult == ERROR_MORE_DATA )
{
LocalFree( pPropList );
cbBufSize = cbRequired;
pPropList = LocalAlloc( LPTR, cbBufSize );
nResult = ResUtilPropertyListFromParameterBlock(
pPropTable,
pPropList,
&cbBufSize,
(PBYTE) &NewParams,
&cbReturned,
&cbRequired );
}
ClusDocEx_DebugPrint( L"Results:", nResult );
if( nResult == ERROR_SUCCESS )
ClusDocEx_ShowBuffer( pPropList, cbReturned );
LocalFree( pPropList );
return (int)( nResult != ERROR_SUCCESS );
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Nicht unterstützt |
Unterstützte Mindestversion (Server) | Windows Server 2008 Enterprise, Windows Server 2008 Datacenter |
Zielplattform | Windows |
Kopfzeile | resapi.h |
Bibliothek | ResUtils.lib |
DLL | ResUtils.dll |