64,642
社区成员
发帖
与我相关
我的任务
分享
#include <ObjBase.h>
#include <initguid.h>
DEFINE_GUID(HidGuid, 0xf18a0e88,0xc30c,0x11d0,0x88,0x15,0x00,0xa0,0xc9,0x06,0xbe,0xd8);
void main(int argc, char* argv[])
{
printf("Hello World!\n");
char MyDevPathName[1024]={0};
HDEVINFO hDevInfoSet;
DWORD MemberIndex = 0;
BOOL Result;
SP_DEVICE_INTERFACE_DATA DevInterfaceData;
DWORD RequiredSize;
PSP_DEVICE_INTERFACE_DETAIL_DATA pDevDetailData;
HANDLE hDevHandle;
HANDLE hReadHandle = INVALID_HANDLE_VALUE;
HANDLE hWriteHandle = INVALID_HANDLE_VALUE;
HIDD_ATTRIBUTES DevAttributes;
DevInterfaceData.cbSize = sizeof(DevInterfaceData);
DevAttributes.Size = sizeof(DevAttributes);
hDevInfoSet = SetupDiGetClassDevs(&HidGuid, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
while (1)
{
Result = SetupDiEnumDeviceInterfaces(hDevInfoSet, NULL, &HidGuid, MemberIndex, &DevInterfaceData);
if (!Result)
break;
MemberIndex++;
Result = SetupDiGetDeviceInterfaceDetail(hDevInfoSet, &DevInterfaceData, NULL, NULL, &RequiredSize, NULL);
pDevDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(RequiredSize);
if (pDevDetailData == NULL)
{
SetupDiDestroyDeviceInfoList(hDevInfoSet);
return;
}
pDevDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
SP_DEVINFO_DATA did = {sizeof(SP_DEVINFO_DATA)};
Result = SetupDiGetDeviceInterfaceDetail(hDevInfoSet, &DevInterfaceData, pDevDetailData, RequiredSize, NULL, &did);
strcpy(MyDevPathName,pDevDetailData->DevicePath);
if (!strstr(MyDevPathName,"3ab45e4d"))
{
continue;
}
TCHAR fname[256];
if(!SetupDiGetDeviceRegistryProperty(hDevInfoSet,&did,SPDRP_FRIENDLYNAME,NULL,(PBYTE) fname,sizeof(fname),NULL)
&& !SetupDiGetDeviceRegistryProperty(hDevInfoSet,&did,SPDRP_DEVICEDESC,NULL,(PBYTE) fname,sizeof(fname),NULL))
strcpy(fname,pDevDetailData->DevicePath);
if(!SetupDiGetDeviceRegistryProperty(hDevInfoSet,&did,SPDRP_PHYSICAL_DEVICE_OBJECT_NAME,NULL,(PBYTE) fname,sizeof(fname),NULL)
&& !SetupDiGetDeviceRegistryProperty(hDevInfoSet,&did,SPDRP_DEVICEDESC,NULL,(PBYTE) fname,sizeof(fname),NULL))
strcpy(fname,pDevDetailData->DevicePath);
free(pDevDetailData);
if (Result == FALSE)
continue;
hDevHandle = CreateFile(MyDevPathName, NULL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDevHandle != INVALID_HANDLE_VALUE)
{
strcat(MyDevPathName,"\\PIPE02");
hWriteHandle = CreateFile(MyDevPathName, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if (hWriteHandle != INVALID_HANDLE_VALUE)
{
BOOL PortReadyWrite = true;
unsigned char check_link[] = "HELLOWORLD";
BOOL result;
OVERLAPPED overlapped;
DWORD number;
overlapped.Offset = 0;
overlapped.OffsetHigh = 0;
result = WriteFile(hWriteHandle, check_link, sizeof(check_link), &number, &overlapped);
DWORD dwError = GetLastError();
}
}
}
SetupDiDestroyDeviceInfoList(hDevInfoSet);
return;
}