zoukankan      html  css  js  c++  java
  • org.jawin.COMException: 8000ffff: Invalid ptr null flag(原址:http://osdir.com/ml/windows.devel.jawin/2006-01/msg00013.html)

    I now realise my arguments to invoke should be more along the lines of

    byte[] result = tApp.invoke("GGGGIGGGG:I:G64", leos.size(), nbs, null,
    ReturnFlags.CHECK_NONE);

    Though I know this is 100% correct! Once again, the parameters
    to this method are as follows:

    > ---snip---
    > INT WINAPI CreateTrustedAppObject(
    > char *szDomainPath,
    > char *szAppName,
    > char *szAppDesc,
    > char *szTCPAddress,
    > WORD uwTCPPort,
    > BOOL bSSLRequired,
    > BOOL bRequiresQueueing,
    > BOOL bMessageRetention,
    > BOOL bOverwrite,
    > char *szTrustedAppKey);
    > ---snip---

    szTrustedAppKey
    (OUT) Points to the unique access key assigned to the trusted
    application. Returns a 64 byte key plus null.

    I have noticed discussion around using win32Invoke. When I
    attempt to use this method (along the lines of how others have
    described) I receive the following:

    ---snip---
    The method win32Invoke(int, String, int, int, byte[], Object[],
    ReturnFlags) in the type GenericStub is not applicable for the arguments
    (int, String, int, int, byte[], null)
    ---snip---

    Thanks again!

    Adam Bradley

    Adam Bradley wrote:
    Hi all,

    Dipping my toe into COM/DLL type things and I was trying to write a
    jawin wrapper to call a DLL function. The method I want to use is well
    documented but I keep receiving the following error!?

    Anyone have any ideas - thanks in advance!
    Adam

    ---snip---
    org.jawin.COMException: 8000ffff: Invalid ptr null flag
    at org.jawin.marshal.GenericStub.win32Invoke0(Native Method)
    at org.jawin.marshal.GenericStub.win32Invoke(GenericStub.java:152)
    at org.jawin.FuncPtr.invoke(FuncPtr.java:186)
    at org.jawin.FuncPtr.invoke(FuncPtr.java:205)
    at tApp.main(tApp.java:51)
    ---snip---

    The method in question is as follows

    ---snip---
    INT WINAPI CreateTrustedAppObject(
    char *szDomainPath,
    char *szAppName,
    char *szAppDesc,
    char *szTCPAddress,
    WORD uwTCPPort,
    BOOL bSSLRequired,
    BOOL bRequiresQueueing,
    BOOL bMessageRetention,
    BOOL bOverwrite,
    char *szTrustedAppKey);
    ---snip---

    And the application

    ---snip---

    import org.jawin.COMException;
    import org.jawin.FuncPtr;
    import org.jawin.ReturnFlags;
    import org.jawin.COMException;
    import org.jawin.FuncPtr;
    import org.jawin.ReturnFlags;
    import org.jawin.io.LittleEndianOutputStream;
    import org.jawin.io.NakedByteStream;
    import java.io.PrintStream;
    import java.io.OutputStream;
    import java.io.*;
    
    public class tApp {
        
        public static void main(String[] args) throws Exception {
    
            String szDomainPath = "c:/wpdomain.db"; // 4 [in] char*
            String szAppName = "newapp"; // 4 [in] 8
            String szAppDesc = "newapp description";// 4 [in] 12
            String szTCPAddress = "localhost"; // 4 [in] 16
            long uwTCPPort = 1; // 8 [in] 24
            String bSSLRequired = "FALSE"; // 4 [in] 28
            String bRequiresQueueing = "FALSE"; // 4 [in] 32
            String bMessageRetention = "FALSE"; // 4 [in] 36
            String bOverwrite = "TRUE"; // 4 [in] 40
            String szTrustedAppKey = ""; // 4 [out]44
            
            FuncPtr tApp = null;
            try {
                tApp = new FuncPtr("GWTApp.dll",CreateTrustedAppObject");
                
                // create a NakedByteStream for the serialization of Java variables
                NakedByteStream nbs = new NakedByteStream();
                
                // wrap it in a LittleEndianOutputStream
                LittleEndianOutputStream leos = new LittleEndianOutputStream(nbs);
                
                leos.writeStringUnicode(szDomainPath);
                leos.writeStringUnicode(szAppName);
                leos.writeStringUnicode(szAppDesc);
                leos.writeStringUnicode(szTCPAddress);
                leos.writeDouble(uwTCPPort);
                leos.writeStringUnicode(bSSLRequired);
                leos.writeStringUnicode(bRequiresQueueing);
                leos.writeStringUnicode(bMessageRetention);
                leos.writeStringUnicode(bOverwrite);
                leos.writeStringUnicode(szTrustedAppKey);
                
                byte[] result = tApp.invoke("IGGI:I:", 44, nbs, null,
                ReturnFlags.CHECK_NONE);
                
            } catch (COMException e) {
                System.out.println(e.getMessage().toString());
                System.out.println(e.getClass().toString());
            
                PrintWriter out = null;
            try {
                out = new PrintWriter(new FileWriter("c:\tApp.log"));
                e.printStackTrace(out);
            } catch (IOException a) {
                System.err.println("Caught IOException: " + a.getMessage());
            } finally {
                if (out != null) {
                    System.out.println("Closing PrintWriter");
                    out.close();
                } else {
                    System.out.println("PrintWriter not open");
                }
            }
            // handle exception
            } finally {
                if (tApp != null) {
                    try {
                        tApp.close();
                    } catch (COMException e) {
                    // handle fatal exception
                    }
                }
            }
        }
    }
  • 相关阅读:
    git查看某个文件的提交记录
    git修改文件夹名字
    Visual Studio 2013 在使用 razor无智能提示的解决办法
    git部分提交
    SQL SERVER与C#的数据类型对应表
    使用VBS实现SSH远程登录并自动执行命令
    安装并配置Samba
    Trouble and solution
    两台电脑间共享文件
    Astah类图中使用list<>
  • 原文地址:https://www.cnblogs.com/sparkbj/p/5807858.html
Copyright © 2011-2022 走看看