Я пытаюсь разработать API для определения, подключено ли USB-устройство к моему USB-порту.Я использую MAX3420e в качестве USB-устройства, которое управляется через MSP430 uC.Я почти ничего не знаю о VC ++, и я читал USB complete, в котором упоминается пример кода о том, как обнаружить USB-устройство и связанные с ним функции ... Я написал небольшой код, который будет искать PID иVID подключенных USB-устройств ... однако я получаю следующую ошибку:
ошибка LNK2019: неразрешенный внешний символ "bool __cdecl HidD_GetAttributes (void *, struct _HIDD_ATTRIBUTES *)" (? HidD_GetAttributes @@AA_NUTAID @@AA_TRBID @@@ Z) ссылка на функцию _wmain
Может кто-нибудь, пожалуйста, дайте мне знать, где я буду не так ??спасибо ...
// usb-complete-3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "winusb.h"
#include "Usb100.h"
#include "Setupapi.h"
HANDLE hDevInfo;
GUID HidGuid;
SP_DEVICE_INTERFACE_DATA devInfoData;
int MemberIndex;
LONG Result;
//SP_DEVICE_INTERFACE_DATA devInfoData;
HANDLE DeviceHandle;
ULONG Length;
ULONG Required;
PSP_DEVICE_INTERFACE_DETAIL_DATA detailData;
typedef struct _HIDD_ATTRIBUTES {
ULONG Size;
USHORT VendorID;
USHORT ProductID;
USHORT VersionNumber; }
HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES;
void HidD_GetHidGuid(OUT LPGUID HidGuid )
{};
void *SetupDiGetClassDevs(
IN LPGUID ClassGuid, OPTIONAL
IN PCTSTR Enumerator, OPTIONAL
IN HWND hwndParent, OPTIONAL
IN DWORD Flags){return (0);}
void *SetupDiEnumDeviceInterfaces(
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
IN LPGUID InterfaceClassGuid,
IN DWORD MemberIndex,
OUT PSP_DEVICE_INTERFACE_DATA
DeviceInterfaceData ){return (0);}
bool
HidD_GetAttributes(IN HANDLE HidDeviceObject,OUT PHIDD_ATTRIBUTES Attributes) ;
WINSETUPAPI
BOOL
WINAPI
SetupDiGetDeviceInterfaceDetail(
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
OUT PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData, OPTIONAL
IN DWORD DeviceInterfaceDetailDataSize,
OUT PDWORD RequiredSize, OPTIONAL
OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
);
int _tmain(int argc, _TCHAR* argv[])
{
while(1)
{
HIDD_ATTRIBUTES Attributes;
HidD_GetHidGuid(&HidGuid);
hDevInfo=SetupDiGetClassDevs (&HidGuid,NULL, NULL,DIGCF_PRESENT|DIGCF_INTERFACEDEVICE); //get the device information
devInfoData.cbSize = sizeof(devInfoData);
SetupDiEnumDeviceInterfaces(hDevInfo,0,&HidGuid,MemberIndex,&devInfoData); // check for the enumerated devices
// The call will return with a "buffer too small" error which can be ignored.
Result = SetupDiGetDeviceInterfaceDetail(hDevInfo,&devInfoData,NULL,0,&Length,NULL);// Allocate memory for the hDevInfo structure, using the returned Length.
detailData =(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(Length);
// Set cbSize in the detailData structure.
detailData -> cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);// Call the function again, this time passing it the returned buffer size.
Result = SetupDiGetDeviceInterfaceDetail(hDevInfo,&devInfoData,detailData,Length,&Required, NULL);
// Set the Size member to the number of bytes in the structure.
Attributes.Size = sizeof (Attributes) ;
HidD_GetAttributes(DeviceHandle,&Attributes); // get the PID and VID of the devices connected
}
return 0;
}