共用方式為


pcONVERTSTREAMTOTREE 回呼函式 (bthsdpddi.h)

Bluetooth SdpConvertStreamToTree 函式是用來建立 Microsoft 專屬樹狀結構型 SDP 記錄的表示法,同時保留未經修改的原始數據流型表示法。

語法

PCONVERTSTREAMTOTREE Pconvertstreamtotree;

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

參數

Stream

要轉換成樹狀架構表示的 SDP 記錄數據流。

Size

來源 SDP 記錄數據流的大小。

Node

SDP_TREE_ROOT_NODE 結構的指標,做為 SDP 記錄之 SDP 樹狀結構根目錄表示法。

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 聯集。 標頭會指定數據類型,而藍牙配置文件驅動程式可以透過 LIST_ENTRY系統結構 存取對等SDP_NODE結構的連結。 藉由評估此結構的 Node.hdr.Link.FlinkNode.hdr.Link.Blink,驅動程式可以取得樹狀結構中對等節點的位址。 請記住,LIST_ENTRY結構中的指標會保存其他LIST_ENTRY結構的位址,而且藍牙驅動程序必須使用 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 函式來釋放。

藍牙配置檔驅動程式可以透過 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