Any chance you could try this instead...

VARIANT(VT_ARRAY|VT_BSTR, "Payload") 

Since it looks like you want an Array string, not an Array of unsigned
integers...

[id(3)] HRESULT SetDataBits([in] long Bitlength, [in] SAFEARRAY(char)
*ppsa);

I could be wrong, but I'd play around with the Variant stuff to pass in
other forms to the Variant Array since it is complaining there.

Steven
________________________________

        From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
David Ho
        Sent: Sunday, November 23, 2008 5:11 PM
        To: perl-win32-users@listserv.activestate.com
        Subject: Re: passing a SAFEARRAY to COM server
        
        
        Broadcasting my cry for help to a wider audience...
        
        On Sun, Nov 23, 2008 at 4:06 PM, David Ho <[EMAIL PROTECTED]>
wrote:
        

                Hello Jan,
                 
                Sorry to bother you, but I have been trying to find a
solution to pass a UDP payload from Perl to a COM server without much
luck.  
                 
                I would very much like to get your input on this. 
                 
                My first go at it is to try passing in a
VARIANT(VT_ARRAY|VT_UI1, "Payload") to an IDL interface method of the
following.
                 
                 my $Data = Variant(VT_ARRAY|VT_UI1, "Payload");
                 my $DataUnit = $SDU->{DataUnit};
                 $DataUnit->SetDataBits($BitLength, $Data);
                 
                [id(3)] HRESULT SetDataBits([in] long Bitlength, [in]
SAFEARRAY(char) *ppsa);
                
                However Perl is complaining about a type mismatch.
                 
                [4216:0183F33C] Dispatch "SetDataBits"
                [4216:0183F33C] QueryPkgVar(Win32::OLE::Warn) returns 1
                [4216:0183F33C] ReportOleError: hr=0x80020005 warnlvl=1
                Win32::OLE(0.1709-QC1) error 0x80020005: "Type mismatch"
                    in METHOD/PROPERTYGET "SetDataBits" argument
2[4216:0183F33C]
Win32::OLE::Tie::Fetch(0x01931f94,'___Perl___OleObject___')
                 
                Can you shine some light as to what I am doing horribly
wrong? Is there a better way of passing a byteArray to COM?
                 
                Because the Perl Socket interface returns UDP packets as
scalars, I am wondering what the most efficient method to pass that to
COM.
                 
                Thanks very much in advance,
                David
                


_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to