pdcomm_buffer_create
함수
호출자의 바이트를 새로 소유하는 버퍼에 복사합니다.
PdcommStatus pdcomm_buffer_create(const uint8_t *data, size_t length, size_t max_bytes, PdcommBuffer **out)입력은 복사되며, data의 소유권은 호출자에게 남습니다.
매개변수
| 이름 | 설명 |
|---|---|
data | 복사할 바이트입니다. length가 0이면 NULL일 수 있습니다. |
length | data의 바이트 수입니다. |
max_bytes | 애플리케이션이 허용하는 최대 length입니다. 프로토콜 상수가 아니라 애플리케이션 정책입니다. |
out | 새 버퍼 핸들을 받습니다. 다른 검사보다 먼저 NULL로 설정되므로 실패하면 항상 NULL입니다. data와 겹치면 안 됩니다. |
반환값
성공하면 #PDCOMM_OK를 반환합니다. out이 NULL이거나, length가 0이 아닌데 data가 NULL이거나, length가 PTRDIFF_MAX를 넘으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. length가 max_bytes를 넘으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 메모리를 할당할 수 없으면 #PDCOMM_ALLOCATION_FAILED를 반환합니다. 패닉(panic)을 격리했으면 #PDCOMM_INTERNAL_ERROR를 반환합니다.
참고
- 소유권: pdcomm_buffer_destroy()로 핸들을 정확히 한 번 해제합니다.