다음을 통해 공유


PCONVERTSTREAMTOTREE 콜백 함수(bthsdpddi.h)

Bluetooth SdpConvertStreamToTree 함수는 원래 스트림 기반 표현을 수정되지 않은 상태로 유지하면서 SDP 레코드의 Microsoft 전용 트리 기반 표현을 만드는 데 사용됩니다.

구문

PCONVERTSTREAMTOTREE Pconvertstreamtotree;

NTSTATUS Pconvertstreamtotree(
  PUCHAR Stream,
  ULONG Size,
  PSDP_TREE_ROOT_NODE *Node,
  ULONG tag
)
{...}

매개 변수

Stream

트리 기반 표현으로 변환할 SDP 레코드 스트림입니다.

Size

원본 SDP 레코드 스트림의 크기입니다.

Node

SDP 레코드의 SDP 트리 기반 표현의 루트 역할을 하는 SDP_TREE_ROOT_NODE 구조체에 대한 포인터입니다.

tag

메모리 할당을 수행하는 드라이버를 고유하게 식별하는 4 바이트 풀 태그 를 지정합니다. 풀 태그에 대한 자세한 내용은 ExAllocatePoolWithTag를 참조하세요.

반환 값

가능한 반환 값은 다음과 같습니다.

STATUS_SUCCESS
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID_PARAMETER

설명

포인터를 평가하여 트리를 트래버스할 수 있으므로 SdpConvertStreamToTree 함수를 사용하면 프로필 드라이버가 SDP 레코드에서 정보를 더 쉽게 추출할 수 있습니다.

SdpConvertStreamToTree 함수를 호출한 결과 SDP 레코드의 트리 표현은 일련의 상호 연결된 SDP_NODE 구조로 구성됩니다. 루트 노드에는 단일 SDP_TREE_ROOT_NODE 구조가 포함됩니다.

각 SDP_NODE 구조에는 SDP_NODE_HEADER 구조와 SDP_NODE_DATA 공용 구조체가 포함됩니다. 헤더는 데이터 형식을 지정하고 Bluetooth 프로필 드라이버는 LIST_ENTRY 시스템 구조를 통해 피어 SDP_NODE 구조에 대한 링크에 액세스할 수 있습니다. 이 구조체의 Node.hdr.Link.FlinkNode.hdr.Link.Blink를 평가하면 드라이버는 트리에서 피어 노드의 주소를 가져올 수 있습니다. LIST_ENTRY 구조체의 포인터는 다른 LIST_ENTRY 구조체에 대한 주소를 포함하고 있으며 Bluetooth 드라이버는 CONTAINING_RECORD 메모리 관리자 매크로를 사용하여 포함된 노드 레코드의 주소를 추출해야 합니다.

SDP_NODE_DATA 공용 구조체의 시퀀스대체 멤버를 사용하여 프로필 드라이버는 트리의 하위 요소에 액세스할 수 있습니다. 노드의 데이터 형식이 SDP_TYPE_SEQUENCE 노드는 SDP 시퀀스입니다. 노드의 데이터 형식이 SDP_TYPE_ALTERNATIVE 경우 노드는 SDP 대체 시퀀스입니다. 첫 번째 경우 시퀀스 멤버는 유효하며 시퀀스에 해당하는 트리 부분에 액세스하는 데 필요한 정보를 포함합니다. 두 번째 경우 대체 멤버는 유효하며 대안에 해당하는 트리 부분에 액세스하는 데 필요한 정보를 포함합니다. 시퀀스 또는 대체 멤버를 사용하는 경우 시퀀스 또는 대안의 노드에 액세스하는 데 사용되는 추가 SDP_NODE_HEADER 구조체가 포함됩니다. 예를 들어 는 node->u.sequence.Flink노드가 나타내는 시퀀스의 첫 번째 멤버의 LIST_ENTRY 구조를 가리킵니다.

데이터 공용 구조체의 나머지 멤버는 SDP 스트림에서 추출된 실제 데이터를 포함합니다. 대부분의 형식에서 데이터는 구조에 직접 존재합니다. 그러나 문자열 및 URL의 경우 실제 데이터에 포인터가 제공됩니다. 문자열의 메모리는 SdpConvertStreamToTree 함수 호출에 의해 할당되며 트리에 대한 SdpFreeTree 함수를 호출하여 해제해야 합니다.

Bluetooth 프로필 드라이버는 BTHDDI_SDP_PARSE_INTERFACE 통해 이 함수에 대한 포인터를 가져올 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 버전:windows Vista 이상에서 _Supported.
대상 플랫폼 데스크톱
머리글 bthsdpddi.h(BthSdpddi.h 포함)
IRQL <= PASSIVE_LEVEL

추가 정보

BTHDDI_SDP_PARSE_INTERFACE

CONTAINING_RECORD

LIST_ENTRY

SDP_NODE

SDP_NODE_DATA

SDP_NODE_HEADER

SDP_TREE_ROOT_NODE

SdpFreeTree