diff --git a/dlls/usbd.sys/usbd.c b/dlls/usbd.sys/usbd.c index 80fd02e0868..daf49cfe72c 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 1cb507e9a07..15cf3528a8d 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 0003816edae..86080ce95bb 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