IOCTL_NFCSE_GET_NEXT_EVENT IOCTL(nfcsedev.h)
IOCTL_NFCSE_GET_NEXT_EVENT 제어 코드는 버퍼에서 사용할 수 있는 다음 이벤트를 반환하거나, 더 이상 버퍼링된 이벤트가 없는 경우 보안 요소 이벤트를 사용할 수 있을 때까지 보류 중인 상태로 유지됩니다. 그런 다음 이벤트 세부 정보를 호출자에게 반환해야 합니다.
주 코드
입력 버퍼
없음
입력 버퍼 길이
없음
출력 버퍼
SECURE_ELEMENT_EVENT_INFO 구조체의 크기와 해당 페이로드를 나타내는 DWORD로, 바로 뒤에 SECURE_ELEMENT_EVENT_INFO 구조체가 있습니다.
상태 블록
Irp->요청이 성공하면 IoStatus.Status 가 STATUS_SUCCESS 설정됩니다. 가능한 오류 코드는 다음과 같습니다.
반환 코드 | Description |
---|---|
STATUS_INVALID_DEVICE_STATE | 이 코드는 SEEvents 이외의 파일 이름이 있는 디바이스 핸들에서 이 IOCTL이 호출되거나 아직 완료되지 않은 보류 중인 다른 요청이 이미 있을 때 반환됩니다. |
STATUS_INVALID_PARAMETER | 이 코드는 출력 버퍼가 0이 아니거나 보안 요소의 GUID가 열거된 ID와 일치하지 않을 때 반환됩니다. |
설명
다음은 드라이버가 준수해야 하는 요구 사항입니다.
- 이 IOCTL은 SEEvents 상대 파일 이름이 있는 핸들에서 호출해야 합니다. 그렇지 않으면 드라이버가 STATUS_INVALID_DEVICE_STATE 반환합니다.
- 이 드라이버는 보류 중인 IOCTL에 대해 CancelIO를 지원해야 합니다.
- 이 드라이버는 구독 유형과 일치하는 수신된 보안 요소 이벤트의 수신된 큐를 유지해야 합니다.
-
드라이버에서 이 IOCTL을 수신할 때 다음 조건을 충족해야 합니다.
- 수신된 큐가 비어 있는 경우 드라이버는 나중에 완료하기 위해 IOCTL을 보류해야 합니다.
- 수신된 큐가 비어 있지 않으면 드라이버는 하나의 이벤트 큐를 해제하고, 메시지 버퍼를 IOCTL의 출력 버퍼에 복사하고, 즉시 STATUS_SUCCESS 사용하여 IOCTL을 완료해야 합니다.
- 드라이버가 STATUS_SUCCESS 사용하여 이 IOCTL을 완료하는 경우 출력 버퍼의 첫 번째 DWORD [4바이트]에는 SECURE_ELEMENT_EVENT_INFO 구조체의 크기와 해당 페이로드가 포함되어야 합니다.
- 수신된 보안 요소 이벤트 정보가 너무 커서 이 IOCTL의 버퍼에 복사할 수 없는 경우 드라이버는 필요한 버퍼 크기를 출력 버퍼의 처음 4바이트로 복사하고 IOCTL의 정보 필드를 sizeof(DWORD)로 설정하고 STATUS_BUFFER_OVERFLOW 사용하여 IOCTL을 완료해야 합니다. 그러면 이벤트가 수신된 큐에 남아 있어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | nfcsedev.h |