Re: Device notification API

[email protected] Sun, 28 Mar 2004 15:58:33 +0800
Newsgroups gmane.comp.gnu.mingw.patches
Message-ID <[email protected]>
This is a multi-part message in MIME format.

------=_NextPart_000_00EF_01C414DD.859C2FB0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit


Thanks,

I believe the correct preprocessor condition for Win98/2000 and the one used
elsewhere in the headers is "#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT
>= 0x0500)". Shall I commit the attached modified patch? By the way, I
personally prefer patches as attachments instead of directly in the email
because otherwise tab characters are lost.

Luke

----- Original Message ----- 
Wrom: EAIJJPHSCRTNHGSWZIDREXCAXZOWCONE
To: <[email protected]>
Sent: Saturday, March 27, 2004 5:31 PM
Subject: [MinGW-patches] Device notification API


> Hi
> This patch add define, structure, prototype and export stub to use
> device notification APIs.
>
> 2004-03-27  Hosaka Yuji  <[email protected]>
>
> * include/dbt.h (DBT_DEVTYP_DEVICEINTERFACE, DBT_DEVTYP_HANDLE):
> Add define.
> (DEV_BROADCAST_DEVICEINTERFACE, DEV_BROADCAST_HANDLE): Add struct.
> * include/winuser.h (UnregisterDeviceNotification): Add prototype.
> * lib/user32.def (UnregisterDeviceNotification): Add export stub.
>
> Index: include/dbt.h
> ===================================================================
> RCS file: /cvs/src/src/winsup/w32api/include/dbt.h,v
> retrieving revision 1.4
> diff -u -3 -p -r1.4 dbt.h
> --- include/dbt.h 30 Sep 2003 07:51:26 -0000 1.4
> +++ include/dbt.h 27 Mar 2004 07:40:09 -0000
> @@ -20,6 +20,10 @@ extern "C" {
>  #define DBT_DEVTYP_VOLUME 2
>  #define DBT_DEVTYP_PORT 3
>  #define DBT_DEVTYP_NET 4
> +#if (WINVER >= 0x040A)
> +#define DBT_DEVTYP_DEVICEINTERFACE 5
> +#define DBT_DEVTYP_HANDLE 6
> +#endif /* (WINVER >= 0x040A) */
>  #define DBT_APPYBEGIN 0
>  #define DBT_APPYEND 1
>  #define DBT_DEVNODES_CHANGED 7
> @@ -107,6 +111,42 @@ typedef DEV_BROADCAST_PORT_W DEV_BROADCA
>  #else
>  typedef DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT, *PDEV_BROADCAST_PORT;
>  #endif
> +
> +#if (WINVER >= 0x040A)
> +typedef struct _DEV_BROADCAST_DEVICEINTERFACE_A {
> + DWORD dbcc_size;
> + DWORD dbcc_devicetype;
> + DWORD dbcc_reserved;
> + GUID dbcc_classguid;
> + char dbcc_name[1];
> +} DEV_BROADCAST_DEVICEINTERFACE_A, *PDEV_BROADCAST_DEVICEINTERFACE_A;
> +typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W {
> + DWORD dbcc_size;
> + DWORD dbcc_devicetype;
> + DWORD dbcc_reserved;
> + GUID dbcc_classguid;
> + wchar_t dbcc_name[1];
> +} DEV_BROADCAST_DEVICEINTERFACE_W, *PDEV_BROADCAST_DEVICEINTERFACE_W;
> +
> +#ifdef UNICODE
> +typedef DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE;
> +typedef PDEV_BROADCAST_DEVICEINTERFACE_W PDEV_BROADCAST_DEVICEINTERFACE;
> +#else
> +typedef DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE;
> +typedef PDEV_BROADCAST_DEVICEINTERFACE_A PDEV_BROADCAST_DEVICEINTERFACE;
> +#endif
> +
> +typedef struct _DEV_BROADCAST_HANDLE {
> + DWORD dbch_size;
> + DWORD dbch_devicetype;
> + DWORD dbch_reserved;
> + HANDLE dbch_handle;
> + DWORD dbch_hdevnotify;
> + GUID dbch_eventguid;
> + LONG dbch_nameoffset;
> + BYTE dbch_data[1];
> +} DEV_BROADCAST_HANDLE, *PDEV_BROADCAST_HANDLE;
> +#endif /* (WINVER >= 0x040A) */
>
>  #ifdef __cplusplus
>  }
> Index: include/winuser.h
> ===================================================================
> RCS file: /cvs/src/src/winsup/w32api/include/winuser.h,v
> retrieving revision 1.85
> diff -u -3 -p -r1.85 winuser.h
> --- include/winuser.h 1 Mar 2004 10:30:00 -0000 1.85
> +++ include/winuser.h 27 Mar 2004 07:40:10 -0000
> @@ -3754,6 +3754,9 @@ BOOL WINAPI UnionRect(LPRECT,LPCRECT,LPC
>  BOOL WINAPI UnloadKeyboardLayout(HKL);
>  BOOL WINAPI UnregisterClassA(LPCSTR,HINSTANCE);
>  BOOL WINAPI UnregisterClassW(LPCWSTR,HINSTANCE);
> +#if (WINVER >= 0x0500)
> +BOOL WINAPI UnregisterDeviceNotification(HANDLE);
> +#endif
>  BOOL WINAPI UnregisterHotKey(HWND,int);
>  BOOL WINAPI UpdateWindow(HWND);
>  #if (_WIN32_WINNT >= 0x0500)
> Index: lib/user32.def
> ===================================================================
> RCS file: /cvs/src/src/winsup/w32api/lib/user32.def,v
> retrieving revision 1.22
> diff -u -3 -p -r1.22 user32.def
> --- lib/user32.def 30 Sep 2003 06:57:46 -0000 1.22
> +++ lib/user32.def 27 Mar 2004 07:40:10 -0000
> @@ -609,6 +609,7 @@ UnloadKeyboardLayout@4
>  UnpackDDElParam@16
>  UnregisterClassA@8
>  UnregisterClassW@8
> +UnregisterDeviceNotification@4
>  UnregisterHotKey@8
>  UpdateLayeredWindow@36
>  UpdateWindow@4

------=_NextPart_000_00EF_01C414DD.859C2FB0
Content-Type: application/octet-stream;
	name="hosaka_yuji2.diff"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="hosaka_yuji2.diff"

2004-03-27  Hosaka Yuji  <[email protected]>=0A=
=0A=
	* include/dbt.h (DBT_DEVTYP_DEVICEINTERFACE, DBT_DEVTYP_HANDLE):=0A=
	Add define.=0A=
	(DEV_BROADCAST_DEVICEINTERFACE, DEV_BROADCAST_HANDLE): Add struct.=0A=
	* include/winuser.h (UnregisterDeviceNotification): Add prototype.=0A=
	* lib/user32.def (UnregisterDeviceNotification): Add export stub.=0A=
=0A=
Index: include/dbt.h=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/src/src/winsup/w32api/include/dbt.h,v=0A=
retrieving revision 1.4=0A=
diff -u -r1.4 dbt.h=0A=
--- include/dbt.h	30 Sep 2003 07:51:26 -0000	1.4=0A=
+++ include/dbt.h	28 Mar 2004 07:52:06 -0000=0A=
@@ -20,6 +20,10 @@=0A=
 #define DBT_DEVTYP_VOLUME	2=0A=
 #define DBT_DEVTYP_PORT	3=0A=
 #define DBT_DEVTYP_NET	4=0A=
+#if (_WIN32_WINDOWS >=3D 0x0410 || _WIN32_WINNT >=3D 0x0500)=0A=
+#define DBT_DEVTYP_DEVICEINTERFACE 5=0A=
+#define DBT_DEVTYP_HANDLE 6=0A=
+#endif /* (_WIN32_WINDOWS >=3D 0x0410 || _WIN32_WINNT >=3D 0x0500) */=0A=
 #define DBT_APPYBEGIN 0=0A=
 #define DBT_APPYEND 1=0A=
 #define DBT_DEVNODES_CHANGED 7=0A=
@@ -107,6 +111,42 @@=0A=
 #else=0A=
 typedef DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT, *PDEV_BROADCAST_PORT;=0A=
 #endif=0A=
+=0A=
+#if (_WIN32_WINDOWS >=3D 0x0410 || _WIN32_WINNT >=3D 0x0500)=0A=
+typedef struct _DEV_BROADCAST_DEVICEINTERFACE_A {=0A=
+ DWORD dbcc_size;=0A=
+ DWORD dbcc_devicetype;=0A=
+ DWORD dbcc_reserved;=0A=
+ GUID dbcc_classguid;=0A=
+ char dbcc_name[1];=0A=
+} DEV_BROADCAST_DEVICEINTERFACE_A, *PDEV_BROADCAST_DEVICEINTERFACE_A;=0A=
+typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W {=0A=
+ DWORD dbcc_size;=0A=
+ DWORD dbcc_devicetype;=0A=
+ DWORD dbcc_reserved;=0A=
+ GUID dbcc_classguid;=0A=
+ wchar_t dbcc_name[1];=0A=
+} DEV_BROADCAST_DEVICEINTERFACE_W, *PDEV_BROADCAST_DEVICEINTERFACE_W;=0A=
+=0A=
+#ifdef UNICODE=0A=
+typedef DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE;=0A=
+typedef PDEV_BROADCAST_DEVICEINTERFACE_W PDEV_BROADCAST_DEVICEINTERFACE;=0A=
+#else=0A=
+typedef DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE;=0A=
+typedef PDEV_BROADCAST_DEVICEINTERFACE_A PDEV_BROADCAST_DEVICEINTERFACE;=0A=
+#endif=0A=
+=0A=
+typedef struct _DEV_BROADCAST_HANDLE {=0A=
+ DWORD dbch_size;=0A=
+ DWORD dbch_devicetype;=0A=
+ DWORD dbch_reserved;=0A=
+ HANDLE dbch_handle;=0A=
+ DWORD dbch_hdevnotify;=0A=
+ GUID dbch_eventguid;=0A=
+ LONG dbch_nameoffset;=0A=
+ BYTE dbch_data[1];=0A=
+} DEV_BROADCAST_HANDLE, *PDEV_BROADCAST_HANDLE;=0A=
+#endif /* (_WIN32_WINDOWS >=3D 0x0410 || _WIN32_WINNT >=3D 0x0500) */=0A=
 =0A=
 #ifdef __cplusplus=0A=
 }=0A=
Index: include/winuser.h=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/src/src/winsup/w32api/include/winuser.h,v=0A=
retrieving revision 1.85=0A=
diff -u -r1.85 winuser.h=0A=
--- include/winuser.h	1 Mar 2004 10:30:00 -0000	1.85=0A=
+++ include/winuser.h	28 Mar 2004 07:52:17 -0000=0A=
@@ -3754,6 +3754,9 @@=0A=
 BOOL WINAPI UnloadKeyboardLayout(HKL);=0A=
 BOOL WINAPI UnregisterClassA(LPCSTR,HINSTANCE);=0A=
 BOOL WINAPI UnregisterClassW(LPCWSTR,HINSTANCE);=0A=
+#if (_WIN32_WINDOWS >=3D 0x0410 || _WIN32_WINNT >=3D 0x0500)=0A=
+BOOL WINAPI UnregisterDeviceNotification(HANDLE);=0A=
+#endif=0A=
 BOOL WINAPI UnregisterHotKey(HWND,int);=0A=
 BOOL WINAPI UpdateWindow(HWND);=0A=
 #if (_WIN32_WINNT >=3D 0x0500)=0A=
Index: lib/user32.def=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/src/src/winsup/w32api/lib/user32.def,v=0A=
retrieving revision 1.22=0A=
diff -u -r1.22 user32.def=0A=
--- lib/user32.def	30 Sep 2003 06:57:46 -0000	1.22=0A=
+++ lib/user32.def	28 Mar 2004 07:52:17 -0000=0A=
@@ -609,6 +609,7 @@=0A=
 UnpackDDElParam@16=0A=
 UnregisterClassA@8=0A=
 UnregisterClassW@8=0A=
+UnregisterDeviceNotification@4=0A=
 UnregisterHotKey@8=0A=
 UpdateLayeredWindow@36=0A=
 UpdateWindow@4=0A=

------=_NextPart_000_00EF_01C414DD.859C2FB0--


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click