USB Set Address / Get descriptor packet problem.

Hi. I have a problem with Set Address / Get descriptor setup packet. I am working in a Windows 7 driver for USB.

The following figure captured the USB communication under WHQL testing using USB analyzer.

The device could not recognize normal Setup token of the Set Address and the Get Descriptor after the garbage data enters continuously.

Please if anybody have information about this help me. Regards.
void usb_ep0_event(void *pCBParam, uint32_t Event, void *pArg)
{
	ADI_USB_URB *pUsbURB = (ADI_USB_URB *)pCBParam;
	struct usb *pUsb = getappinfo()->usbcomm;

	switch(pUsbURB->EpDir)
	{
	case ADI_USB_EP_DIR_SETUP:
		if(pArg != NULL)
		{
			memcpy(pUSBsetup, (usb_dev_class_setup_type *)pArg, sizeof(usb_dev_class_setup_type));
			pUsb->Ep0_Event = EVENT_STATE_SETUP;
		}
		break;

	case ADI_USB_EP_DIR_RX:
		pUsb->Ep0_Event = EVENT_STATE_ZLP;
		break;
	}
}

void usb_ep0_process(struct usb *pUsb)
{
	pUsb->Ep0_Event = EVENT_STATE_NONE;
	if(pUSBsetup->bmRequestType == 0xC0)
		dld_UsbVendorReq(pUSBsetup);
	else
		dld_UsbStandardReq(pUSBsetup);
}

void dld_UsbStandardReq(void* usbsetup)
{
	struct usb *pUsb = getappinfo()->usbcomm;
	usb_dev_class_setup_type* setup = (usb_dev_class_setup_type*)usbsetup;

	switch(setup->bRequest)
	{
	case USB_CLEAR_FEATURE:
		dld_ClearFeature(usbsetup);
		break;

	case USB_SET_FEATURE:
		dld_SetFeature(usbsetup);
		break;

	case USB_SET_ADDRESS:
		dld_SetAddress(usbsetup);
		break;

	case USB_GET_DESCRIPTOR:
		dld_GetDescriptor(usbsetup);
		break;

	case USB_SET_CONFIGURATION:
		dld_SetConfiguration(usbsetup);
		break;

	case USB_SET_INTERFACE:
		dld_SetInterface(usbsetup);
		break;

	default:
		dld_SetConfiguration(usbsetup);
		break;
	}
}

void dld_SetAddress(void *usbsetup)
{
	usb_dev_class_setup_type* setup = (usb_dev_class_setup_type*)usbsetup;

	USB_API->SetDevAddr(g_hUSBDevice, setup->wValue);

	dld_Ep0_Tx(NULL,0);
}

void dld_GetDescriptor(void *usbsetup)
{
	usb_dev_class_setup_type* setup = (usb_dev_class_setup_type*)usbsetup;

	u8 desc_cfg;
	u8 desc_str;

	u16 offset = 0;
	
	switch((setup->wValue >> 8))
	{
		case USB_DSC_DEVICE:
			if(setup->wLength >= UsbDevDesc.bLength)
			{
				memcpy(UsbDescriptBuf, (u8 *)&UsbDevDesc, UsbDevDesc.bLength);
				dld_Ep0_Tx(UsbDescriptBuf, UsbDevDesc.bLength);
			}
			else
			{
				memcpy(UsbDescriptBuf, (u8 *)&UsbDevDesc, setup->wLength);
				dld_Ep0_Tx(UsbDescriptBuf, setup->wLength);
			}
			break;

		case USB_DSC_CONFIGURATION:
			desc_cfg = (setup->wValue & 0xFF);

			if(setup->wLength >= UsbConfigDesc.config_des.wTotalLength)
			{
				memcpy(&UsbDescriptBuf, (u8 *)&UsbConfigDesc.config_des, UsbConfigDesc.config_des.bLength);
				offset += UsbConfigDesc.config_des.bLength;

				memcpy(&UsbDescriptBuf[offset], (u8 *)&UsbConfigDesc.cdc_inf_des, UsbConfigDesc.cdc_inf_des.bLength);
				offset += UsbConfigDesc.cdc_inf_des.bLength;
				memcpy(&UsbDescriptBuf[offset], (u8 *)&UsbConfigDesc.acm_ep_in_des, UsbConfigDesc.acm_ep_in_des.bLength);
				offset += UsbConfigDesc.acm_ep_in_des.bLength;
				memcpy(&UsbDescriptBuf[offset], (u8 *)&UsbConfigDesc.acm_ep_out_des, UsbConfigDesc.acm_ep_out_des.bLength);
				offset += UsbConfigDesc.acm_ep_out_des.bLength;

				dld_Ep0_Tx(UsbDescriptBuf, offset);
			}
			else
			{
				memcpy(UsbDescriptBuf, (u8 *)&UsbConfigDesc.config_des, setup->wLength);
				dld_Ep0_Tx(UsbDescriptBuf, setup->wLength);
			}
			break;

		case USB_DSC_STRING:
			desc_str = (setup->wValue & 0xFF);

			if(desc_str < USB_MAX_DESCRIPTOR_STRING_NUM)
			{
				if(setup->wLength >= UsbDevString[desc_str].bLength)
				{
					memcpy(UsbDescriptBuf, (u8 *)&UsbDevString[desc_str], UsbDevString[desc_str].bLength);
					dld_Ep0_Tx(UsbDescriptBuf, UsbDevString[desc_str].bLength);
				}
				else
				{
					memcpy(UsbDescriptBuf, (u8 *)&UsbDevString[desc_str], setup->wLength);
					dld_Ep0_Tx(UsbDescriptBuf, setup->wLength);
				}
			}
			break;

		case USB_DSC_DEVQUAL:
					if(setup->wLength >= UsbDevQualDesc.bLength)
					{
						memcpy(UsbDescriptBuf, (u8 *)&UsbDevQualDesc, UsbDevQualDesc.bLength);
						dld_Ep0_Tx(UsbDescriptBuf, UsbDevQualDesc.bLength);
					}
					else
					{
						memcpy(UsbDescriptBuf, (u8 *)&UsbDevQualDesc, setup->wLength);
						dld_Ep0_Tx(UsbDescriptBuf, setup->wLength);
					}
			break;

	    default:
	   		break;
	}
}