Error: 8000ffff: Invalid ptr null flag when calling a DLL method

Adam Bradley <[email protected]> Mon, 16 Jan 2006 14:36:06 +1000
Newsgroups gmane.comp.windows.devel.jawin
Organization HyperWeb Internet Services
Message-ID <004401c61a56$5f3498f0$782e7f81@hyperwebajb>
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
    }
   }
  }
 }
}


HyperWeb Internet Services
P.O. Box 451 Hamilton
Brisbane, QLD 4007
Mobile  : +61 419 637 518
email: [email protected]
IM : [email protected]
Skype : adam_j_bradley
Web : http://www.hyperwebis.com.au <http://www.hyperwebis.com.au/>