€•¤[Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ$/translations/zh_CN/usb/gadget_multi”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/zh_TW/usb/gadget_multi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/it_IT/usb/gadget_multi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ja_JP/usb/gadget_multi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ko_KR/usb/gadget_multi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/sp_SP/usb/gadget_multi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒMultifunction Composite Gadget”h]”hŒMultifunction Composite Gadget”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒ>/var/lib/git/docbuild/linux/Documentation/usb/gadget_multi.rst”h Kubh¢)”}”(hhh]”(h§)”}”(hŒOverview”h]”hŒOverview”…””}”(hhºhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh·hžhhŸh¶h KubhŒ paragraph”“”)”}”(hŒŸThe Multifunction Composite Gadget (or g_multi) is a composite gadget that makes extensive use of the composite framework to provide a... multifunction gadget.”h]”hŒŸThe Multifunction Composite Gadget (or g_multi) is a composite gadget that makes extensive use of the composite framework to provide a... multifunction gadget.”…””}”(hhÊhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khh·hžhubhÉ)”}”(hŒ¦In its standard configuration it provides a single USB configuration with RNDIS[1] (that is Ethernet), USB CDC[2] ACM (that is serial) and USB Mass Storage functions.”h]”hŒ¦In its standard configuration it provides a single USB configuration with RNDIS[1] (that is Ethernet), USB CDC[2] ACM (that is serial) and USB Mass Storage functions.”…””}”(hhØhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K hh·hžhubhÉ)”}”(hŒÑA CDC ECM (Ethernet) function may be turned on via a Kconfig option and RNDIS can be turned off. If they are both enabled the gadget will have two configurations -- one with RNDIS and another with CDC ECM[3].”h]”hŒÑA CDC ECM (Ethernet) function may be turned on via a Kconfig option and RNDIS can be turned off. If they are both enabled the gadget will have two configurations -- one with RNDIS and another with CDC ECM[3].”…””}”(hhæhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khh·hžhubhÉ)”}”(hŒ€Please note that if you use non-standard configuration (that is enable CDC ECM) you may need to change vendor and/or product ID.”h]”hŒ€Please note that if you use non-standard configuration (that is enable CDC ECM) you may need to change vendor and/or product ID.”…””}”(hhôhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khh·hžhubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒ Host drivers”h]”hŒ Host drivers”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj hžhhŸh¶h KubhÉ)”}”(hŒÎTo make use of the gadget one needs to make it work on host side -- without that there's no hope of achieving anything with the gadget. As one might expect, things one need to do very from system to system.”h]”hŒÐTo make use of the gadget one needs to make it work on host side -- without that there’s no hope of achieving anything with the gadget. As one might expect, things one need to do very from system to system.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khj hžhubh¢)”}”(hhh]”(h§)”}”(hŒLinux host drivers”h]”hŒLinux host drivers”…””}”(hj,hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj)hžhhŸh¶h KubhÉ)”}”(hŒÙSince the gadget uses standard composite framework and appears as such to Linux host it does not need any additional drivers on Linux host side. All the functions are handled by respective drivers developed for them.”h]”hŒÙSince the gadget uses standard composite framework and appears as such to Linux host it does not need any additional drivers on Linux host side. All the functions are handled by respective drivers developed for them.”…””}”(hj:hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K!hj)hžhubhÉ)”}”(hŒ½This is also true for two configuration set-up with RNDIS configuration being the first one. Linux host will use the second configuration with CDC ECM which should work better under Linux.”h]”hŒ½This is also true for two configuration set-up with RNDIS configuration being the first one. Linux host will use the second configuration with CDC ECM which should work better under Linux.”…””}”(hjHhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K&hj)hžhubeh}”(h]”Œlinux-host-drivers”ah ]”h"]”Œlinux host drivers”ah$]”h&]”uh1h¡hj hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒWindows host drivers”h]”hŒWindows host drivers”…””}”(hjahžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj^hžhhŸh¶h K+ubhÉ)”}”(hŒCFor the gadget to work under Windows two conditions have to be met:”h]”hŒCFor the gadget to work under Windows two conditions have to be met:”…””}”(hjohžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K-hj^hžhubh¢)”}”(hhh]”(h§)”}”(hŒDetecting as composite gadget”h]”hŒDetecting as composite gadget”…””}”(hj€hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj}hžhhŸh¶h K0ubhÉ)”}”(hX.First of all, Windows need to detect the gadget as an USB composite gadget which on its own have some conditions[4]. If they are met, Windows lets USB Generic Parent Driver[5] handle the device which then tries to match drivers for each individual interface (sort of, don't get into too many details).”h]”hX0First of all, Windows need to detect the gadget as an USB composite gadget which on its own have some conditions[4]. If they are met, Windows lets USB Generic Parent Driver[5] handle the device which then tries to match drivers for each individual interface (sort of, don’t get into too many details).”…””}”(hjŽhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K2hj}hžhubhÉ)”}”(hŒHThe good news is: you do not have to worry about most of the conditions!”h]”hŒHThe good news is: you do not have to worry about most of the conditions!”…””}”(hjœhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K8hj}hžhubhÉ)”}”(hŒÁThe only thing to worry is that the gadget has to have a single configuration so a dual RNDIS and CDC ECM gadget won't work unless you create a proper INF -- and of course, if you do submit it!”h]”hŒÃThe only thing to worry is that the gadget has to have a single configuration so a dual RNDIS and CDC ECM gadget won’t work unless you create a proper INF -- and of course, if you do submit it!”…””}”(hjªhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K;hj}hžhubeh}”(h]”Œdetecting-as-composite-gadget”ah ]”h"]”Œdetecting as composite gadget”ah$]”h&]”uh1h¡hj^hžhhŸh¶h K0ubh¢)”}”(hhh]”(h§)”}”(hŒ$Installing drivers for each function”h]”hŒ$Installing drivers for each function”…””}”(hjÃhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjÀhžhhŸh¶h K@ubhÉ)”}”(hŒYThe other, trickier thing is making Windows install drivers for each individual function.”h]”hŒYThe other, trickier thing is making Windows install drivers for each individual function.”…””}”(hjÑhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KBhjÀhžhubhÉ)”}”(hŒ‰For mass storage it is trivial since Windows detect it's an interface implementing USB Mass Storage class and selects appropriate driver.”h]”hŒ‹For mass storage it is trivial since Windows detect it’s an interface implementing USB Mass Storage class and selects appropriate driver.”…””}”(hjßhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KEhjÀhžhubhÉ)”}”(hŒ)Things are harder with RDNIS and CDC ACM.”h]”hŒ)Things are harder with RDNIS and CDC ACM.”…””}”(hjíhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KHhjÀhžhubh¢)”}”(hhh]”(h§)”}”(hŒRNDIS”h]”hŒRNDIS”…””}”(hjþhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjûhžhhŸh¶h KKubhÉ)”}”(hŒßTo make Windows select RNDIS drivers for the first function in the gadget, one needs to use the [[file:linux.inf]] file provided with this document. It "attaches" Window's RNDIS driver to the first interface of the gadget.”h]”(hŒbTo make Windows select RNDIS drivers for the first function in the gadget, one needs to use the [[”…””}”(hj hžhhŸNh NubhŒ reference”“”)”}”(hŒfile:linux.inf”h]”hŒfile:linux.inf”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1jhj ubhŒu]] file provided with this document. It “attaches†Window’s RNDIS driver to the first interface of the gadget.”…””}”(hj hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KMhjûhžhubhÉ)”}”(hŒÞPlease note, that while testing we encountered some issues[6] when RNDIS was not the first interface. You do not need to worry abut it unless you are trying to develop your own gadget in which case watch out for this bug.”h]”hŒÞPlease note, that while testing we encountered some issues[6] when RNDIS was not the first interface. You do not need to worry abut it unless you are trying to develop your own gadget in which case watch out for this bug.”…””}”(hj/hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KRhjûhžhubeh}”(h]”Œrndis”ah ]”h"]”Œrndis”ah$]”h&]”uh1h¡hjÀhžhhŸh¶h KKubh¢)”}”(hhh]”(h§)”}”(hŒCDC ACM”h]”hŒCDC ACM”…””}”(hjHhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjEhžhhŸh¶h KXubhÉ)”}”(hŒ>Similarly, [[file:linux-cdc-acm.inf]] is provided for CDC ACM.”h]”(hŒ Similarly, [[”…””}”(hjVhžhhŸNh Nubj)”}”(hŒfile:linux-cdc-acm.inf”h]”hŒfile:linux-cdc-acm.inf”…””}”(hj^hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j`uh1jhjVubhŒ]] is provided for CDC ACM.”…””}”(hjVhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KZhjEhžhubeh}”(h]”Œcdc-acm”ah ]”h"]”Œcdc acm”ah$]”h&]”uh1h¡hjÀhžhhŸh¶h KXubh¢)”}”(hhh]”(h§)”}”(hŒCustomising the gadget”h]”hŒCustomising the gadget”…””}”(hj‚hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h K]ubhÉ)”}”(hXIf you intend to hack the g_multi gadget be advised that rearranging functions will obviously change interface numbers for each of the functionality. As an effect provided INFs won't work since they have interface numbers hard-coded in them (it's not hard to change those though[7]).”h]”hX If you intend to hack the g_multi gadget be advised that rearranging functions will obviously change interface numbers for each of the functionality. As an effect provided INFs won’t work since they have interface numbers hard-coded in them (it’s not hard to change those though[7]).”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K_hjhžhubhÉ)”}”(hŒÞThis also means, that after experimenting with g_multi and changing provided functions one should change gadget's vendor and/or product ID so there will be no collision with other customised gadgets or the original gadget.”h]”hŒàThis also means, that after experimenting with g_multi and changing provided functions one should change gadget’s vendor and/or product ID so there will be no collision with other customised gadgets or the original gadget.”…””}”(hjžhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KehjhžhubhÉ)”}”(hX Failing to comply may cause brain damage after wondering for hours why things don't work as intended before realising Windows have cached some drivers information (changing USB port may sometimes help plus you might try using USBDeview[8] to remove the phantom device).”h]”hXFailing to comply may cause brain damage after wondering for hours why things don’t work as intended before realising Windows have cached some drivers information (changing USB port may sometimes help plus you might try using USBDeview[8] to remove the phantom device).”…””}”(hj¬hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Kjhjhžhubeh}”(h]”Œcustomising-the-gadget”ah ]”h"]”Œcustomising the gadget”ah$]”h&]”uh1h¡hjÀhžhhŸh¶h K]ubh¢)”}”(hhh]”(h§)”}”(hŒ INF testing”h]”hŒ INF testing”…””}”(hjÅhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjÂhžhhŸh¶h KpubhÉ)”}”(hŒÓProvided INF files have been tested on Windows XP SP3, Windows Vista and Windows 7, all 32-bit versions. It should work on 64-bit versions as well. It most likely won't work on Windows prior to Windows XP SP2.”h]”hŒÕProvided INF files have been tested on Windows XP SP3, Windows Vista and Windows 7, all 32-bit versions. It should work on 64-bit versions as well. It most likely won’t work on Windows prior to Windows XP SP2.”…””}”(hjÓhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KrhjÂhžhubeh}”(h]”Œ inf-testing”ah ]”h"]”Œ inf testing”ah$]”h&]”uh1h¡hjÀhžhhŸh¶h Kpubeh}”(h]”Œ$installing-drivers-for-each-function”ah ]”h"]”Œ$installing drivers for each function”ah$]”h&]”uh1h¡hj^hžhhŸh¶h K@ubeh}”(h]”Œwindows-host-drivers”ah ]”h"]”Œwindows host drivers”ah$]”h&]”uh1h¡hj hžhhŸh¶h K+ubh¢)”}”(hhh]”(h§)”}”(hŒ Other systems”h]”hŒ Other systems”…””}”(hjühžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjùhžhhŸh¶h KxubhÉ)”}”(hŒÛAt this moment, drivers for any other systems have not been tested. Knowing how MacOS is based on BSD and BSD is an Open Source it is believed that it should (read: "I have no idea whether it will") work out-of-the-box.”h]”hŒßAt this moment, drivers for any other systems have not been tested. Knowing how MacOS is based on BSD and BSD is an Open Source it is believed that it should (read: “I have no idea whether it willâ€) work out-of-the-box.”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KzhjùhžhubhÉ)”}”(hŒ2For more exotic systems I have even less to say...”h]”hŒ2For more exotic systems I have even less to say...”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhjùhžhubhÉ)”}”(hŒ(Any testing and drivers *are* *welcome*!”h]”(hŒAny testing and drivers ”…””}”(hj&hžhhŸNh NubhŒemphasis”“”)”}”(hŒ*are*”h]”hŒare”…””}”(hj0hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j.hj&ubhŒ ”…””}”(hj&hžhhŸNh Nubj/)”}”(hŒ *welcome*”h]”hŒwelcome”…””}”(hjBhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j.hj&ubhŒ!”…””}”(hj&hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khjùhžhubeh}”(h]”Œ other-systems”ah ]”h"]”Œ other systems”ah$]”h&]”uh1h¡hj hžhhŸh¶h Kxubeh}”(h]”Œ host-drivers”ah ]”h"]”Œ host drivers”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒAuthors”h]”hŒAuthors”…””}”(hjmhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjjhžhhŸh¶h K„ubhÉ)”}”(hX~This document has been written by Michal Nazarewicz ([[mailto:mina86@mina86.com]]). INF files have been hacked with support of Marek Szyprowski ([[mailto:m.szyprowski@samsung.com]]) and Xiaofan Chen ([[mailto:xiaofanc@gmail.com]]) basing on the MS RNDIS template[9], Microchip's CDC ACM INF file and David Brownell's ([[mailto:dbrownell@users.sourceforge.net]]) original INF files.”h]”(hŒ7This document has been written by Michal Nazarewicz ([[”…””}”(hj{hžhhŸNh Nubj)”}”(hŒmailto:mina86@mina86.com”h]”hŒmailto:mina86@mina86.com”…””}”(hjƒhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j…uh1jhj{ubhŒE]]). INF files have been hacked with support of Marek Szyprowski ([[”…””}”(hj{hžhhŸNh Nubj)”}”(hŒmailto:m.szyprowski@samsung.com”h]”hŒmailto:m.szyprowski@samsung.com”…””}”(hj–hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j˜uh1jhj{ubhŒ]]) and Xiaofan Chen ([[”…””}”(hj{hžhhŸNh Nubj)”}”(hŒmailto:xiaofanc@gmail.com”h]”hŒmailto:xiaofanc@gmail.com”…””}”(hj©hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j«uh1jhj{ubhŒa]]) basing on the MS RNDIS template[9], Microchip’s CDC ACM INF file and David Brownell’s ([[”…””}”(hj{hžhhŸNh Nubj)”}”(hŒ&mailto:dbrownell@users.sourceforge.net”h]”hŒ&mailto:dbrownell@users.sourceforge.net”…””}”(hj¼hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j¾uh1jhj{ubhŒ]]) original INF files.”…””}”(hj{hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K†hjjhžhubeh}”(h]”Œauthors”ah ]”h"]”Œauthors”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K„ubh¢)”}”(hhh]”(h§)”}”(hŒ Footnotes”h]”hŒ Footnotes”…””}”(hjàhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjÝhžhhŸh¶h KŽubhÉ)”}”(hŒn[1] Remote Network Driver Interface Specification, [[https://msdn.microsoft.com/en-us/library/ee484414.aspx]].”h]”(hŒ5[1] Remote Network Driver Interface Specification, [[”…””}”(hjîhžhhŸNh Nubj)”}”(hŒ6https://msdn.microsoft.com/en-us/library/ee484414.aspx”h]”hŒ6https://msdn.microsoft.com/en-us/library/ee484414.aspx”…””}”(hjöhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jøuh1jhjîubhŒ]].”…””}”(hjîhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhjÝhžhubhÉ)”}”(hŒ[2] Communications Device Class Abstract Control Model, spec for this and other USB classes can be found at [[http://www.usb.org/developers/devclass_docs/]].”h]”(hŒn[2] Communications Device Class Abstract Control Model, spec for this and other USB classes can be found at [[”…””}”(hjhžhhŸNh Nubj)”}”(hŒ,http://www.usb.org/developers/devclass_docs/”h]”hŒ,http://www.usb.org/developers/devclass_docs/”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1jhjubhŒ]].”…””}”(hjhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K“hjÝhžhubhÉ)”}”(hŒ[3] CDC Ethernet Control Model.”h]”hŒ[3] CDC Ethernet Control Model.”…””}”(hj0hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K—hjÝhžhubhÉ)”}”(hŒG[4] [[https://msdn.microsoft.com/en-us/library/ff537109(v=VS.85).aspx]]”h]”(hŒ[4] [[”…””}”(hj>hžhhŸNh Nubj)”}”(hŒ?https://msdn.microsoft.com/en-us/library/ff537109(v=VS.85).aspx”h]”hŒ?https://msdn.microsoft.com/en-us/library/ff537109(v=VS.85).aspx”…””}”(hjFhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jHuh1jhj>ubhŒ]]”…””}”(hj>hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K™hjÝhžhubhÉ)”}”(hŒG[5] [[https://msdn.microsoft.com/en-us/library/ff539234(v=VS.85).aspx]]”h]”(hŒ[5] [[”…””}”(hj_hžhhŸNh Nubj)”}”(hŒ?https://msdn.microsoft.com/en-us/library/ff539234(v=VS.85).aspx”h]”hŒ?https://msdn.microsoft.com/en-us/library/ff539234(v=VS.85).aspx”…””}”(hjghžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jiuh1jhj_ubhŒ]]”…””}”(hj_hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K›hjÝhžhubhÉ)”}”(hŒT[6] To put it in some other nice words, Windows failed to respond to any user input.”h]”hŒT[6] To put it in some other nice words, Windows failed to respond to any user input.”…””}”(hj€hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhjÝhžhubhÉ)”}”(hŒN[7] You may find [[http://www.cygnal.org/ubb/Forum9/HTML/001050.html]] useful.”h]”(hŒ[7] You may find [[”…””}”(hjŽhžhhŸNh Nubj)”}”(hŒ1http://www.cygnal.org/ubb/Forum9/HTML/001050.html”h]”hŒ1http://www.cygnal.org/ubb/Forum9/HTML/001050.html”…””}”(hj–hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j˜uh1jhjŽubhŒ ]] useful.”…””}”(hjŽhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K hjÝhžhubhÉ)”}”(hŒ7[8] https://www.nirsoft.net/utils/usb_devices_view.html”h]”(hŒ[8] ”…””}”(hj¯hžhhŸNh Nubj)”}”(hŒ3https://www.nirsoft.net/utils/usb_devices_view.html”h]”hŒ3https://www.nirsoft.net/utils/usb_devices_view.html”…””}”(hj·hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j¹uh1jhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K£hjÝhžhubhÉ)”}”(hŒ>[9] [[https://msdn.microsoft.com/en-us/library/ff570620.aspx]]”h]”(hŒ[9] [[”…””}”(hjÌhžhhŸNh Nubj)”}”(hŒ6https://msdn.microsoft.com/en-us/library/ff570620.aspx”h]”hŒ6https://msdn.microsoft.com/en-us/library/ff570620.aspx”…””}”(hjÔhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jÖuh1jhjÌubhŒ]]”…””}”(hjÌhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K¥hjÝhžhubeh}”(h]”Œ footnotes”ah ]”h"]”Œ footnotes”ah$]”h&]”uh1h¡hh£hžhhŸh¶h KŽubeh}”(h]”Œmultifunction-composite-gadget”ah ]”h"]”Œmultifunction composite gadget”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h¶uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¦NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h¶Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(júj÷jjjgjdj[jXjöjój½jºjîjëjBj?j|jyj¿j¼jæjãj_j\jÚj×jòjïuŒ nametypes”}”(jú‰j‰jg‰j[‰jö‰j½‰jî‰jB‰j|‰j¿‰jæ‰j_‰jÚ‰jò‰uh}”(j÷h£jh·jdj jXj)jój^jºj}jëjÀj?jûjyjEj¼jjãjÂj\jùj×jjjïjÝuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.