I call DeviceIoControl function to get tap version,but it returned error, and GetLastError return 1. this is my code: int main(int argc, char* argv[]) { HANDLE hICDriver = CreateFile("\\\\.\\{E00D9A99-2A50-47F6-9B6C-FCD17739CCE5}", GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, NULL); if (hICDriver==INVALID_HANDLE_VALUE) { printf("打开设备失败 ErrorCode=%d\n", GetLastError()); goto err; } printf("成功打开设备\n"); ULONG info[3]; DWORD len; memset(info, 0, sizeof(ULONG)*3); if (!DeviceIoControl (hICDriver, TAP_IOCTL_GET_VERSION, &info, sizeof (info), &info, sizeof (info), &len, NULL)) { printf("DeviceIoControl ErrorCode=%d\n", GetLastError()); goto err; } err: Sleep(5000); return 0; }