mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 17:44:45 +00:00
Implemented USBD_ParseConfigurationDescriptorEx and USBD_ParseDescriptors for bulkusb driver testing.
svn path=/trunk/; revision=17382
This commit is contained in:
parent
6f3cd1ce3e
commit
7d093589b4
1 changed files with 66 additions and 15 deletions
|
@ -21,7 +21,7 @@
|
|||
* USBD_GetPdoRegistryParameters (implemented)
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ddk/usbdi.h>
|
||||
#ifndef PLUGPLAY_REGKEY_DRIVER
|
||||
#define PLUGPLAY_REGKEY_DRIVER 2
|
||||
|
@ -368,6 +368,31 @@ USBD_GetInterfaceLength(
|
|||
return Length;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
PUSB_COMMON_DESCRIPTOR STDCALL
|
||||
USBD_ParseDescriptors(
|
||||
PVOID DescriptorBuffer,
|
||||
ULONG TotalLength,
|
||||
PVOID StartPosition,
|
||||
LONG DescriptorType
|
||||
)
|
||||
{
|
||||
PUSB_COMMON_DESCRIPTOR PComDes = StartPosition;
|
||||
|
||||
while(PComDes)
|
||||
{
|
||||
if (PComDes >= (PUSB_COMMON_DESCRIPTOR)
|
||||
((PLONG)DescriptorBuffer + TotalLength) ) break;
|
||||
if (PComDes->bDescriptorType == DescriptorType) return PComDes;
|
||||
if (PComDes->bLength == 0) break;
|
||||
PComDes = PComDes + PComDes->bLength;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -382,7 +407,46 @@ USBD_ParseConfigurationDescriptorEx(
|
|||
LONG InterfaceProtocol
|
||||
)
|
||||
{
|
||||
return NULL;
|
||||
int x = 0;
|
||||
PUSB_INTERFACE_DESCRIPTOR UsbInterfaceDesc = StartPosition;
|
||||
|
||||
while(UsbInterfaceDesc)
|
||||
{
|
||||
UsbInterfaceDesc = (PUSB_INTERFACE_DESCRIPTOR)
|
||||
USBD_ParseDescriptors(ConfigurationDescriptor,
|
||||
ConfigurationDescriptor->wTotalLength,
|
||||
UsbInterfaceDesc,
|
||||
USB_INTERFACE_DESCRIPTOR_TYPE);
|
||||
|
||||
if (!UsbInterfaceDesc) break;
|
||||
|
||||
if(InterfaceNumber != -1)
|
||||
{
|
||||
if(InterfaceNumber != UsbInterfaceDesc->bInterfaceNumber) x = 1;
|
||||
}
|
||||
if(AlternateSetting != -1)
|
||||
{
|
||||
if(AlternateSetting != UsbInterfaceDesc->bAlternateSetting) x = 1;
|
||||
}
|
||||
if(InterfaceClass != -1)
|
||||
{
|
||||
if(InterfaceClass != UsbInterfaceDesc->bInterfaceClass) x = 1;
|
||||
}
|
||||
if(InterfaceSubClass != -1)
|
||||
{
|
||||
if(InterfaceSubClass != UsbInterfaceDesc->bInterfaceSubClass) x = 1;
|
||||
}
|
||||
if(InterfaceProtocol != -1)
|
||||
{
|
||||
if(InterfaceProtocol != UsbInterfaceDesc->bInterfaceProtocol) x = 1;
|
||||
}
|
||||
|
||||
if (!x) return UsbInterfaceDesc;
|
||||
|
||||
if (UsbInterfaceDesc->bLength == 0) break;
|
||||
UsbInterfaceDesc = UsbInterfaceDesc + UsbInterfaceDesc->bLength;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -400,19 +464,6 @@ USBD_ParseConfigurationDescriptor(
|
|||
-1, -1, -1);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
PUSB_COMMON_DESCRIPTOR STDCALL
|
||||
USBD_ParseDescriptors(
|
||||
PVOID DescriptorBuffer,
|
||||
ULONG TotalLength,
|
||||
PVOID StartPosition,
|
||||
LONG DescriptorType
|
||||
)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
|
|
Loading…
Reference in a new issue