![]() |
UPnP CreateAsyncFind > COM-Interface Frage
Hallo Leute!
ich brauch mal eure hilfe bei einer Frage zum COM-Interface bei meiner UPnP funktion. hier erstmal der code.
Code:
type IUPnPDeviceFinderCallback = interface(IUnknown)['{415A984A-88B3-49F3-92AF-0508BEDF0D6C}'] procedure DeviceAdded(iFindData: Integer; UPnPDevice: UPnPDevice); stdcall; procedure DeviceRemoved(iFindData: Integer; wsUDN: WideString); stdcall; procedure SearchComplete(iFindData: Integer); stdcall; end; var Form1: TForm1; implementation {$R *.dfm} function getglobalip:string; var UPnPDeviceFinder : IUPnPDeviceFinder; UPnpDevices : IUPnpDevices; UPnpDevice : IUPnpDevice; UPnpService : IUPnpService; myobject:integer; begin UPnPDeviceFinder := CoUPnPDeviceFinder.Create; UPnPDeviceFinder.CreateAsyncFind('75802409-bccb-40e7-8e6c-fa095ecce13g-00040E8D4CCB',0, ?? Was muss hier rein ?? ,myobject); UPnPDeviceFinder.StartAsyncFind(myobject); end; mein problem ist das ich nicht weis, was ich in dem Createasyncfind aufruf an der markierten stelle einfügen soll. die interfacedeklaration habe ich im netz gefunden. jedoch weis ich auch nicht was genau diese lange zahlenreihe in der interfacedeklaration bedeutet. ich vermute mal das es die zuordnung zu einem bestimmten COM-interfacetyp ist, jedoch weis ich es nicht genau. waere schoen ,wenn mir da jemand weiterhelfen koennte. gruss richard |
Re: UPnP CreateAsyncFind > COM-Interface Frage
Erst den Gerätetyp, dann 0 und dann das Callback Interface.
Delphi-Quellcode:
UPnPDeviceFinder.CreateAsyncFind('urn:schemas-upnp-org:device:InternetGatewayDevice:1', 0, upnpdfc);
|
Re: UPnP CreateAsyncFind > COM-Interface Frage
ähm ja ok, aber ich suche doch nicht by type. und laut msdn verlangt die funktion den UID des upnp devices????
richard |
Re: UPnP CreateAsyncFind > COM-Interface Frage
Achso, geht aber genauso:
Delphi-Quellcode:
UPnPDeviceFinder.CreateAsyncFind('uuid:75802409-bccb-40e7-8e6c-fa095ecce13g-00040E8D4CCB', 0, upnpdfc);
|
Re: UPnP CreateAsyncFind > COM-Interface Frage
so wie mrpayne es schreibt ist es schon richtig ;)
|
Re: UPnP CreateAsyncFind > COM-Interface Frage
ich hab es jetzt so gemacht wie in deine ersten post, bekomme jedoch beim aufruf der funktion die meldung "ungueltiger zeiger". ich habe das gefuehl , das ich beim interface was falsch mach oder einen cast vergessen habe. im msdn ist es auch ein pointer auf das callback interface das verwendet wird. aber wenn ich es als pointer verwende gibts auch wieder "inkompatible typen". ich finde die funktion sehr schlecht dokumentiert.
richard |
Re: UPnP CreateAsyncFind > COM-Interface Frage
Bei mir hats auch erst funktioniert nachdem ich eine Klasse erstellt habe:
Delphi-Quellcode:
type
IUPnPDeviceFinderCallback = interface(IUnknown)['{415A984A-88B3-49F3-92AF-0508BEDF0D6C}'] procedure DeviceAdded(iFindData: Integer; UPnPDevice: UPnPDevice); stdcall; procedure DeviceRemoved(iFindData: Integer; wsUDN: WideString); stdcall; procedure SearchComplete(iFindData: Integer); stdcall; end; type TUPnPDeviceFinderCallback = class(TInterfacedObject, IUPnPDeviceFinderCallback) protected procedure DeviceAdded(iFindData: Integer; UPnPDevice: UPnPDevice); stdcall; procedure DeviceRemoved(iFindData: Integer; wsUDN: WideString); stdcall; procedure SearchComplete(iFindData: Integer); stdcall; public constructor Create; end; |
Re: UPnP CreateAsyncFind > COM-Interface Frage
wenn ich das so implementiere bekomme ich die meldung vom compiler
[Fehler] Unit1.pas(32): Ungenügende Forward- oder External-Deklaration: 'TUPnPDeviceFinderCallback.DeviceAdded' [Fehler] Unit1.pas(33): Ungenügende Forward- oder External-Deklaration: 'TUPnPDeviceFinderCallback.DeviceRemoved' [Fehler] Unit1.pas(34): Ungenügende Forward- oder External-Deklaration: 'TUPnPDeviceFinderCallback.SearchComplete' [Fehler] Unit1.pas(36): Ungenügende Forward- oder External-Deklaration: 'TUPnPDeviceFinderCallback.Create' keine ahnung was ich falsch mache. die schreibweise hab ich ueberprueft und die ist ok. gruß richard |
Re: UPnP CreateAsyncFind > COM-Interface Frage
Hast du die entsprechenden Prozeduren der Klasse deklariert?
Delphi-Quellcode:
constructor TUPnPDeviceFinderCallback.Create;
begin inherited Create; end; procedure TUPnPDeviceFinderCallback.DeviceAdded(iFindData: Integer; UPnPDevice: UPnPDevice); stdcall; begin // Code end; procedure TUPnPDeviceFinderCallback.DeviceRemoved(iFindData: Integer; wsUDN: WideString); stdcall; begin end; procedure TUPnPDeviceFinderCallback.SearchComplete(iFindData: Integer); stdcall; begin // Code end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz