共用方式為


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.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 (include 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