IOCTL_BTHX_READ_HCI IOCTL(bthxddi.h)

IOCTL_BTHX_READ_HCI 전송 계층에서 Bluetooth ACL 데이터 및 이벤트를 읽는 데 사용됩니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

프로필 드라이버는 KMDF 및 해당 WdfRequestRetrieveInputMemory 메서드를 사용하여 입력 매개 변수를 검색해야 합니다. 예를 들어 출력 버퍼를 얻으려면 다음을 수행합니다.

Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);

자세한 내용은 WDK Bluetooth 샘플을 참조하세요.

입력 버퍼 길이

버퍼는 읽기 형식을 나타내는 UCHAR를 설명합니다. 버퍼의 길이는 UCHAR의 크기입니다.

출력 버퍼

프로필 드라이버는 KMDF 및 해당 WdfRequestRetrieveOutputMemory 메서드를 사용하여 입력 매개 변수를 검색해야 합니다. 예를 들어 출력 버퍼를 얻으려면 다음을 수행합니다.

Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);

자세한 내용은 WDK Bluetooth 샘플을 참조하세요.

출력 버퍼 길이

ASSOCIATedIrp.SystemBuffer 멤버는 읽기와 연결된 BTHX_HCI_READ_WRITE_CONTEXT 구조 및 추가 데이터를 포함하는 버퍼를 가리킵니다. 버퍼는 패킷 유형에 따라 가장 큰 이벤트 또는 ACL 데이터 패킷을 보유할 수 있을 만큼 커야 합니다.

이벤트 패킷의 경우 FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, 데이터) +257입니다. 여기서 257은 2 바이트 이벤트 헤더 및 255 바이트 이벤트 데이터의 합계입니다.

ACL 데이터 패킷의 경우 FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + MaxAclTransferInSize입니다. 여기서 MaxAclTransferInSize는 IOCTL_BTHX_QUERY_CAPABILITIES 있는 전송 드라이버에서 반환되는 BTHX_CAPABILITIES 값입니다.

상태 블록

STATUS_BLOCK 구조의 정보 멤버는 반환된 데이터 바이트 수로 설정됩니다.

Status 멤버는 다음 표의 값 중 하나로 설정됩니다.

상태 값 Description
STATUS_SUCCESS IOCTL이 성공적으로 완료되었습니다.
STATUS_CANCELLED IOCTL이 취소되었습니다.

설명

입력 버퍼는 읽는 패킷 유형을 가리킵니다.

출력 버퍼는 DataLen 멤버가 데이터 멤버의 바이트 수를 지정하는 BTHX_HCI_READ_WRITE_CONTEXT 구조를 가리킵니다. Type 멤버는 입력 패킷 형식과 동일하게 설정해야 합니다.

STATUS_BLOCK 정보 멤버는 FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, 데이터) + DataLen으로 설정해야 합니다.

ACL 읽기에 대한 데이터 멤버의 최대 크기는 BTHX_CAPABILITIES 구조에 지정된 MaxAclTransferInSize에 의해 결정됩니다. 이벤트에 대한 데이터 멤버의 최대 크기는 255입니다.

이 IOCTL은 정상 작동 상태에서만 STATUS_SUCCESS 반환해야 합니다. 전송 관련 오류를 반환해서는 안 됩니다. IOCTL은 이 IOCTL이 취소된 경우에만 STATUS_CANCELLED 반환해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 부터 지원합니다.
머리글 bthxddi.h
IRQL <= PASSIVE_LEVEL