PCONVERTSTREAMTOTREE コールバック関数 (bthsdpddi.h)
SdpConvertStreamToTree 関数 Bluetoothは、元のストリーム ベースの表現を変更せずに、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 構造体で構成されます。 ルート ノードには、単一の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。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | bthsdpddi.h (BthSdpddi.h を含む) |
IRQL | <= PASSIVE_LEVEL |