

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
28 messages in net.java.dev.jna.usersRe: [jna-users] Win32 Service Callbacks| From | Sent On | Attachments |
|---|---|---|
| Thomas Börkel | Aug 21, 2007 6:26 am | |
| Thomas Börkel | Aug 22, 2007 12:35 am | |
| Wayne Meissner | Aug 22, 2007 4:38 pm | |
| Thomas Börkel | Aug 22, 2007 10:36 pm | |
| Timothy Wall | Aug 31, 2007 7:23 am | |
| Thomas Börkel | Aug 31, 2007 7:47 am | |
| Timothy Wall | Aug 31, 2007 7:55 am | |
| Thomas Börkel | Sep 3, 2007 6:29 am | |
| Thomas Börkel | Sep 3, 2007 1:11 pm | |
| Timothy Wall | Sep 6, 2007 11:21 am | |
| Thomas Börkel | Sep 7, 2007 7:08 am | |
| Timothy Wall | Sep 7, 2007 7:43 am | |
| Thomas Börkel | Sep 10, 2007 12:18 am | |
| Thomas Börkel | Sep 10, 2007 4:36 am | |
| Timothy Wall | Sep 10, 2007 5:43 am | |
| Thomas Börkel | Sep 10, 2007 6:49 am | |
| Timothy Wall | Sep 11, 2007 4:47 am | |
| Thomas Börkel | Sep 11, 2007 6:15 am | |
| Timothy Wall | Sep 11, 2007 6:47 am | |
| Thomas Börkel | Sep 11, 2007 6:52 am | |
| Timothy Wall | Sep 11, 2007 8:52 am | |
| Thomas Börkel | Sep 11, 2007 10:26 pm | |
| Timothy Wall | Sep 12, 2007 5:45 am | |
| Thomas Börkel | Sep 12, 2007 5:56 am | |
| Timothy Wall | Sep 12, 2007 6:19 am | |
| Thomas Börkel | Sep 12, 2007 7:09 am | |
| Timothy Wall | Sep 12, 2007 8:17 am | |
| Thomas Börkel | Sep 13, 2007 12:58 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [jna-users] Win32 Service Callbacks | Actions... |
|---|---|---|
| From: | Timothy Wall (twal...@dev.java.net) | |
| Date: | Sep 12, 2007 5:45:10 am | |
| List: | net.java.dev.jna.users | |
On Sep 12, 2007, at 1:26 AM, Thomas Börkel wrote:
not, then its strings may not be encoded the same as the library. Usually it's best (at least with windows) to define the structure within the library interface to ensure that the same mapping and encoding options are used.
Ah, I see. But it's strange, that it worked for another Structure with a String in the same source.
Perhaps the other structure was expecting "const char*" rather than "const wchar_t*"?
A structure defined within a library interface definition will take on the same type mappings as the library. In this case, if you're using W32API.UNICODE_OPTIONS, functions are looked up using the -W suffix, and java String is converted to a wide string.
You can also use WString to force a wide string to be used.
I did that and it worked. But only with the 2nd way I described, where I can pass the structure itself. If I define the function correctly (with Pointer, so I can pass different types of structs) and use structure.getPointer() I get TRUE as result, but it does not change the description.
OK, I see the problem. If you pass a Pointer, you are then responsible for ensuring Structure.write() gets called *before* the method call and that you call Structure.read() *after* the method call. When the Structure is an argument, the JNA library can automatically do that for you. When you pass the Pointer, the native memory behind the struct is probably still all zeroed, which would give you an empty description.
What you can do instead of declaring the param as Pointer, is declare an intermediate Structure from which all the other ones derive, e.g.
public static class OptionsStructure extends Structure { } public static class SERVICE_DESCRIPTION extends OptionsStructure { public String lpDescription; }
That will allow the structures to be interchangeable and still get the automatic structure read/write behavior.
BTW, I've been tinkering with launching java.exe directly as a service, but the process always seems to exit immediately. I'm not sure how to figure out why, though. I can install/uninstall directly from Java without problems, but when I try to start the service it appears that the process quits immediately (I get two event log errors - "process failed to respond" and "process timed out after 30s").







