Bagikan melalui


Fungsi panggilan balik PCONVERTSTREAMTOTREE (bthsdpddi.h)

Fungsi Bluetooth SdpConvertStreamToTree digunakan untuk membuat representasi berbasis pohon kepemilikan Microsoft dari rekaman SDP, sambil membiarkan representasi berbasis aliran asli tidak dimodifikasi.

Sintaks

PCONVERTSTREAMTOTREE Pconvertstreamtotree;

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

Parameter

Stream

Aliran rekaman SDP untuk dikonversi menjadi representasi berbasis pohon.

Size

Ukuran aliran rekaman SDP sumber.

Node

Penunjuk ke struktur SDP_TREE_ROOT_NODE yang berfungsi sebagai akar representasi berbasis pohon SDP dari rekaman SDP.

tag

Menentukan tag kumpulan 4 byte yang secara unik mengidentifikasi driver yang melakukan alokasi memori. Untuk informasi selengkapnya tentang tag kumpulan, lihat ExAllocatePoolWithTag.

Menampilkan nilai

Kemungkinan nilai yang dikembalikan meliputi:

STATUS_SUCCESS
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID_PARAMETER

Keterangan

Karena pohon dapat dilalui dengan mengevaluasi pointer, fungsi SdpConvertStreamToTree dapat memudahkan driver profil untuk mengekstrak informasi dari catatan SDP.

Representasi pohon dari rekaman SDP yang dihasilkan dari memanggil fungsi SdpConvertStreamToTree terdiri dari serangkaian struktur SDP_NODE yang saling terhubung. Simpul akar berisi struktur SDP_TREE_ROOT_NODE tunggal.

Setiap struktur SDP_NODE berisi struktur SDP_NODE_HEADER dan serikat SDP_NODE_DATA . Header menentukan jenis data, dan driver profil Bluetooth dapat mengakses tautan ke struktur peer SDP_NODE melalui struktur sistem LIST_ENTRY . Dengan mengevaluasi struktur Node.hdr.Link.Flinkini dan Node.hdr.Link.Blink, driver dapat memperoleh alamat simpul serekan di pohon. Perlu diingat bahwa penunjuk dalam struktur LIST_ENTRY menyimpan alamat ke struktur LIST_ENTRY lainnya, dan bahwa driver Bluetooth harus menggunakan makro manajer memori CONTAINING_RECORD untuk mengekstrak alamat rekaman simpul yang berisi.

Dengan menggunakan urutan serikat SDP_NODE_DATA dan anggota alternatif, driver profil dapat mengakses sub-elemen pohon. Jika jenis data simpul SDP_TYPE_SEQUENCE, simpul adalah urutan SDP. Jika jenis data simpul SDP_TYPE_ALTERNATIVE, simpul adalah urutan alternatif SDP. Dalam kasus pertama, anggota urutan valid dan berisi informasi yang diperlukan untuk mengakses bagian pohon yang sesuai dengan urutan. Dalam kasus kedua, anggota alternatif valid dan berisi informasi yang diperlukan untuk mengakses bagian pohon yang sesuai dengan alternatif. Urutan atau anggotaalternatif , ketika digunakan, berisi struktur SDP_NODE_HEADER tambahan yang digunakan untuk mengakses simpul dalam urutan atau alternatif. Misalnya, node->u.sequence.Flinkmenunjuk ke struktur LIST_ENTRY dari anggota pertama urutan yang diwakili oleh simpul.

Anggota yang tersisa dari gabungan data berisi data aktual yang diekstrak dari aliran SDP. Untuk sebagian besar jenis, data langsung ada dalam struktur. Namun, untuk string dan URL, pointer disediakan untuk data aktual. Memori untuk string dialokasikan oleh panggilan fungsi SdpConvertStreamToTree dan harus dibebaskan dengan memanggil fungsi SdpFreeTree untuk pohon.

Driver profil Bluetooth dapat memperoleh penunjuk ke fungsi ini melalui BTHDDI_SDP_PARSE_INTERFACE.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Versi:_Supported di Windows Vista, dan yang lebih baru.
Target Platform Desktop
Header bthsdpddi.h (termasuk BthSdpddi.h)
IRQL <= PASSIVE_LEVEL

Lihat juga

BTHDDI_SDP_PARSE_INTERFACE

CONTAINING_RECORD

LIST_ENTRY

SDP_NODE

SDP_NODE_DATA

SDP_NODE_HEADER

SDP_TREE_ROOT_NODE

SdpFreeTree