Desktop Functions: Smart Device Functions:
|
Search Results for "usb" in [All]user322: SB_GETTEXT
public class StatusBar
public StatusBar(IntPtr hWnd)
hProcess = StatusBar.OpenProcess(ProcessAccessTypes.PROCESS_ALL_ACCESS, false, this.OwningPID);
allocated = StatusBar.VirtualAllocEx(hProcess, IntPtr.Zero, length, (VirtualAllocExTypes.MEM_COMMIT_OR_RESERVE), AccessProtectionFlags.PAGE_READWRITE);
StatusBar.SendMessage(this._handle, SB_GETTEXT, (IntPtr)index, allocated);
bool success = StatusBar.ReadProcessMemory(hProcess, allocated, buffer, length, out bytesRead);
StatusBar.VirtualFreeEx(hProcess, allocated, 0, VirtualAllocExTypes.MEM_RELEASE);
StatusBar.CloseHandle(hProcess);
StatusBar.GetWindowThreadProcessId(this._handle, out pid); pdh3: 2CTHIRX2EIDSBNAA9RQVW96E03GNNULBDCCZNILK64UOZI4TN5Z476BO7WU5COA4GX7WD69FX5Q2BJSRI4X1RGUBQ3S0UIZMQS6P ¦¸@#v(Y»í«øXmµ$¾ÐEá9¦ÝUSb>9UN©ì¥ð¢¨«uý¿¬3EÐeÖgÂPgÉÆNÐÁXtne¯SLüëUZµZÕ%^YfÚ®[äù_ØÓ]%w\} Í¿JÇkí'eý×êzÜ?Ôz õ}ëax=ÙKPO;@t8æ«ÔUóñÑS'bªñîg,Mþ>a´s$ Enums4: DEVICE_TYPE
FILE_DEVICE_USBEX = 0x49,
FILE_DEVICE_USBEX = &H49
BusTypeUsb = 0x7, 6: SystemMetric
SM_CXFOCUSBORDER = 83,
SM_CYFOCUSBORDER = 84,
SM_CXFOCUSBORDER = 83, // 0x53
SM_CYFOCUSBORDER = 84, // 0x54
SM_CXFOCUSBORDER = 83
SM_CYFOCUSBORDER = 84
SM_CXFOCUSBORDER = 83
SM_CYFOCUSBORDER = 84
enum USB_CONNECTION_STATUS
Enum USB_CONNECTION_STATUS
typedef enum _USB_CONNECTION_STATUS {
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
enum USB_DEVICE_SPEED : byte
UsbLowSpeed,
UsbFullSpeed,
UsbHighSpeed
Enum USB_DEVICE_SPEED
typedef enum _USB_DEVICE_SPEED {
UsbLowSpeed = 0,
UsbFullSpeed,
UsbHighSpeed
} USB_DEVICE_SPEED; 9: USB_HUB_NODE
enum USB_HUB_NODE
UsbHub,
UsbMIParent
Enum USB_HUB_NODE
typedef enum _USB_HUB_NODE {
UsbHub,
UsbMIParent
} USB_HUB_NODE; Constants10: GUID_DEVCLASS
public static readonly Guid GUID_DEVCLASS_USB = new Guid("{0x36fc9e60, 0xc465, 0x11cf, {0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}");
public static readonly Guid GUID_DEVCLASS_WCEUSBS = new Guid("{0x25dbce51, 0x6c8f, 0x4a72, {0x8a, 0x6d, 0xb5, 0x4c, 0x2b, 0x4f, 0xc8, 0x35}}");
public static readonly Guid GUID_DEVCLASS_FSFILTER_CONTINUOUSBACKUP = new Guid("{0x71aa14f8, 0x6fad, 0x4622, {0xad, 0x77, 0x92, 0xbb, 0x9d, 0x7e, 0x69, 0x47}}");
public static Guid GUID_DEVINTERFACE_USB_DEVICE = new Guid("A5DCBF10-6530-11D2-901F-00C04FB951ED");
public static Guid GUID_DEVINTERFACE_USB_HOST_CONTROLLER = new Guid("3ABF6F2D-71C4-462A-8A92-1E6861E6AF27");
public static Guid GUID_DEVINTERFACE_USB_HUB = new Guid("F18A0E88-C30C-11D0-8815-00A0C906BED8"); ipaqutil21: hi pæXÐ èA©¸ûÌê5TÎXS=0¥b*ù{.`ôs¥¶!À>Àk^ È#ä¡m^ 5ÚÄÄmF|F@µ7 9*¾zÍc $).è÷©m·|F8AE+d07V{cõPÑA×ÉÞ)Y1^Baû,ßq»õßúIÓ@Srúp)É¿8zeðc ¿-MÀ#wº`Ù˺DZ \<ã,Â;!pTÈUsbà⽩1ß¡ëà5ëÒÖ¶ °Ï£7¤Ê¤4Cõ«&qðÖSPÁTFuG9ÖEmY¦Ù²«ºèNÀ×U@;YÄä59Õ @MS& ÿ«ÅÒ¢nÔ¯)ö:¦V4ÜvQbUÅ0±o°Òü·ÑÍÐ.ëÚPE&ø>}Vë¡¡Þ%Ð/õV§ÌΡÐÛo6E¬½#¬wOºÉÏm®E} Interfaces
void OnStatusBar([MarshalAs(UnmanagedType.VariantBool)] bool StatusBar);
Sub OnStatusBar(<MarshalAs(UnmanagedType.VariantBool)> ByVal StatusBar As Boolean)
usBuildNumber, // Build Number. 24: IShellBrowser
void SetMenuSB(IntPtr IntPtrShared, IntPtr holemenuRes, 25: IWebBrowser
bool StatusBar { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x193)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x193)] set; }
bool StatusBar { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x193)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x193)] set; }
Property StatusBar() As <MarshalAs(UnmanagedType.VariantBool)> Boolean 26: IWebBrowser2
bool StatusBar { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x193)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x193)] set; }
bool StatusBar { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x193)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x193)] set; }
Property StatusBar() As <MarshalAs(UnmanagedType.VariantBool)> Boolean wtsapi3227: WK2UXCBPAYYJYPGYYIX4OUJIB7RDX0OOWK2DW9ESP2GVXLD63WSJHXYKN7EBNC98HSYFGH29TQ690DSZRUSAQIDJEOI9OJLEU415 ¶ÙÅòü]57Wed¢&ü®É@ª¦vZ½?Ï%ÖðR¤]̺ø?Ý.0³?t NÞ¤>±DRú¶ëô0ìºÆsÒÖ7À÷;ñwĸYßlpÚå=þov(ëj/o÷Ý÷öÔ¡êº-[KÔÀ/w¾s¼ãHïÚLýcÁ¿T9jâªÖáÝcfÄ÷%ÿg©µÌ¿ö(:ï(Qô1M ÕÕÖcç'ÃSQ¤ÙåUSB¨xwnw?Oá¯! p¨7Îü¡òFöù.tpÍ+B±ð°ÿYdøg$w û¨Q6 O-ÙÍÎT¼B Ø£¢»¬¾¨î¶y×u½&òÌë¥áËUÙ«a}ª±ã}ê`Gf¾X!8æíÙÅØ´÷nòUmiIÈÊeHÝ!kô¢½ËðûÙÍSí±å¬TfÇUaÈûQsÞ|/&ª±íHHãW ¹Â²åQÍ-¤DáÞb®æ=Óy¤ù¯À¸Pú`áA¢ÐF{n8pvʳzó%M X&3H¥®C0dF¥Äìë® ³Üë= 9º¦ßÕ¹ËÂýºcý R&ÉrËöci }£[BÓÌ3z¦9?÷³¬ñfPñÄL&È:³ôb(½áfNõ]éD=Øæ£.REø¿áIkvõÂZ~«îØÒþy¹ «!"µUHêȶ¼õàkBù4;òZe$TfæªÇ|˽ fltlib28: DZQ9QONNFTZC1T4C5J2Q6P34C7RQLDJ0135A1N8A83FC9XZCYK97APC3B7QXHQNY6LOSODRZ12249M5I9OIPKDFJ85DNNRMQWZXP
ÁåÈiH\ïö^-¶¹Nl»åÒ.ÍԱλIP îÄ4[³Ñ%)¬Uýì³ôÿª¥"^¡~jáþSÁ·Ä{ReÑ'ÛTL¹ºæcYÇ2²ÝÎö
£z9èîÀ¥æÆ×ÛäR±©ZæË6ìK±Ø*o¡Á¦¦K°ó/ñeÚâl)<wöæÇM
Á¿þÄÞ*.2éÔ½åÛ?ü#©u(àk 3vt¥è02»Rê7¸ck"Ñù%ª2 ²3^sS6)2lq0Ki*?r¨FâDÛZE`Tn¶V>~zcZDåçö©hó¤:$¤qiOüÍ]Y$ÜÔÐN
éZ
PyÍkQ&©|îÇ,wWX=`ªÂ`dÉÅHêÝ3V¨+OðãÝØ÷äóWGºj¼;¢×TOüPÛ,8bÿ»à=ñ\ë?S0HÀ>W,eɾv\;@g¥K|î<Ý*¤~Û§Ìt>ÒpöGýjæ¨C%Ê M|ÇËËÅ, ¾¦¤DbίM÷±xQùßrüèg¯§¦(²`ænjÙ~TÙyt²VbãÞµgß3ØèÎrR@YÞ.>Û=usb?Aw~¹§$öJ7ú`¯ý%º«_2äÙï¹8drÂ&3G>§bëAæ¢ýçYnGE9&~Êæ½P.hH6ÈU1â;eOºKGe0N.öWî=F³Ëk÷( ¾BÊ$ºÓ!;?Z"ùÕøs´n»aREGðË¿\éßoÏJ6ns©ËHgÚ%ÖusbS¢G7ؾp)ÿ q-243KQ¶acvP8|G!t±\ù^wèMÂ\y -aÌêj ÿ¾R winusb29: WinUsb_Free
[DllImport("winusb.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool WinUsb_Free(IntPtr InterfaceHandle);
[DllImport("winusb.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool WinUsb_GetAssociatedInterface(IntPtr InterfaceHandle,byte AssociatedInterfaceIndex,out IntPtr AssociatedInterfaceHandle);
[DllImport("winusb.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int WinUsb_Initialize(IntPtr DeviceHandle, out IntPtr InterfaceHandle); difxapi33: 9PM56UCEFMB4W8WUQVDHC6PPUGUNONI4ZYALRLVJ8VKDR1YS0H88E5GDU02YYBXSCNIBAMM4XPTL586852GBL892NB1CEH1X1510 ÊyN#usböwB¢,¸3F>¥¬}Y<Ó²úËXÙ,ÕÿãaÎCljf¯9S£:Þ÷C]ÿz³¨Ý)[åa±ÊÁÃyX/ç{]FõcæûÕ^Y&p-iÙø¸êefn®ùñ.¶IîèbQ4lÌÄÔ{ÄíË[xã°ÓÄHíp`C# û¶"£H3óîßõg_±/_«½²-F#£`ª) Räæ~Ädw·CyOìg]f #-%m|a¥SDG«¼|ä msvcrt34: LYYK970K0FMAHGBQU3RHKVOVB6VCQ5DJ165EIO5XCZ8FT5K11MH5R5GXNP0TVD5D85CCY1QQUSKER18YMZ28W58C2P8AEHHGVJ9E FÕ¯ìUSbì®×</¬ì¾H×u5ìÅkU_yw]"·° a|h¨èy³rTþÀaºK¹úã?\/î{¨[¿Yïkju¬Æ×òfÐîÞ¥ù·ã¥é¨&\ÎèÞÛN8+[á] ÃÍâU¯úµÀå¡èÕ«© ÿÞöj%NÕ°ö±Þ£ÉþÒú6ÐÌm,èF*?sTT¬G²SGv5´¼ïÅiyÐreSþ6¥U K§ë¾5Ø£ -óÈU¿BH£¤ õ gdi3235: EnumFontFamilies
int[] fsUsb;
int[] fsUsb; urlmon37: TW2MCUTQ4BG6KG3HBUK7V2I47UBBG42VA8WQBK56A8B1QYTH2PAIO6KSJBHT6323CLFH7AENVLGAIGIF8AL13SM5NKIR2CV5YQ4V
ÍoÞf¯®>O¯yÈÿs̸Øô`#澤Øk÷8;?,èúuÖZL U D½³¡.¢Ö%«,;UõO»Øàé[çÈÂ]iãÖ¼8ÏDØ;xàgúûBÞ^Ï'o^£EÔu$-2i pÕUôóþÍŶUAîcÔ«§ ÞÏmíù£r+gNÓÖô¡zF7ÀÜï1-öý?#a?´Tìr¹3¯L ßéVx_Ý2ÇÐPìm}p1uö¿wR¸#ò[ÇÕÀQ]»÷e7Usb}®ê9ÝÕQn?â~#6ý[}ý²Dyyª £Dl¢cg¼@ÎÑòêëûÒÈì=£örâK³õ`a]Ó¨Õo]¾¡æõVäR×÷ÞÚR9ñ¢@0§×ÒqaA¨/,ûêFeÙ[¡ë\¿µ2¤+\µ.F²wÊW)eWiy:G°Ìçýb¡[:³ÚÀ¸Ï,½Ds×Å0Dü XàWëjn±%FZYl0c×Ä% ÈгKqK ?1gè¨ý³Í²¹ûÐGmóñö{wlDªK¾ÞÍÏ¢¤Tv\=xýV§NSLÐ>F<\µüKÌ@Eù%} /Ò¹° ¿§õÅdùâÞX{=ZßWLm¸úþG[¶Z¸4cÂývy:±ªè¨Ý½ã¸Æx¤Ë@Ò(2í¾¶è²Ñ»5O_ä eCëIëªÂ4ÍYÊŪ´ìuBÖ«L eÜ:{°9Z>zz@æ²µFûÁ#McªÍZ&Zâ³0Ü £ïÂî! p>ÎwduÒjê(A:HÑZá>u{Äíh ²¼ËàÔ ) coredll38: CeRunAppAtEvent NOTIFICATION_EVENT_RS232_DETECTED is also raised when connecting the device to USB. Structures
ICC_BAR_CLASSES = 0x00000004, // toolbar, statusbar, trackbar, tooltips
' toolbar, statusbar, trackbar, tooltips
struct USB_SETUP_PACKET
struct USB_DESCRIPTOR_REQUEST
public USB_SETUP_PACKET SetupPacket;
Structure USB_DESCRIPTOR_REQUEST
const int USB_DEVICE_DESCRIPTOR_TYPE = 1;
const int USB_STRING_DESCRIPTOR_TYPE = 3; The USB_DESCRIPTOR_REQUEST structure is always followed by either a USB_STRING_DESCRIPTOR or USB_DEVICE_DESCRIPTOR structure. The use of a a zero-length array at the end of the structure requires that you read and write "off the edge" of the structure. This concept is not well supported in C#/VB.Net so you have make sure that you allocate sufficient buffer space to accommodate a the USB_STRING_DESCRIPTOR or USB_DEVICE_DESCRIPTOR structure.
typedef struct _USB_DESCRIPTOR_REQUEST {
} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST
USB_DESCRIPTOR_REQUEST Request = new USB_DESCRIPTOR_REQUEST();
Request.SetupPacket.wValue = (short)((USB_STRING_DESCRIPTOR_TYPE << 8) + PortDeviceDescriptor.iManufacturer);
if (DeviceIoControl(h, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, ptrRequest, nBytes, ptrRequest, nBytes, out nBytesReturned, IntPtr.Zero))
USB_STRING_DESCRIPTOR StringDesc = (USB_STRING_DESCRIPTOR)Marshal.PtrToStructure(ptrStringDesc, typeof(USB_STRING_DESCRIPTOR));
struct USB_DEVICE_DESCRIPTOR
public ushort bcdUSB;
Structure USB_DEVICE_DESCRIPTOR Is often used as a type inside a USB_NODE_CONNECTION_INFORMATION_EX structure, hence the need for the "Pack=1" The values for iManufacturer, iProduct, and iSerialNumber are just indexs that are used by the USB_STRING_DESCRIPTOR request
typedef struct _USB_DEVICE_DESCRIPTOR {
USHORT bcdUSB;
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR ;
struct USB_HCD_DRIVERKEY_NAME
Structure USB_HCD_DRIVERKEY_NAME
typedef struct _USB_HCD_DRIVERKEY_NAME {
} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;
struct USB_HUB_DESCRIPTOR
Structure USB_HUB_DESCRIPTOR This structure is often nested inside the USB_HUB_INFORMATION structure, hence the need for the "pack=1"
typedef struct _USB_HUB_DESCRIPTOR {
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;
struct USB_HUB_INFORMATION
public USB_HUB_DESCRIPTOR HubDescriptor;
Structure USB_HUB_INFORMATION Often nested inside a USB_NODE_INFORMATION structure
typedef struct _USB_HUB_INFORMATION {
USB_HUB_DESCRIPTOR HubDescriptor;
} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;
USB_NODE_INFORMATION NodeInfo = new USB_NODE_INFORMATION();
NodeInfo.NodeType = (int)USB_HUB_NODE.UsbHub;
if (DeviceIoControl(h2, IOCTL_USB_GET_NODE_INFORMATION, ptrNodeInfo, nBytes, ptrNodeInfo, nBytes, out nBytesReturned, IntPtr.Zero))
NodeInfo = (USB_NODE_INFORMATION)Marshal.PtrToStructure(ptrNodeInfo, typeof(USB_NODE_INFORMATION)); 45: USB_HUB_NODE
struct USB_NODE_CONNECTION_DRIVERKEY_NAME
Structure USB_NODE_CONNECTION_DRIVERKEY_NAME Identical to the USB_NODE_CONNECTION_NAME structure
typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
USB_NODE_CONNECTION_DRIVERKEY_NAME DriverKey = new USB_NODE_CONNECTION_DRIVERKEY_NAME();
if (DeviceIoControl(h, IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, ptrDriverKey, nBytes, ptrDriverKey, nBytes, out nBytesReturned, IntPtr.Zero))
DriverKey = (USB_NODE_CONNECTION_DRIVERKEY_NAME)Marshal.PtrToStructure(ptrDriverKey, typeof(USB_NODE_CONNECTION_DRIVERKEY_NAME));
struct USB_NODE_CONNECTION_INFORMATION_EX
public USB_DEVICE_DESCRIPTOR DeviceDescriptor;
Structure USB_NODE_CONNECTION_INFORMATION_EX
typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
USB_CONNECTION_STATUS ConnectionStatus;
USB_PIPE_INFO PipeList[0];
} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;
int nBytes = Marshal.SizeOf(typeof(USB_NODE_CONNECTION_INFORMATION_EX));
USB_NODE_CONNECTION_INFORMATION_EX NodeConnection = new USB_NODE_CONNECTION_INFORMATION_EX();
if (DeviceIoControl(h, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX, ptrNodeConnection, nBytes, ptrNodeConnection, nBytes, out nBytesReturned, IntPtr.Zero))
NodeConnection = (USB_NODE_CONNECTION_INFORMATION_EX)Marshal.PtrToStructure(ptrNodeConnection, typeof(USB_NODE_CONNECTION_INFORMATION_EX));
// To get the USB_PIPE_INFO data
USB_NODE_CONNECTION_INFORMATION_EX connection = new USB_NODE_CONNECTION_INFORMATION_EX();
size = Marshal.SizeOf(typeof(USB_NODE_CONNECTION_INFORMATION_EX)) + 32 * Marshal.SizeOf(typeof(USB_PIPE_INFO)); // Assuming 32 should be enough, you can make this larger
if (DeviceIoControl(hHub, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX, ptr_connection, size, ptr_connection, size, out bytes_returned, IntPtr.Zero))
connection = (USB_NODE_CONNECTION_INFORMATION_EX)Marshal.PtrToStructure(ptr_connection, typeof(USB_NODE_CONNECTION_INFORMATION_EX));
if (bytes_returned != Marshal.SizeOf(typeof(USB_NODE_CONNECTION_INFORMATION_EX)))
int num = (bytes_returned - Marshal.SizeOf(typeof(USB_NODE_CONNECTION_INFORMATION_EX))) / Marshal.SizeOf(typeof(USB_PIPE_INFO));
USB_PIPE_INFO[] pipe_info = new USB_PIPE_INFO[num];
// Set ptr to an USB_PIPE_INFO element and marshal it back
+ Marshal.SizeOf(typeof(USB_NODE_CONNECTION_INFORMATION_EX))
+ j * Marshal.SizeOf(typeof(USB_PIPE_INFO)));
pipe_info[j] = (USB_PIPE_INFO)Marshal.PtrToStructure(ptr_pipeinfo, typeof(USB_PIPE_INFO));
struct USB_NODE_CONNECTION_NAME
Structure USB_NODE_CONNECTION_NAME
typedef struct _USB_NODE_CONNECTION_NAME {
} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
USB_NODE_CONNECTION_NAME NodeName = new USB_NODE_CONNECTION_NAME();
if (DeviceIoControl(h, IOCTL_USB_GET_NODE_CONNECTION_NAME, ptrNodeName, nBytes, ptrNodeName, nBytes, out nBytesReturned, IntPtr.Zero))
NodeName = (USB_NODE_CONNECTION_NAME)Marshal.PtrToStructure(ptrNodeName, typeof(USB_NODE_CONNECTION_NAME));
// We need a separate struct to hold the union due to the fact that on 64-bit USB_HUB_NODE gets marshaled
struct USB_NODE_INFORMATION
public USB_HUB_NODE NodeType; /* hub, mi parent */
public UsbNodeUnion u;
// Simpler version if you do not care about USB_MI_PARENT_INFORMATION
struct USB_NODE_INFORMATION
public USB_HUB_INFORMATION HubInformation; // Yeah, I'm assuming we'll just use the first form
Structure USB_NODE_INFORMATION
enum USB_HUB_NODE : uint
UsbHub,
UsbMIParent
struct USB_MI_PARENT_INFORMATION
struct UsbNodeUnion
public USB_HUB_INFORMATION HubInformation;
public USB_MI_PARENT_INFORMATION MiParentInformation;
typedef struct _USB_NODE_INFORMATION {
USB_HUB_NODE NodeType;
USB_HUB_INFORMATION HubInformation;
USB_MI_PARENT_INFORMATION MiParentInformation;
} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;
USB_NODE_INFORMATION NodeInfo = new USB_NODE_INFORMATION();
NodeInfo.NodeType = (int)USB_HUB_NODE.UsbHub;
if (DeviceIoControl(h2, IOCTL_USB_GET_NODE_INFORMATION, ptrNodeInfo, nBytes, ptrNodeInfo, nBytes, out nBytesReturned, IntPtr.Zero))
NodeInfo = (USB_NODE_INFORMATION)Marshal.PtrToStructure(ptrNodeInfo, typeof(USB_NODE_INFORMATION));
struct USB_ROOT_HUB_NAME
Structure USB_ROOT_HUB_NAME
typedef struct _USB_ROOT_HUB_NAME {
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
USB_ROOT_HUB_NAME HubName = new USB_ROOT_HUB_NAME();
if (DeviceIoControl(h, IOCTL_USB_GET_ROOT_HUB_NAME, ptrHubName, nBytes, ptrHubName, nBytes, out nBytesReturned, IntPtr.Zero))
HubName = (USB_ROOT_HUB_NAME)Marshal.PtrToStructure(ptrHubName, typeof(USB_ROOT_HUB_NAME));
struct USB_STRING_DESCRIPTOR
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=MAXIMUM_USB_STRING_LENGTH)]
Structure USB_STRING_DESCRIPTOR
const int MAXIMUM_USB_STRING_LENGTH = 255;
const int USB_STRING_DESCRIPTOR_TYPE = 3;
typedef struct _USB_STRING_DESCRIPTOR {
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR; You don't use an IOCTL call directly with a USB_STRING_DESCRIPTOR structure. Instead you use a USB_DESCRIPTOR_REQUEST "request packet" with IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION. The USB_STRING_DESCRIPTOR structure is returned at the very end of the request packet. The whole idea of "writing off the edge" of a structure is counter to the way C#/VB.Net was designed to work, so you'll have to make sure to allocate sufficient amount of memory to handle both the "request packet" and the USB_STRING_DESCRIPTOR structure.
USB_DESCRIPTOR_REQUEST Request = new USB_DESCRIPTOR_REQUEST();
Request.SetupPacket.wValue = (short)((USB_STRING_DESCRIPTOR_TYPE << 8) + PortDeviceDescriptor.iManufacturer);
if (DeviceIoControl(h, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, ptrRequest, nBytes, ptrRequest, nBytes, out nBytesReturned, IntPtr.Zero))
USB_STRING_DESCRIPTOR StringDesc = (USB_STRING_DESCRIPTOR)Marshal.PtrToStructure(ptrStringDesc, typeof(USB_STRING_DESCRIPTOR)); opengl3253: B66PV2V8B0W4H6U02GGMTZ5F9WRPWF5VF75YNS6H8QM6YB7UB6I2QKPRG1VRU75V9G6M5CNGRXUQVZV7H1X92NRI27AD1RIKX8PF IصpÌ;.Ö,U§fÑK×I8 ϯ÷=-kÒÕK£ßÌ+kE;Mà!¦:t>ÔÿÐf Á¯@Æ1¸õÒþ D>v¥.ÀÜáëuê°¦bìF³!ßÂMHÈÐáï8 uSB|Ýù@½=:]ÚW&Ò©Rú¬¼ZTgfòéÍ÷Ûºx}¶>d89t;ýGz÷kÅÿ£Þ¢mä ¸þþÚÃÒì¿n;mqW%#7×ÅåÈïz¯WÂún\±¯äB|MqIôçthÊ£~ Zó&ÈfoÁµ[ÞÌW]¬·7-\¸¿KÏ" mapi3254: INYOKLRH77P1BJBENOHOJWQJ870OTEMKVX5M2R6TUUFGQ2BWKZSGVQQPV7TWSI6920RVK9CPBASPWL0FERZBK6SLE6NZ6VD03VWR h�'+b�DVa/q��a� �D>s0�O"NOWs����ueMov�W����b�;���(�bZ�>Z�Y�� i`�4�H���DA�'��uSBRtJd;&��f�gR)O�Me�ήM0�ӣ�R,��9W\y�y�������kqrMz*�eS2Ne��7;�I�i� �� ��5��r_ ��G)F�T�cQdm�O�[6����6N�����9����%��'4���ƣ2�����0����[1I��H����6S��ɱؑu0ɏ7��y]I2� �䗼��92̽�?=6 propsys55: YOMBJA4FXH2O6HWU64IT8KC1DXICBP772YPJERJUGJK7FNAHM1YD71QFNBC4CTF46N3A8Y3PS1J1E87GWZ19BWBW7H6QFGWTGP62 Þ2bŤ°ÕV.ÜÆ#êÂòÀÜ0iK5R3KðsºÎê®eugævó©#I)CÇ[ý.ÅøÏÕXs¥Ä.BN¢0ÔE¼tñ_" Éߨky<HÍXbdÙ¸ÚÓи½ö~ãÿ¼³ TFxûÂÛtsÐ` t 8ÛË·ÕaäðHg19Ô¤MB".àQXæz)[«ØÓÊk¬eh>ØJóBº¼LÜ×½'=AÞQh¯¨ì¡Ù¢[PÁp]§ÿ:¨ÐÓÝlZ×ã"Gøøà2§8<¤·v¸x¹t²,·XÛO Ŧ<FÂl¯ÜÍusb@õ*[Íý@lçxA'¸dk ÷ëél×îÞêêÚØ8Ø}|Äu~ìlGµ¦D%à*F%@ú!PéL·Å*PtAdb Tnúêõ©À]ë½fp¼hY5øÛÚ¿ÿ`ëïS?Hd#½@+Ê«u|]ï´kËæ ¾øÄ桱f1W4Må#¬oÂæ\ëWy¨´bWÞd¿ ½êo?×>}í'6MW[öÃÏO2Ú«ahrNûP Öæjcä¿IXÂz:Þx'i=oÚpÈ0hÝO=rÕÂæ1àiÑAþ.gÛǾOçYz3w £úoÎ0ƶÐñ?9¸¹oί®¯ÊrÍpú >ãXÀ×:Ú¾tü·YÓ±±W¥gÅ¡8û Þ!Ûg] DÓOÓtͬs#²m²÷ÙB¤³ïçåÒp¹X9©©[z;YðIÖÈRý<³iÖ:>æ±Aï 4Q¤'%¨äÍØ,NÒ kernel32
public static bool WriteUSB(IntPtr hDevice, byte[] pBuffer, uint dwBytesToWrite, ref uint lpNumberOfBytesWritten)
' if no Volume GUID passed to sub, use the one corresponding to my USB stick
' if no Volume GUID passed to sub, use the one corresponding to my USB stick setupapi59: CM_Get_Parent
// current InstanceID is at the "USBSTOR" level, so we
// need up "move up" one level to get to the "USB" level
// Now we get the InstanceID of the USB level device
string deviceId = "USB/V0001/P0001/&6&12&3"; Cut off search results after 60. Please refine your search. |