PCONVERTSTREAMTOTREE 回呼函式 (bthsdpddi.h)
藍牙 SdpConvertStreamToTree 函式可用來建立 SDP 記錄的Microsoft專屬樹狀結構表示法,同時讓原始數據流型表示法保持未修改。
語法
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 (include BthSdpddi.h) |
IRQL | <= PASSIVE_LEVEL |