Decremented Blog

プログラミング、釣り、工作など、ジャンルを特に定めず、適当に書かれたブログです。

IUPnPService::InvokeAction() のコール方法

2007-12-28 23:58:46 | プログラミング・開発
UPnPをAPI経由で使うためには、IUPnPService::InvokeAction()を使う必要がありますが、これがちょっと分かりにくいので、メモを残します。

プロトタイプは、↓見たいな感じなのですが、注意すべきはvarInActionArgsです。
InvokeAction(
BSTR bstrActionName,
VARIANT varInActionArgs,
VARIANT* pvarOutActionArgs,
VARIANT* pvarRetVal);

これには、アクションの引数を配列として入れるのですが、何も引数が無い場合でも、空の配列を渡す必要があります。
具体的には、以下みたいなコードになります。

// 配列を用意
CComSafeArray<VARIANT> argArray;
argArray.Create();

// 引数を用意
CComVariant arg(argArray);

// 戻値を用意
CComVariant argRet, retVal;

// コール
hr = pService->InvokeAction(_bstr_t("GetExternalIPAddress"), arg, &argRet, &retVal);
if(!SUCCEEDED(hr))
return(-1);

C++からCOMって面倒だなあ、そろそろC#にでもするか・・・

最新の画像もっと見る