UNIX에 해당
authxapi_GetObjectProperty 함수는 데이터베이스에 저장된 개체의 단일 값 속성의 값을 검색합니다. 목록과 같이 여러 개의 값이 있는 속성은 이 함수로 검색할 수 없습니다. 속성 목록은 authxapi_GetObjectListValue 함수로 검색하십시오. 모든 매개 변수 문자열은 NULL로 종결되어야 합니다.
이 함수는 성공하면 0을 반환합니다. 실패할 경우에는 전역 변수 errno를 설정하고 다음 오류 코드 중 하나를 반환합니다.
|
반환 값 |
ERRNO |
의미 |
|---|---|---|
|
AUTHXAPI_E_EINVAL |
EINVAL |
잘못된(NULL) 포인터입니다. |
|
AUTHXAPI_E_INVOBJ |
EINVAL |
잘못된 개체 설명자입니다. |
|
AUTHXAPI_E_INVPROP |
EINVAL |
잘못된 속성 설명자입니다. |
|
AUTHXAPI_E_NOCLASS |
ENOENT |
필요한 클래스를 찾을 수 없습니다. |
|
AUTHXAPI_E_NOOBJ |
ENOENT |
필요한 개체를 찾을 수 없습니다. |
|
AUTHXAPI_E_NOPROP |
ENOENT |
필요한 속성을 찾을 수 없습니다. |
|
AUTHXAPI_E_PTYPE |
EINVAL |
속성 유형이 목록입니다. |
|
AUTHXAPI_E_DBERROR |
EIO |
데이터베이스 손상이 의심됩니다. |
|
AUTHXAPI_E_NOVAL |
ENOENT |
이 개체와 연결된 속성 값이 없습니다. |
int authxapi_GetObjectProperty (const char *szClass,
const char *szObj,
SEOSDB_ODF *p_odf,
const char *sz_Prop,
SEOSDB_PDF *p_pdf,
void *val,
int *size);
리소스가 속한 클래스의 이름입니다.
속성 값을 검색할 해당 개체(레코드)의 이름입니다.
이 함수로 가져오거나 이전에 종료 API get 함수를 호출할 때 호출자가 제공한 개체 설명자를 가리킵니다.
값을 검색할 해당 속성의 이름입니다.
이 함수로 가져오거나 이전에 종료 API get 함수를 호출할 때 호출자가 제공한 속성 설명자에 대한 포인터입니다.
속성 값으로 채워지는 변수에 대한 포인터입니다. 호출자는 속성의 데이터 형식과 동일한 형식의 변수에 대한 포인터를 제공해야 합니다.
val 매개 변수가 가리키는 메모리에 있는 영역의 크기(바이트)에 대한 포인터입니다.
예제: 데이터베이스에서 값 가져오기
일반 리소스에 대한 종료 함수의 일부인 이 예제에서는 데이터베이스에 저장된 값을 검색합니다. 종료 함수는 요청이 올바른 리소스 클래스에 대한 요청인지 확인합니다. 다른 클래스는 무시됩니다. authxapi_GetObjectProperty 함수는 COMMENT 속성 값을 검색할 때 호출됩니다. 검색에 성공하면 이 함수는 문자열에 하위 문자열 " NO "(단어 앞뒤의 공백 주의)가 포함되어 있는지 테스트합니다. 해당 단어가 포함되어 있으면 요청이 거부되며, 그렇지 않은 경우 이 함수는 제어권을 CA ControlMinder에 반환하여 표준 검사를 수행하도록 합니다.
#include stdio.h
#include authxapi.h
#include seostype.h
int MyExitFunction(void *exit_data, SEOS_EXITRES *result)
{
SEOS_EXITGENR *genr_data;
SEOSDB_ODF odf;
SEOSDB_PDF pdf;
SEOS_COMMENT comment;
int rc;
genr_data = (SEOS_EXITGENR *)exit_data;
/* Ignore any class that is not of interest */
if (strcmp(genr_data‑>szClass, "MyClass"))
return 0;
/* Fetch the information for the COMMENT property of the */
/* resource to which access is verified. */
rc = authxapi_GetObjectProperty("MyClass", genr_data‑>szRes,
&odf, "COMMENT", &pdf, comment, sizeof(comment));
if (rc == 0)
{
/* We have now the comment string. Does it contain "NO"?*/
if (strstr(comment, " NO ") != NULL)
{
result‑>result = SEOS_EXITR_DENY;
}
}
return 0;
}
참고: selang 명령 인터프리터에서 COMMENT 필드를 업데이트하려면 comment 인수를 사용해야 합니다. 예를 들면 다음과 같습니다.
newres MyClass anobject \
comment('This object has " NO " in the comment property')
|
Copyright © 2013 CA.
All rights reserved.
|
|