Цитата(aaarrr @ Jun 24 2010, 19:11)

Еще раз: какой механизм используется для "определения"? Почему его может сломать не пустой буфер UDP?
Вы имеете в виду как открывается девайс в приложении? Вот код
CODE
HDEVINFO hDevInfo;
GUID Nguid = {0xCCC207C0, 0x8CBD, 0x437A, { 0x97, 0xD1, 0xB5, 0x14, 0xF3, 0x50, 0x40, 0x40 } };
GUID *guid = &Nguid;
hDevInfo = SetupDiGetClassDevs (guid, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
PSP_DEVICE_INTERFACE_DATA devInfoData = (PSP_DEVICE_INTERFACE_DATA)malloc(sizeof(SP_DEVICE_INTERFACE_DATA));
devInfoData->cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
BOOL en = 0;
while(en == 0 ) en = SetupDiEnumDeviceInterfaces(hDevInfo, NULL, guid, 0, devInfoData);
SetupDiGetDeviceInterfaceDetail(hDevInfo, devInfoData, NULL, 0, &requiredlength, NULL);
PSP_DEVICE_INTERFACE_DETAIL_DATA DevInfoDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(requiredlength);
DevInfoDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
SetupDiGetInterfaceDeviceDetail (hDevInfo, devInfoData, DevInfoDetail, requiredlength, &requiredlength, NULL);
TCHAR devNameOut[MAX_PATH];
strcpy( devNameOut, DevInfoDetail->DevicePath );
strcat( devNameOut, _T( "\\PIPE01" ) );
TCHAR devNameIn[MAX_PATH];
strcpy( devNameIn, DevInfoDetail->DevicePath );
strcat( devNameIn, _T( "\\PIPE00" ) );
PipeOut = CreateFile(devNameOut,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
NULL,//FILE_FLAG_OVERLAPPED,
NULL);
PipeIn = CreateFile(devNameIn,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
NULL,//FILE_FLAG_OVERLAPPED,
NULL);
Цитата(aaarrr @ Jun 24 2010, 19:11)

Выполняется ли отключение pull-up резистора на D+ при перезапуске контроллера?
По команде Turn off, когда я пытаюсь сделать программный сброс? Нет, в этом случае отключение pull-up резистора не происходит.