pdcomm_gem_host_directory_request
함수
호스트에서 Data Variable Namelist Request 또는 Collection Event Namelist Request(S1F21 또는 S1F23)를 보냅니다.
PdcommStatus pdcomm_gem_host_directory_request(PdcommTcpEndpoint *endpoint, uint32_t kind, const uint32_t *ids, size_t count, PdcommTcpToken *out_token)ID 목록이 비어 있으면 저장된 순서대로 모든 엔트리를 요청합니다. 명시한 ID는 U4로 복사되며 순서, 중복, 알 수 없는 ID 표시를 그대로 유지합니다. 이 ID는 호스트가 공유하는 max_pending_ids 한도에 포함되며, 32개 슬롯, T3, 취소, 토큰 규칙을 따릅니다. 명시한 ID에 대한 응답은 요청한 ID를 같은 순서로 정확히 돌려줘야 하며, 그렇지 않으면 결과는 #PDCOMM_GEM_INVALID_RESPONSE가 됩니다. 유효한 응답은 결과 유형이 #PDCOMM_GEM_DATA_DIRECTORY_RECEIVED 또는 #PDCOMM_GEM_EVENT_DIRECTORY_RECEIVED인 #PDCOMM_GEM_RESPONSE로 도착합니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 호스트 엔드포인트입니다. |
kind | #PDCOMM_GEM_DATA_DIRECTORY 또는 #PDCOMM_GEM_EVENT_DIRECTORY입니다. |
ids | count개의 VID 또는 CEID 배열입니다. count가 0이면 NULL일 수 있습니다. |
count | ID 개수입니다. 0이면 모든 엔트리를 요청합니다. |
out_token | 먼저 0으로 초기화되며, 성공하면 트랜잭션 토큰을 받습니다. NULL이 아니어야 합니다. |
반환값
요청을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 out_token이 NULL이거나, kind를 알 수 없거나, count가 0이 아닌데 ids가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. max_pending_ids 또는 호스트 항목 한도를 넘게 되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트가 호스트가 아니거나 Communicating 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나 대기 슬롯 또는 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, #PDCOMM_IO_ERROR, #PDCOMM_POISONED를 반환합니다.
참고
- 제출은 응답이 아닙니다.