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

pdcomm_license_status

함수

이 라이브러리의 라이선스 상태를 JSON 객체로 복사합니다.

PdcommStatus pdcomm_license_status(uint8_t *output, size_t capacity, size_t *required)

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

이 객체의 schema_version은 1이며 다음을 보고합니다. build_date(이 SDK 빌드의 UTC 날짜), host_id(알 수 없으면 null과 host_id_error), program(실행 파일 이름), keys(허용하는 서명 키), sources(찾은 라이선스 소스마다 location, blocks, error), licenses(모든 라이선스 블록의 verification 결과와 필드), modules입니다. modules는 모듈 ID(secs-gem, gem300, modbus, modbus-security, mqtt, opcua-client, opcua-server)마다 state(licensed, evaluation, missing, expired, not-yet-valid, updates-expired, program-mismatch, host-mismatch 중 하나), granted, days_left, rejected, license_id, kind, expires_at, host_bound를 담은 객체입니다. 바이트는 종료 NUL이 없는 UTF-8 JSON입니다.

매개변수

이름설명
outputJSON 바이트를 받을 대상 버퍼입니다. capacity가 0일 때만 NULL일 수 있습니다.
capacityoutput의 크기(바이트)입니다.
requiredJSON 텍스트의 길이를 받습니다. NULL이 아니어야 합니다.

반환값

텍스트를 복사하면 #PDCOMM_OK를 반환합니다. capacity가 *required보다 작으면 #PDCOMM_BUFFER_TOO_SMALL을 반환하며 출력은 변경하지 않습니다. required가 NULL이거나, capacity가 0이 아닌데 output이 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다(*required는 기록하지 않습니다). 직렬화에 실패했거나 패닉(panic)을 격리했으면 #PDCOMM_INTERNAL_ERROR를 반환합니다.

참고

  • 상태는 호출할 때마다 그 시점의 현재 시각과 그때 있는 라이선스 파일로 평가하므로, 크기 조회와 복사 사이에 길이가 바뀔 수 있습니다. 여유 공간을 두고 할당하고, 호출이 #PDCOMM_BUFFER_TOO_SMALL을 반환하면 다시 호출합니다.
  • 스레드 안전성: 어느 스레드에서나 호출할 수 있습니다.