From 06f0bc91ee0a01f1eca84bcf78102032a38926d5 Mon Sep 17 00:00:00 2001 From: snzgoo Date: Sun, 25 Apr 2010 22:39:47 +0000 Subject: [PATCH] Just a small WIIUSE[WIN32] update to avoid dependencies @wiimote_plugin in my next commit. You can check whether WM_DEVICECHANGE got triggered by a Wiimote.(Pair-up arrival/removal) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5410 8ced0084-cf51-0410-be5f-012b33b47a6e --- Externals/WiiUse/Win32/wiiuse.dll | Bin 27136 -> 27648 bytes Externals/WiiUse/Win32/wiiuse.lib | Bin 8610 -> 9204 bytes Externals/WiiUse/X64/wiiuse.dll | Bin 31744 -> 32768 bytes Externals/WiiUse/X64/wiiuse.lib | Bin 8462 -> 9046 bytes Externals/WiiUseSrc/Src/io_win.c | 65 ++++++++++++++++++++++++++++++ Externals/WiiUseSrc/Src/wiiuse.h | 4 +- 6 files changed, 68 insertions(+), 1 deletion(-) diff --git a/Externals/WiiUse/Win32/wiiuse.dll b/Externals/WiiUse/Win32/wiiuse.dll index 6a7d581c08cc1c8bcdb4516fdf7d9bc51056cb83..9b86e1aa188b8e1efcb46cd9ed22722b33950e8c 100644 GIT binary patch delta 7905 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 O;HAm3Wc-o%^Zx@7e}xhN delta 7183 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 bb{ls?%Sed)S?w@bakr)^2}^pili>aXcz{K% delta 1790 zcma)+U1$_n6vzLYY&QF0Cc87U^SSf28$S^0Ch3X^MM;si6w`;k1PXbGR1iN(izpNo z<7T1o}chdzV~QW1q>&z)PGy9+H{_%V0(fBxs5 zd+xpS=UZRx?s~-?le3evGo5LgD_YA_Go6_@{VkON>;|;wKrIIJ1t6?Sf-WGaFG@@u zNIAt%#yTgl3qZ<4elm^A68{z;@K_f#c1ir@B^H?Yro^}i2&`#|xy}waqAp^gT0SgFGj#|es($MSr@qK04F0XV}f56*fhZtt#eQ( z0giC;c@E$`MGiyIF^VEg6i|nO63S?zf);!P@Swqgg(}7{jtz(~f;?QC@3E85*$*40(pq0?2Z^x4YwJ>?v) zoW9e2(oCOzsvaFGeN3+#o9SR}S`5Fa{hk@;iZ*?%kBT3frEeXj(rzS^^0DL{*yt*fsPvdCD{Zn|qEFo&Svl&QWg7PS=FBRs&>>H$ zwChWWk2p5adwx4hs7hnBrb?oezZynG?BHg0YFukq3uwL(W_}U0lE@&w_OrT`qPN%0Upf4K+T?i&JzgnbDF9M~0G59&D?}#a$owXf5e$tK3#my-$8qInipz8nn_J=-4k! d*)jf{A)qHs<%A91!I1X1lvS&jETTKD+- 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 W(2^lVXeYZJ%}OMtHYdF)r2YdCbSLxx literal 8462 zcmcIpOK%iM5H8jZ#0wZ3zu(IvA>m+*+4Vz;qU90Eh?ix|4QW{K4&D*toz?CvuS+Bj z&Ly{8I3kpvz#&IYoH*nVAr3kC7jWRfF;F!4}gn}MuU>gnq0{<^xWx~hAR{ZwgH z>p$nu6!`D#{Nmj5+|pvH$oX@A_3Yx3-*P7p02cvz9|QC~1L%JPF!jWzZY+@ocLWVQ z1t1#C2^yXR@Ms%Lq>-AS$;`zhYcEzkVJ& zSX)iMx6w9TqtR(p>z#Xs)3VHlYq<56*{(Zw4g3L8WfDiLRI8?)K3G_Ujdj;*1T*ly zS!>m4G|Z|irzopTre?Jz-`7OrFiFcXT4p7Hlhv@ygO=r*5)y?(ok=wv+m;gEH*2Mp zv|7e}Twp1rv*Ki%PTO)VrxB75*pWV!b`uxIXjQP6-ih%ey>M1-vq4bzE%%Y$FVqs# zlS^~^x^K4H+U#YOjZ(GEN~6=1!^kR=u^Lve+1@v6Rr_iNo5*-fdJ}hHve3qmFhjcW4I~OH_clkZIRw# z*V9}*+{F5#dW#Wby=M zn>Ds&UY$$16}O{gM2$&!u5HvRZm^pghe>WZ^K93-GKD;7vcklPQ31q@6*4rvm^vEGLHnwvlQh0H-lhUYJ0+F@P6Xz8wcxC;-f& z?293QCd#j1X(RvfG{6Ux%VBv4%cW6(cliAr%U3fvK8|%8%V*gCJ&ykx$HxE;`ydBL z;Q)LKgRmclU;ug`569skoPY_Kf^q1DQ5c3kI1ESN5X`_g&<$fS0+UdHY3PSzU);Y7 zPo&R}o@~crk0cpen4~&&_&KQfctWur(b$%797T`4^f<*(((ExBr<6gmLE_v!&S}XB zQ%@03K#x-lhFW(${u0h%tHoEB#=;1e94>bcZz5brW*Bp-AePLfc2!>r?tWD7E|DH& zt(}N|_>g`gt2{|lJ|Is?#Zhrv&-;`o_#?73Ad<9+e9RXOS-j8H z^D|}Teq$)OvEUSE(|)&zHEaB^9cxXI)BCh=3e@83qBj; z9l(D`JCcEA8453RSoUM2q+ebsbqWUh4j}7quK_%Po`*-TS=E-)cJ8``AJ%>>T)lk# zir>x(!lHQ)VP4>UVWNQXmUs#TXHa#vnmE;-hkwAwk9rRj1)5t9q{d|cZ?<*G@pKb7 zzD$v1uoDC_CB-2=rVYW5M#t`+DMdlQe$`&+T^aFBldX>(`uOOX6U2$kZ zZsIBT*`8257mtTmBt#2#Ov`&R;w;7EkoD26N?4i^&Z)BPSc*>j6_%E+Wz;Ff+7D-RnC)T@w^FC&>&vXr3T2}C^- zLe+2WU*rQRn)Y$b_&Zc4O^XSrbVl}bRQ-CE4J%<)$v%&Atl;LC(Q1N!)Oh?njz|Mx zB=r`eZJ+wwV+>6=Ex$v=!3bjX!kSS}d0h+T3HT6+Z;OG)`)@wlWjNdZCFn>IVVI+7 z_v~z%EhNM_`~wo-LYZdrf*yZ|&!p)>f~IE>eKa0D;Rzs{_N9dU?-b&Xas01~o8X~z z?u~QYm}iZQx~ACh1jpo0CYg4&n4lq@L6aJq{u+}}ule|BTtK8Lg%tPFlTEV(kD+_e aw8G<$NZF7QtdnjhGYUz2pHinO #include +#include #include #include "definitions.h" @@ -283,4 +284,68 @@ int wiiuse_io_write(struct wiimote_t* wm, byte* buf, int len) { return 0; } +//Checks if the corresponding device to a system notification is a wiimote +//I placed the code here to avoid ddk/wdk dependencies @wiimote plugin +int wiiuse_check_system_notification(unsigned int nMsg, WPARAM wParam, LPARAM lParam) { + PDEV_BROADCAST_HDR pDevice = (PDEV_BROADCAST_HDR)lParam; + + switch( pDevice->dbch_devicetype ) { + + case DBT_DEVTYP_DEVICEINTERFACE: + { + PDEV_BROADCAST_DEVICEINTERFACE pDeviceInfo = (PDEV_BROADCAST_DEVICEINTERFACE)pDevice; + HIDD_ATTRIBUTES attr; + char stringbuf[255]; + + HANDLE dev = CreateFile(pDeviceInfo->dbcc_name, + 0,(FILE_SHARE_READ | FILE_SHARE_WRITE), + NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); + + if (dev != INVALID_HANDLE_VALUE) + { + attr.Size = sizeof(attr); + HidD_GetAttributes(dev, &attr); + + //Checking PID&VID + if ((attr.VendorID == WM_VENDOR_ID) && (attr.ProductID == WM_PRODUCT_ID)) { + CloseHandle(dev); + return 1; + } + + CloseHandle(dev); + } + else { //different method to acquire the "wiimote vid/pid" for a comparison when the device is already unavailable @CreateFile() + + wcstombs(stringbuf, pDeviceInfo->dbcc_name, 255); + + //ms bt stack + bluesoleil vid/pid dbccname format + if ( (strstr(stringbuf, "VID&0002057e_PID&0306") != NULL) || (strstr(stringbuf, "VID_057e&PID_0306") != NULL) ) + { + return 1; + } + } + + return 0; + } + + default: + return 0; + + } + return 0; +} + +//register a handle for device notifications +int wiiuse_register_system_notification(HWND hwnd) { + DEV_BROADCAST_DEVICEINTERFACE Filter; + ZeroMemory( &Filter, sizeof(Filter) ); + + //GUID wiimoteguid; + //CLSIDFromString(_T("745a17a0-74d3-11d0-b6fe-00a0c90f57da"),&wiimoteguid); + Filter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); + Filter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; + //Filter.dbcc_classguid = wiimoteguid; + + return RegisterDeviceNotification(hwnd,&Filter, DEVICE_NOTIFY_ALL_INTERFACE_CLASSES); +} #endif /* ifdef WIN32 */ diff --git a/Externals/WiiUseSrc/Src/wiiuse.h b/Externals/WiiUseSrc/Src/wiiuse.h index 5633fbed90..1df11b06b0 100644 --- a/Externals/WiiUseSrc/Src/wiiuse.h +++ b/Externals/WiiUseSrc/Src/wiiuse.h @@ -673,10 +673,12 @@ WIIUSE_EXPORT extern void wiiuse_resync(struct wiimote_t* wm); WIIUSE_EXPORT extern void wiiuse_set_timeout(struct wiimote_t** wm, int wiimotes, byte normal_timeout, byte exp_timeout); WIIUSE_EXPORT extern void wiiuse_set_accel_threshold(struct wiimote_t* wm, int threshold); -/* connect.c */ +/* connect.c / io_win.c */ WIIUSE_EXPORT extern int wiiuse_find(struct wiimote_t** wm, int max_wiimotes, int timeout); WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_t** wm, int wiimotes); WIIUSE_EXPORT extern void wiiuse_disconnect(struct wiimote_t* wm); +WIIUSE_EXPORT extern int wiiuse_check_system_notification(unsigned int nMsg, WPARAM wParam, LPARAM lParam); +WIIUSE_EXPORT extern int wiiuse_register_system_notification(HWND hwnd); /* events.c */ WIIUSE_EXPORT extern int wiiuse_poll(struct wiimote_t** wm, int wiimotes);