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.Flink
和 Node.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 |