이전 항목: authxapi_IsThereExitFunction 함수다음 항목: authxapi_GetObjectListValue 함수


authxapi_GetObjectProperty 함수

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);
szClass

리소스가 속한 클래스의 이름입니다.

szObj

속성 값을 검색할 해당 개체(레코드)의 이름입니다.

p_odf

이 함수로 가져오거나 이전에 종료 API get 함수를 호출할 때 호출자가 제공한 개체 설명자를 가리킵니다.

szProp

값을 검색할 해당 속성의 이름입니다.

p_pdf

이 함수로 가져오거나 이전에 종료 API get 함수를 호출할 때 호출자가 제공한 속성 설명자에 대한 포인터입니다.

val

속성 값으로 채워지는 변수에 대한 포인터입니다. 호출자는 속성의 데이터 형식과 동일한 형식의 변수에 대한 포인터를 제공해야 합니다.

size

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')