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 ツリー ベースの SDP レコード表現のルートとして機能するSDP_TREE_ROOT_NODE構造体へのポインター。
tag
メモリ割り当てを行うドライバーを一意に識別する 4 バイト プール タグ を指定します。 プール タグの詳細については、「 ExAllocatePoolWithTag」を参照してください。
戻り値
可能な戻り値は次のとおりです。
- STATUS_SUCCESS
- STATUS_INSUFFICIENT_RESOURCES
- STATUS_INVALID_PARAMETER
注釈
ツリーはポインターを評価することで走査できるため、 SdpConvertStreamToTree 関数を使用すると、プロファイル ドライバーが SDP レコードから情報を簡単に抽出できます。
SdpConvertStreamToTree 関数の呼び出しによって生じる SDP レコードのツリー表現は、相互接続された一連のSDP_NODE構造体で構成されます。 ルート ノードには、1 つのSDP_TREE_ROOT_NODE構造が含まれています。
各SDP_NODE構造体には、 SDP_NODE_HEADER 構造体と SDP_NODE_DATA 共用体が含まれています。 ヘッダーはデータの種類を指定し、Bluetooth プロファイル ドライバーは、LIST_ENTRYシステム構造を介してピア SDP_NODE構造体へのリンク に アクセスできます。 この構造体 と Node.hdr.Link.Flink
Node.hdr.Link.Blink
を評価することで、ドライバーはツリー内のピア ノードのアドレスを取得できます。 LIST_ENTRY構造体内のポインターは、他のLIST_ENTRY構造体へのアドレスを保持し、Bluetooth ドライバーは 、CONTAINING_RECORD メモリ マネージャー マクロを使用して、格納されているノード レコードのアドレスを抽出する必要があることに注意してください。
SDP_NODE_DATA共用体のシーケンスと代替メンバーを使用すると、プロファイル ドライバーはツリーのサブ要素にアクセスできます。 ノードのデータ型が SDP_TYPE_SEQUENCE場合、ノードは SDP シーケンスです。 ノードのデータ型が SDP_TYPE_ALTERNATIVE場合、ノードは SDP 代替シーケンスです。 最初のケースでは、シーケンス メンバーは有効であり、シーケンスに対応するツリーの部分にアクセスするために必要な情報が含まれています。 2 番目のケースでは、代替メンバーは有効であり、代替に対応するツリーの部分にアクセスするために必要な情報が含まれています。 シーケンスまたは代替メンバーを使用すると、シーケンスまたは代替のノードにアクセスするために使用される追加のSDP_NODE_HEADER構造が含まれます。 たとえば、 node->u.sequence.Flink
ノードによって表されるシーケンスの最初のメンバーのLIST_ENTRY構造体を指します。
データ共用体の残りのメンバーには、SDP ストリームから抽出された実際のデータが含まれています。 ほとんどの型では、データは構造体に直接存在します。 ただし、文字列と URL の場合、実際のデータへのポインターが提供されます。 文字列のメモリは SdpConvertStreamToTree 関数呼び出しによって割り当てられ、ツリーの SdpFreeTree 関数を呼び出して解放する必要があります。
Bluetooth プロファイル ドライバーは、 BTHDDI_SDP_PARSE_INTERFACEを介してこの関数へのポインターを取得できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョン:_Supported。 |
対象プラットフォーム | デスクトップ |
Header | bthsdpddi.h (BthSdpddi.h を含む) |
IRQL | <= PASSIVE_LEVEL |