IWMWriterNetworkSink
COM公式ドキュメント
IWMWriterNetworkSink インターフェイスは、ストリームをネットワークに配信するために使用します。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetMaximumClients メソッドは、このシンクに接続できるクライアントの最大数を設定します。このメソッドは、ストリーミングの開始前に呼び出してください。
| dwMaxClients | DWORD | in | クライアントの最大数を指定します。値は 0 から 50 まで(両端を含む)でなければなりません。既定値は 5 です。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ストリーミングが既に開始されているか、dwMaxClients の値が無効です。 |
GetMaximumClients メソッドは、このシンクに接続できるクライアントの最大数を取得します。
| pdwMaxClients | DWORD* | out | クライアントの最大数を受け取る変数へのポインターです。既定値は 5 です。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pdwMaxClients が NULL です。 |
SetNetworkProtocol メソッドは、ネットワーク シンクが使用するネットワーク プロトコルを設定します。現在、ネットワーク シンクがサポートするプロトコルは HTTP のみです。
| protocol | WMT_NET_PROTOCOL | in | プロトコルを WMT_NET_PROTOCOL 列挙型の値として指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 引数が無効です。 |
GetNetworkProtocol メソッドは、ネットワーク シンクが使用するネットワーク プロトコルを取得します。現在、ネットワーク シンクがサポートするプロトコルは HTTP のみです。
| pProtocol | WMT_NET_PROTOCOL* | out | WMT_NET_PROTOCOL 列挙型のメンバーを受け取る変数へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pProtocol が NULL です。 |
GetHostURL メソッドは、ストリームが配信される URL を取得します。クライアントはこの URL からストリームにアクセスします。
| pwszURL | LPWSTR | out | URL を格納した文字列を受け取るバッファーへのポインターです。文字列の長さを取得するには、このパラメーターを NULL に設定します。 |
| pcchURL | DWORD* | inout | 入力時は、pwszURL のサイズ(文字数)へのポインターです。出力時は、このパラメーターに、終端の null 文字を含む URL の長さ(文字数)が格納されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
バッファーが小さすぎます。 |
| 引数が無効です。pcchURL を NULL にすることはできません。 | |
| ネットワーク シンクが接続されていません。 |
解説(Remarks)
GetHostURL は 2 回呼び出す必要があります。1 回目の呼び出しでは、pwszURL として NULL を渡します。呼び出しから戻ると、pcchURL が指す値に、終端の null 文字を含む URL の格納に必要な文字数が設定されます。その後、文字列に必要な量のメモリを割り当て、2 回目の呼び出しで pwszURL としてそのポインターを渡します。
Open メソッドは、ネットワーク ポートを開き、ネットワーク接続の待ち受けを開始します。
| pdwPortNum | DWORD* | inout | 入力時は、ポート番号を指定する変数へのポインターです。ネットワーク シンクに適切なポートを選択させたい場合は、この値を 0 に設定します。出力時は、実際に使用されたポート番号が変数に格納されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pdwPortNum パラメーターが NULL です。 | |
| ネットワーク シンクは既に開いています。 | |
| 指定されたポート番号は既に使用されています。 |
解説(Remarks)
このメソッドはポートをバインドします。ポートを解放するには、IWMWriterNetworkSink::Close を呼び出します。
IWMWriter::BeginWriting の「解説」および「サンプル コード」のセクションを参照してください。
Disconnect メソッドは、すべてのクライアントをネットワーク シンクから切断します。
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、ポートを解放しない点を除いて IWMWriterNetworkSink::Close メソッドと同等です。
Close メソッドは、すべてのクライアントをネットワーク シンクから切断し、ポートを解放します。
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ネットワーク シンクが接続されていません。 |
解説(Remarks)
IWMWriter::BeginWriting の「解説」および「サンプル コード」のセクションを参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMWriterNetworkSink "{96406BE7-2B2B-11D3-B36B-00C04F6108FF}" #usecom global IWMWriterNetworkSink IID_IWMWriterNetworkSink "{}" #comfunc global IWMWriterNetworkSink_SetMaximumClients 8 int #comfunc global IWMWriterNetworkSink_GetMaximumClients 9 var #comfunc global IWMWriterNetworkSink_SetNetworkProtocol 10 int #comfunc global IWMWriterNetworkSink_GetNetworkProtocol 11 var #comfunc global IWMWriterNetworkSink_GetHostURL 12 var,var #comfunc global IWMWriterNetworkSink_Open 13 var #comfunc global IWMWriterNetworkSink_Disconnect 14 #comfunc global IWMWriterNetworkSink_Close 15 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMWriterNetworkSink "{96406BE7-2B2B-11D3-B36B-00C04F6108FF}" #usecom global IWMWriterNetworkSink IID_IWMWriterNetworkSink "{}" #comfunc global IWMWriterNetworkSink_SetMaximumClients 8 int #comfunc global IWMWriterNetworkSink_GetMaximumClients 9 sptr #comfunc global IWMWriterNetworkSink_SetNetworkProtocol 10 int #comfunc global IWMWriterNetworkSink_GetNetworkProtocol 11 sptr #comfunc global IWMWriterNetworkSink_GetHostURL 12 sptr,sptr #comfunc global IWMWriterNetworkSink_Open 13 sptr #comfunc global IWMWriterNetworkSink_Disconnect 14 #comfunc global IWMWriterNetworkSink_Close 15 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。