ResUtilPropertyListFromParameterBlock 関数 (resapi.h)
プロパティ テーブルとパラメーター ブロックからプロパティリストを構築します。
構文
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
);
パラメーター
[in] pPropertyTable
結果のプロパティ リストに含まれるプロパティを記述するプロパティ テーブルへのポインター。
[out, optional] pOutPropertyList
プロパティ リストを受け取る出力バッファーへのポインター。
[in, out] pcbOutPropertyListSize
出力バッファーのサイズ (バイト単位) へのポインター。
[in] pInParams
プロパティ値が格納されているパラメーター ブロックへのポインター。
[out] pcbBytesReturned
関数が ERROR_SUCCESSを返す場合、 pcbBytesReturned は pOutPropertyList が指すプロパティ リストの実際のバイト サイズを指します。 関数が ERROR_SUCCESSを返さない場合、 pcbBytesReturned は 0 の値を指します。
[out] pcbRequired
関数が ERROR_MORE_DATAを返す場合、 pcbRequired はプロパティ リストを格納するために必要なバイト サイズを指します。 関数が ERROR_MORE_DATAを返さない場合、 pcbBytesReturned は 0 の値を指します。
戻り値
操作が成功した場合、関数は ERROR_SUCCESSを返します。
操作が失敗した場合、関数は システム エラー コードを返します。 考えられるエラー コードを次に示します。
リターン コード | 説明 |
---|---|
|
出力バッファーが小さすぎて、結果のプロパティ リストを含められません。 |
|
1 つ以上の入力パラメーターが無効でした。 |
|
メモリの割り当て中にエラーが発生しました。 |
注釈
この関数では、プロパティ テーブルによって、プロパティリストにプロパティが表示される順序と、各プロパティの名前と形式が決定されます。 関数は、プロパティ テーブルを読み取り、各プロパティの名前と形式を決定します。
パラメーター ブロックは、プロパティ値を提供します。
例
次の例では、3 つのプロパティ (Protocol、PortNumber、ConnectionName) を定義します。 ResUtilPropertyListFromParameterBlock 関数を使用してプロパティ リストを作成します。 この例では、フェールオーバー クラスターのドキュメントで定義されている ClusDocEx.h ヘッダー ファイルを使用します。
//////////////////////////////////////////////////////////////////////
// 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 );
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | サポートなし |
サポートされている最小のサーバー | Windows Server 2008 Enterprise、Windows Server 2008 Datacenter |
対象プラットフォーム | Windows |
ヘッダー | resapi.h |
Library | ResUtils.lib |
[DLL] | ResUtils.dll |