Page 1 of 1

IOCTL_USB_GET_ROOT_HUB_NAME , IOCTL_GET_HCD_DRIVERKEY_NAME

Posted: Thu Sep 20, 2007 9:45 am
by bingo

Code: Select all

#FILE_DEVICE_UNKNOWN = $22
#FILE_DEVICE_USB = #FILE_DEVICE_UNKNOWN
#HCD_GET_ROOT_HUB_NAME = 258
#HCD_GET_DRIVERKEY_NAME = 265
#METHOD_BUFFERED = 0
#FILE_ANY_ACCESS = 0

Structure UnicodeName
ActualLength.l
Name.b[256]
EndStructure

pu.UnicodeName

Procedure.l CTL_CODE(DeviceType, Function, Method, Access)
  ProcedureReturn ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)
EndProcedure

Procedure.s Uni2Ansi(unicode.l) 
size.l = WideCharToMultiByte_(#CP_ACP, 0, Unicode, -1, #Null, #Null, #Null, #Null) 
ansi.s=Space(size) 
WideCharToMultiByte_(#CP_ACP, 0, Unicode, -1, @ansi, size, #Null, #Null) 
ProcedureReturn ansi 
EndProcedure

IOCTL_USB_GET_ROOT_HUB_NAME = CTL_CODE(#FILE_DEVICE_USB,#HCD_GET_ROOT_HUB_NAME,#METHOD_BUFFERED,#FILE_ANY_ACCESS)

IOCTL_GET_HCD_DRIVERKEY_NAME = CTL_CODE(#FILE_DEVICE_USB,#HCD_GET_DRIVERKEY_NAME,#METHOD_BUFFERED,#FILE_ANY_ACCESS)

For usbhub=0 To 10

hchandle.l = CreateFile_("\\.\HCD" + Str(usbhub),#GENERIC_READ,#FILE_SHARE_READ,0,#OPEN_EXISTING,0,0)

If hchandle > 0

Debug "hub -> " + Str(usbhub)

DeviceIoControl_(hchandle,IOCTL_USB_GET_ROOT_HUB_NAME,0,0,@pu,SizeOf(pu),@retbytes,0)
Debug uni2ansi(@pu\Name)

DeviceIoControl_(hchandle,IOCTL_GET_HCD_DRIVERKEY_NAME,0,0,@pu,SizeOf(pu),@retbytes,0)
Debug uni2ansi(@pu\Name)

CloseHandle_(hchandle)

Else
Break
EndIf

Next

end
8)

usbhub-info in win32 (xp,vista ... not tested in 2000 and server 2003 , but should work)

Posted: Thu Sep 20, 2007 12:06 pm
by jpd
Hi bingo,


is possible to see if the hub in use?

and is possible to disable the hub?

Thanks
jpd

Posted: Thu Sep 20, 2007 1:53 pm
by bingo

Posted: Thu Sep 20, 2007 3:39 pm
by jpd
Hi bingo,

thanks for the link,

your code look like simple :),

but whow!! :shock:

I found the following line for ctl_code:

Code: Select all

IOCTL_USB_HCD_DISABLE_PORT=CTL_CODE(#FILE_DEVICE_USB, #HCD_DISABLE_PORT, #METHOD_BUFFERED, #FILE_ANY_ACCESS)

but not found the value of the constant #HCD_DISABLE_PORT

any Idea?
thanks
jpd

Posted: Thu Sep 20, 2007 5:33 pm
by bingo
#define HCD_GET_STATS_1 255
#define HCD_DIAGNOSTIC_MODE_ON 256
#define HCD_DIAGNOSTIC_MODE_OFF 257
#define HCD_GET_ROOT_HUB_NAME 258
#define HCD_GET_DRIVERKEY_NAME 265
#define HCD_GET_STATS_2 266
#define HCD_DISABLE_PORT 268
#define HCD_ENABLE_PORT 269
#define HCD_USER_REQUEST 270
#define HCD_TRACE_READ_REQUEST 275
... in usbiodef.h :lol:

Posted: Thu Sep 20, 2007 5:47 pm
by jpd
or ..

Code: Select all

#USB_IOCTL_INDEX=255
#HCD_DISABLE_PORT=USB_IOCTL_INDEX+13
but me knowledge is not really properly for DDK :(.

Thanks

jpd