콘텐츠로 이동
무료 평가 시작

pdcomm_gem300_capability_catalog_replace

함수

카탈로그 내용을 순서가 있는 프로필 목록으로 원자적으로 교체합니다.

PdcommStatus pdcomm_gem300_capability_catalog_replace(PdcommGem300CapabilityCatalog *catalog, const PdcommGem300CapabilityProfile *profiles, size_t profile_count, uint64_t *out_revision, uint8_t *out_changed)

선언 위치: #include <pdcomm_gem300.h>

카탈로그를 바꾸기 전에 입력 전체를 카탈로그 한도로 검증하고 복사하므로, 호출이 반환되면 호출자의 배열을 해제해도 됩니다. 오류가 나면 카탈로그는 이전 내용과 리비전을 유지합니다. 입력이 현재 내용과 순서와 값까지 같으면 호출은 성공하며 *out_changed는 0이고 리비전은 바뀌지 않습니다. 그렇지 않으면 리비전이 증가합니다. profiles가 NULL이고 profile_count가 0이면 같은 계약에 따라 카탈로그를 비웁니다.

매개변수

이름설명
catalog변경할 카탈로그입니다.
profilesprofile_count개의 프로필 배열입니다. profile_count가 0이면 NULL일 수 있습니다.
profile_count프로필 개수입니다. 최대 max_profiles입니다.
out_revision호출 후의 리비전을 받습니다. NULL이 아니어야 하며, 검증 전에 0으로 설정됩니다.
out_changed내용이 바뀌었으면 1, 그렇지 않으면 0을 받습니다. NULL이 아니어야 하며, 검증 전에 0으로 설정됩니다.

반환값

성공하면 #PDCOMM_OK를 반환합니다. 출력 또는 catalog가 NULL이거나, 개수 또는 길이가 0이 아닌데 포인터가 NULL이거나, 예약 필드가 0이 아니거나, 축, 상태, 검증 값을 알 수 없거나, 프로필에 기능이 없거나, 식별자가 비어 있거나 0x21~0x7E 범위 밖의 바이트를 포함하거나, 프로필 식별자, 프로필 안의 기능 식별자, 프로필 안의 축이 중복되면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 카탈로그 한도를 넘거나 리비전 카운터가 소진되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. gem300 모듈을 허가하는 라이선스가 없으면 #PDCOMM_LICENSE_REQUIRED를 반환합니다(포인터 인수를 확인한 뒤, 프로필을 검증하기 전에 검사하며, 카탈로그는 바뀌지 않습니다). 그 밖에 #PDCOMM_ALLOCATION_FAILED 또는 #PDCOMM_INTERNAL_ERROR를 반환합니다.

참고

  • 스레드 안전성: 같은 카탈로그에 대한 다른 모든 호출과 직렬화합니다.