0

UPnP デバイス用に次の SCPD ドキュメントを定義しました。

<?xml version="1.0"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0" >
    <specVersion>
    <major>1</major>
    <minor>0</minor>
    </specVersion>
    <actionList>
    <action>
        <name>Echo</name>
        <argumentList>
        <argument>
            <name>InText</name>
            <relatedStateVariable>Text</relatedStateVariable>
            <direction>in</direction>
        </argument>
        <argument>
            <name>ReturnText</name>
            <relatedStateVariable>Text</relatedStateVariable>
            <direction>out</direction>
        </argument>
        </argumentList>
    </action>
    </actionList>
    <serviceStateTable>
    <stateVariable sendEvents="no">
        <name>Text</name>
        <dataType>string</dataType>
    </stateVariable>
    </serviceStateTable>
</scpd>

UPnP デバイスも登録しました。UPnPDevice も取得できました。SCPD ドキュメントで定義されているエコー アクションを呼び出すにはどうすればよいですか?

アクションを呼び出すコードは次のようになります。

var o: IUPnPDeviceFinder;
    d: IUPnPDevice;
    s: IUPnPService;
    E: IEnumVARIANT;
    K: OleVariant;
    iFetched: Cardinal;
    V1, V2: OleVariant;
    r: HRESULT;
begin
  o := CoUPnPDeviceFinder.Create;
  d := o.FindByUDN('uuid:a6d332da-f8ce-43ce-8210-79eacd4231c6');

  E := d.Services._NewEnum as IEnumVARIANT;
  E.Reset;
  CheckOSError(E.Next(1, K, iFetched));

  s := IDispatch(K) as IUPnPService;

  r := s.InvokeAction('Echo', v1, v2);
  ShowMessage(v2);
end;

InvokeAction の v1 および v2 パラメータを形成する方法は?

4

1 に答える 1

1

MSDN Docsによると、引数を Variant Array として渡す必要があります。Delphi では、VarArrayOf または VarArrayCreate 関数を使用できます。

于 2012-06-14T10:06:59.567 に答える