OpenByIntf.cpp
上传用户:lyfy_2008
上传日期:2014-07-13
资源大小:3016k
文件大小:1k
源码类别:

USB编程

开发平台:

Visual C++

  1. // OpenByIntf.cpp - open device by device interface
  2. // Copyright (c) 1998 Compuware Corporation
  3. #define NOCRYPT // prevent attempt to include missing files
  4. #define _INC_EXCPT // prevent excpt.h from being included
  5. //#include <stdlib.h>
  6. #include"stdafx.h"
  7. #include <windows.h>
  8. #include <winioctl.h>
  9. #include <devintf.h> // DriverWorks
  10. #ifdef _DEBUG
  11. #undef THIS_FILE
  12. static char THIS_FILE[]=__FILE__;
  13. #define new DEBUG-NEW
  14. #endif
  15. // OpenByInterface
  16. //
  17. // Opens the nth device found with the given interface class
  18. HANDLE OpenByInterface(
  19. GUID* pClassGuid, // points to the GUID that identifies the interface class
  20. DWORD instance, // specifies which instance of the enumerated devices to open
  21. PDWORD pError // address of variable to receive error status
  22. )
  23. {
  24. HANDLE hDev;
  25. CDeviceInterfaceClass DevClass(pClassGuid, pError);
  26. if (*pError != ERROR_SUCCESS)
  27. return INVALID_HANDLE_VALUE;
  28. CDeviceInterface DevInterface(&DevClass, instance, pError);
  29. if (*pError != ERROR_SUCCESS)
  30. return INVALID_HANDLE_VALUE;
  31. hDev = CreateFile(
  32. DevInterface.DevicePath(),
  33. GENERIC_READ | GENERIC_WRITE,
  34. FILE_SHARE_READ | FILE_SHARE_WRITE,
  35. NULL,
  36. OPEN_EXISTING,
  37. FILE_ATTRIBUTE_NORMAL,
  38. NULL
  39. );
  40. if (hDev == INVALID_HANDLE_VALUE)
  41. *pError = GetLastError();
  42. return hDev;
  43. }