IOCTL_NFCSE_SET_CARD_EMULATION_MODE IOCTL(nfcsedev.h)

IOCTL_NFCSE_SET_CARD_EMULATION_MODE 제어 코드는 지정된 보안 요소가 카드 에뮬레이션 모드에서 노출되는지 여부를 설정합니다. 보안 요소가 카드 에뮬레이션으로 "노출"되는 경우 디바이스를 외부 판독기로 가져와서 판독기에서 보안 요소에 액세스할 수 있음을 의미합니다. IOCTL은 상대 파일 이름 'SEManage'로 열린 파일 핸들에서 발급됩니다. 드라이버는 카드 에뮬레이션 모드를 관리하기 위해 클라이언트에 대한 단독 액세스 권한을 부여해야 합니다. 즉, 상대 파일 이름 'SEManage'를 사용하여 파일 핸들을 열기 위한 후속 호출은 단독 액세스 권한이 있는 클라이언트가 파일 핸들을 닫을 때까지 STATUS_ACCESS_DENIED 실패합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

SECURE_ELEMENT_SET_CARD_EMULATION_MODE_INFO 구조체입니다.

출력 버퍼

없음

상태 블록

Irp->요청이 성공하면 IoStatus.StatusSTATUS_SUCCESS 설정됩니다. 가능한 오류 코드는 다음과 같습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER 보안 요소 GUID가 잘못되었거나 출력 버퍼가 0이 아닌 경우
STATUS_INVALID_DEVICE_STATE IOCTL이 상대 이름 'SEManage'가 아닌 다른 핸들로 전송되는 경우

설명

다음은 드라이버가 준수해야 하는 요구 사항입니다.

  • 이 IOCTL은 SEEvents 상대 파일 이름이 있는 핸들에서 호출해야 합니다. 그렇지 않으면 드라이버가 STATUS_INVALID_DEVICE_STATE 반환합니다.
  • NFC 컨트롤러에 연결된 모든 보안 요소에 대해 카드 에뮬레이션 모드가 EmulationOff로 설정된 경우 폴링 루프의 에뮬레이션 모드를 사용하지 않도록 설정해야 합니다. 근접 기능도 사용하지 않도록 설정된 경우 드라이버는 저전력 모드로 전환해야 합니다.
  • 카드 에뮬레이션 모드가 EmulationOff 이외의 값으로 설정된 경우 드라이버는 D0 상태여야 하며 폴링 루프의 에뮬레이션 모드를 사용하도록 설정해야 합니다(외부 판독기에서 검색 가능).
  • SEManage가 열린 파일 핸들을 닫으면 드라이버는 에뮬레이션 모드 상태의 마지막 집합이 EmulationOnPowerIndependent인 경우를 제외하고 모든 보안 요소의 카드 카드 에뮬레이션 모드 설정을 EmulationOff로 설정해야 합니다. 에뮬레이션 모드 상태 카드 마지막 집합이 EmulationOnPowerIndependent인 경우 드라이버는 특정 보안 요소에 대한 PbF 옵션을 사용하여 카드 에뮬레이션 모드 설정을 켜기로 유지해야 합니다.
  • 드라이버는 카드 에뮬레이션 모드를 관리하려면 클라이언트에 대한 단독 액세스 권한을 부여해야 합니다. 상대 파일 이름 SEManage를 사용하여 파일 핸들을 열기 위한 후속 호출은 단독 액세스 권한이 있는 클라이언트가 파일 핸들을 닫을 때까지 STATUS_ACCESS_DENIED 함께 실패합니다.

요구 사항

요구 사항
헤더 nfcsedev.h