User`s manual

PICO822 Intel
®
Atom
TM
E620T/E680T All-In-One Pico-ITX Board
Digital I/O 111
}
}
predictedLength = requiredLength;
deviceInterfaceDetailData = malloc (predictedLength);
if(deviceInterfaceDetailData)
{
deviceInterfaceDetailData->cbSize =
sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
} else
{
printf("Couldn't allocate %d bytes for device interface
details.\n", (INT)predictedLength);
SetupDiDestroyDeviceInfoList (hardwareDeviceInfo);
break;
}
if (! SetupDiGetDeviceInterfaceDetail (
hardwareDeviceInfo,
&deviceInterfaceData,
deviceInterfaceDetailData,
predictedLength,
&requiredLength,
NULL))
{
printf("Error in SetupDiGetDeviceInterfaceDetail\n");
SetupDiDestroyDeviceInfoList (hardwareDeviceInfo);
free (deviceInterfaceDetailData);
break;
}
printf("%d) %s\n", ++i, deviceInterfaceDetailData->DevicePath);
strcpy_s(pDeviceName,MAX_PATH,deviceInterfaceDetailData->Device
Path);
bRet = TRUE;
break;
}
else if (ERROR_NO_MORE_ITEMS != GetLastError())
{
free (deviceInterfaceDetailData);
deviceInterfaceDetailData = NULL;
break;
}
} while (FALSE);
SetupDiDestroyDeviceInfoList (hardwareDeviceInfo);
if(!deviceInterfaceDetailData)
{
printf("No device interfaces present\n");
bRet = FALSE;
}
return bRet;
}
// Run GPIO Device Driver Check
BOOL RunGPIOSample(
__in LPCTSTR DriverName,
__in int argc,
__in_ecount(argc) char *argv[])
{
BOOL bRc = FALSE;
HANDLE hDevice;
DWORD portnum=0;
DWORD portval=0;
DWORD errNum = 0;
ioh_gpio_reqt objGpioReqtOut;
ioh_gpio_reqt objGpioReqtIn;
// DeviceIoControl parameters
LPVOID lpOutBuffer;
DWORD nOutBufferSize;
LPVOID lpInBuffer;
DWORD nInBufferSize;
DWORD dwBytesReturned;
LPOVERLAPPED lpOverlapped;