Error 1066 trying to invoke RegisterDeviceNotification to receive USB notification

147 views
Skip to first unread message

David Itkin

unread,
May 10, 2012, 2:46:36 PM5/10/12
to Java Native Access
I am attempting to register for notifications on USB device arrival
and device remove complete events from a java swing application.

I have successfully called

SetWindowLong(hWnd, MyUser32.GWLP_WNDPROC, listener);

to register a listener and I am getting notifications of type
`WM_DEVICECHANGE`. So far so good.

Now I want to call RegisterDeviceNotification to ensure that I am
notified of device arrival and remove complete events. Here is what I
have tried:

HWND hWnd = new HWND();
hWnd.setPointer(Native.getWindowPointer(frame));
DEV_BROADCAST_DEVICEINTERFACE filter = new
DEV_BROADCAST_DEVICEINTERFACE();
filter.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;
filter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
filter.dbcc_name = new char[1];
filter.dbcc_reserved = new DWORD(0);
filter.dbcc_size = new DWORD(filter.size());
filter.dbcc_size = new DWORD(filter.size());

long retVal = MyUser32.MYINSTANCE.RegisterDeviceNotification(new
HANDLE(hWnd.getPointer()), filter.getPointer(),
DEVICE_NOTIFY_WINDOW_HANDLE);

if (retVal != 0) {
System.out.println("Error registering for usb: " +
Native.getLastError());
}

My JNA declarations are:

public long RegisterDeviceNotification(HANDLE hRecipient, Pointer
NotificationFilter, DWORD Flags);

public static class DEV_BROADCAST_DEVICEINTERFACE extends Structure {
public DWORD dbcc_size;
public DWORD dbcc_devicetype;
public DWORD dbcc_reserved;
public GUID dbcc_classguid;
public char[] dbcc_name;
}

public static final GUID GUID_DEVINTERFACE_USB_DEVICE = new GUID(new
byte[] {
(byte)0xA5, (byte)0xDC, (byte)0xBF, 0x10, 0x65, 0x30, 0x11,
(byte)0xD2, (byte)0x90, 0x1F, 0x00, (byte)0xC0, 0x4F, (byte)0xB9,
0x51, (byte)0xED
});

I am always receiving an error 1066. Any help would be appreciated.
If more information is required let me know and I can include it.

David
Reply all
Reply to author
Forward
0 new messages