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/>