속성 테이블 및 매개 변수 블록에서 속성목록을 생성합니다.
구문
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 반환하는 경우 pcbBytesRe는pOutPropertyList가 가리키는 속성 목록의 실제 바이트 크기를 가리킵니다. 함수가 ERROR_SUCCESS 반환하지 않으면 pcbBytesRe는 0 값을 가리킵니다.
[out] pcbRequired
함수가 ERROR_MORE_DATA 반환하는 경우 pcbRequired는 속성 목록을 포함하는 데 필요한 바이트 크기를 가리킵니다. 함수가 ERROR_MORE_DATA 반환하지 않으면 pcbBytesRe는 0 값을 가리킵니다.
반환 값
작업이 성공하면 함수는 ERROR_SUCCESS 반환합니다.
작업이 실패하면 함수는 시스템 오류 코드를 반환합니다. 가능한 오류 코드는 다음과 같습니다.
| 반환 코드 | 설명 |
|---|---|
|
출력 버퍼가 너무 작아 결과 속성 목록을 포함할 수 없습니다. |
|
하나 이상의 입력 매개 변수가 잘못되었습니다. |
|
메모리를 할당하는 동안 오류가 발생했습니다. |
설명
이 함수에서 속성 테이블은 속성 목록에 속성이 표시되는 순서와 각 속성의 이름과 형식을 결정합니다. 함수는 속성 테이블을 읽어 각 속성의 이름과 형식을 결정합니다.
매개 변수 블록은 속성 값을 제공합니다.
예제
다음 예제에서는 세 가지 속성(Protocol, PortNumber 및 ConnectionName)을 정의합니다. ResUtilPropertyListFromParameterBlock 함수를 사용하여 속성 목록을 만듭니다. 이 예제에서는 장애 조치(failover) 클러스터 설명서에 정의된 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 |
| 라이브러리 | ResUtils.lib |
| DLL | ResUtils.dll |