Module: wine Branch: master Commit: c540c98d55d2354cd3a6c37a480c0180b9327826 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c540c98d55d2354cd3a6c37a48...
Author: André Hentschel nerv@dawncrow.de Date: Tue Aug 28 23:27:40 2012 +0200
usbd.sys: Add partial USBD_ValidateConfigurationDescriptor implementation.
---
dlls/usbd.sys/usbd.c | 20 ++++++++++++++++++++ dlls/usbd.sys/usbd.sys.spec | 2 ++ include/ddk/usbdlib.h | 1 + 3 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/dlls/usbd.sys/usbd.c b/dlls/usbd.sys/usbd.c index 80fd02e..daf49cf 100644 --- a/dlls/usbd.sys/usbd.c +++ b/dlls/usbd.sys/usbd.c @@ -218,6 +218,26 @@ PUSB_COMMON_DESCRIPTOR WINAPI USBD_ParseDescriptors( return NULL; }
+USBD_STATUS WINAPI USBD_ValidateConfigurationDescriptor( + PUSB_CONFIGURATION_DESCRIPTOR descr, + ULONG length, + USHORT level, + PUCHAR *offset, + ULONG tag ) +{ + FIXME( "(%p, %u, %u, %p, %u) partial stub!", descr, length, level, offset, tag ); + + if (offset) *offset = 0; + + if (!descr || + length < sizeof(USB_CONFIGURATION_DESCRIPTOR) || + descr->bLength < sizeof(USB_CONFIGURATION_DESCRIPTOR) || + descr->wTotalLength < descr->bNumInterfaces * sizeof(USB_CONFIGURATION_DESCRIPTOR) + ) return USBD_STATUS_ERROR; + + return USBD_STATUS_SUCCESS; +} + ULONG WINAPI USBD_GetInterfaceLength( PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor, PUCHAR BufferEnd ) diff --git a/dlls/usbd.sys/usbd.sys.spec b/dlls/usbd.sys/usbd.sys.spec index 1cb507e..15cf352 100644 --- a/dlls/usbd.sys/usbd.sys.spec +++ b/dlls/usbd.sys/usbd.sys.spec @@ -16,6 +16,7 @@ @ stub USBD_GetDeviceInformation @ stdcall USBD_GetInterfaceLength(ptr ptr) @ stub USBD_GetPdoRegistryParameter +@ stub USBD_GetRegistryKeyValue @ stub USBD_GetSuspendPowerState @ stdcall USBD_GetUSBDIVersion(ptr) @ stub USBD_InitializeDevice @@ -30,4 +31,5 @@ @ stub USBD_RemoveDevice @ stub USBD_RestoreDevice @ stub USBD_SetSuspendPowerState +@ stdcall USBD_ValidateConfigurationDescriptor(ptr long long ptr long) @ stub USBD_WaitDeviceMutex diff --git a/include/ddk/usbdlib.h b/include/ddk/usbdlib.h index 0003816..86080ce 100644 --- a/include/ddk/usbdlib.h +++ b/include/ddk/usbdlib.h @@ -31,5 +31,6 @@ ULONG WINAPI USBD_GetInterfaceLength(PUSB_INTERFACE_DESCRIPTOR,PUCHAR); VOID WINAPI USBD_GetUSBDIVersion(PUSBD_VERSION_INFORMATION); PUSB_COMMON_DESCRIPTOR WINAPI USBD_ParseDescriptors(PVOID,ULONG,PVOID,LONG); PUSB_INTERFACE_DESCRIPTOR WINAPI USBD_ParseConfigurationDescriptorEx(PUSB_CONFIGURATION_DESCRIPTOR,PVOID,LONG,LONG,LONG,LONG,LONG); +USBD_STATUS WINAPI USBD_ValidateConfigurationDescriptor(PUSB_CONFIGURATION_DESCRIPTOR,ULONG,USHORT,PUCHAR*,ULONG);
#endif