IWSDXMLContext
COM公式ドキュメント
WSDAPI スタックで使用される名前空間と型のコレクションです。
解説(Remarks)
このインターフェイスは、XML パーサーおよびジェネレーターが名前空間、名前、メッセージスキーマ情報を格納し、アクセスするために使用します。アプリケーションは AddNamespace および AddNameToNamespace を直接呼び出すことで、新規または既存の名前空間に名前を追加したり、アクセスしたりできます。また、生成されたコードは SetNamespaces および SetTypes を呼び出して、サービス層のデータが XML コンテキスト内に適切に設定されるようにします。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
XML コンテキスト内の名前空間を表すオブジェクトを作成します。
| pszUri | LPWSTR | in | 名前空間の URI です。 |
| pszSuggestedPrefix | LPWSTR | in | XML を生成する際に使用する名前空間プレフィックスです。名前空間が既に存在する場合、pszSuggestedPrefix は現在その名前空間に関連付けられているプレフィックスを上書きします。XML コンテキストが異なる名前空間プレフィックスを割り当てる場合があります。XML コンテキストによって割り当てられたプレフィックスは、推奨プレフィックスよりも優先されます。ppNamespace が指す構造体の PreferredPrefix メンバーには、XML コンテキストによって割り当てられたプレフィックスが格納されます。 |
| ppNamespace | WSDXML_NAMESPACE** | outoptional | 名前空間を表す WSDXML_NAMESPACE 構造体のアドレスへのポインターです。ppNamespace は WSDFreeLinkedMemory を呼び出して解放する必要があります。このパラメーターは省略可能です。 |
戻り値
戻り値には、次のものが含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pszUri が NULL である、URI 文字列の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えている、pszSuggestedPrefix が NULL である、またはプレフィックス文字列の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。 | |
| 操作を完了するためのメモリが不足しています。 | |
| メソッドは失敗しました。 |
解説(Remarks)
返される WSDXML_NAMESPACE 構造体を使用すると、名前空間プレフィックス (pszSuggestedPrefix で指定) と名前空間 URI (pszUri で指定) の関連付けを強制できます。この関連付けが確立されると、XML ジェネレーターは指定された名前空間プレフィックスを用いた XML を生成します。
AddNamespace を呼び出すことで、AddNameToNamespace の呼び出しによって名前空間が自動生成された際に作成された WSDXML_NAMESPACE 構造体を取得できます。
XML コンテキスト内の名前空間における名前を表すオブジェクトを作成します。
| pszUri | LPWSTR | in | この名前を作成する XML 名前空間の URI です。この名前空間が XML コンテキストにまだ存在しない場合は、新しい名前空間構造体が自動的に生成されます。 |
| pszName | LPWSTR | in | pszUri で指定された名前空間に追加する名前です。 |
| ppName | WSDXML_NAME** | outoptional | 新しく作成された名前に対する WSDXML_NAME 構造体です。ppName は WSDFreeLinkedMemory を呼び出して解放する必要があります。このパラメーターは省略可能です。 |
戻り値
戻り値には、次のものが含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pszUri が NULL であるか、URI 文字列の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。または pszName が NULL であるか、名前文字列の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。 | |
| 操作を完了するためのメモリが不足しています。 | |
| メソッドは失敗しました。 |
解説(Remarks)
AddNameToNamespace は、拡張可能セクション用の XML 要素を作成するときに使用できます。拡張可能セクションは、スキーマ内で any 要素として表現されます。ppName が指す、返された WSDXML_NAME 構造体は、拡張コンテンツに関連付ける名前を指定するために使用できます。拡張コンテンツを表す WSDXML_ELEMENT 構造体を構築する際は、返された WSDXML_NAME 構造体を要素の Name メンバーに使用してください。
カスタム名前空間を XML コンテキストオブジェクトに関連付けます。
| pNamespaces | WSDXML_NAMESPACE** | in | WSDXML_NAMESPACE 構造体の配列です。 |
| wNamespacesCount | WORD | in | pNamespaces 配列内の名前空間の数です。 |
| bLayerNumber | BYTE | in | 生成されたサービスコードに関連付けられたレイヤー番号です。 |
戻り値
戻り値には、次のものが含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| pNamespaces が NULL であるか、bLayerNumber が WSD_XMLCONTEXT_NUM_LAYERS (16) 以上です。 | |
| 操作を完了するためのメモリが不足しています。 | |
| メソッドは失敗しました。 |
カスタムメッセージ型を XML コンテキストオブジェクトに関連付けます。
| pTypes | WSDXML_TYPE** | in | 生成されたコードのメッセージ集合を表す WSDXML_TYPE 構造体の配列です。 |
| dwTypesCount | DWORD | in | pTypes 配列内の型の数です。 |
| bLayerNumber | BYTE | in | 生成されたサービスコードに関連付けられたレイヤー番号です。 |
戻り値
戻り値には、次のものが含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| pTypes が NULL であるか、bLayerNumber が WSD_XMLCONTEXT_NUM_LAYERS (16) 以上です。 | |
| 操作を完了するためのメモリが不足しています。 | |
| メソッドは失敗しました。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWSDXMLContext "{75D8F3EE-3E5A-43B4-A15A-BCF6887460C0}" #usecom global IWSDXMLContext IID_IWSDXMLContext "{}" #comfunc global IWSDXMLContext_AddNamespace 3 wstr,wstr,var #comfunc global IWSDXMLContext_AddNameToNamespace 4 wstr,wstr,var #comfunc global IWSDXMLContext_SetNamespaces 5 var,int,int #comfunc global IWSDXMLContext_SetTypes 6 var,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWSDXMLContext "{75D8F3EE-3E5A-43B4-A15A-BCF6887460C0}" #usecom global IWSDXMLContext IID_IWSDXMLContext "{}" #comfunc global IWSDXMLContext_AddNamespace 3 wstr,wstr,sptr #comfunc global IWSDXMLContext_AddNameToNamespace 4 wstr,wstr,sptr #comfunc global IWSDXMLContext_SetNamespaces 5 sptr,int,int #comfunc global IWSDXMLContext_SetTypes 6 sptr,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。