pciScanIoctl.h
上传用户:zhuqijet
上传日期:2007-01-04
资源大小:138k
文件大小:3k
源码类别:

驱动编程

开发平台:

Visual C++

  1. // pciScanioctl.h    Include file for Generic Port I/O Example Driver
  2. /*****************************************************************************
  3. *           Change Log
  4. *  Date     | Change
  5. *-----------+-----------------------------------------------------------------
  6. *****************************************************************************/
  7. //
  8. // Define the IOCTL codes we will use.  The IOCTL code contains a command
  9. // identifier, plus other information about the device, the type of access
  10. // with which the file must have been opened, and the type of buffering.
  11. //
  12. // 
  13. // Device type           -- in the "User Defined" range."
  14. #define PCISCAN_TYPE 42000u
  15. // The IOCTL function codes from 0x800 to 0xFFF are for customer use.
  16. #define IOCTL_PCISCAN_INITIALIZE 
  17.     CTL_CODE(PCISCAN_TYPE,  0x0B10, METHOD_BUFFERED, FILE_WRITE_DATA | FILE_READ_DATA)
  18. /****************************************************************************
  19. *                           IOCTL_PCISCAN_GET_FIRST
  20. *
  21. *-----------------------------------------------------------------------------
  22. * BOOL DeviceIoControl(h, IOCTL_PCISCAN_GET_FIRST, 
  23. *        InputBuffer, InputBufferLength,
  24. *        OutputBuffer, OutputBufferLength,
  25. *        BytesWritten, NULL);
  26. *-----------------------------------------------------------------------------
  27. * Inputs:
  28. *       InputBuffer: NULL
  29. * InputBufferLength: 0
  30. * OutputBuffer: PPCISCAN_OUTPUT
  31. * OutputBufferLength: sizeof(PPCISCAN_OUTPUT)
  32. * Return: BOOL
  33. * TRUE - a valid PCI device has been found and the PCISCAN_OUTPUT data
  34. *        is valid
  35. * FALSE - no PCI device has been found, PCISCAN_OUTPUT data is undefined
  36. * Effect: 
  37. *       The internal position pointers are set to point to the lowest-numbered
  38. * PCI bus:device:function, 0:0:0. The driver then iterates until it
  39. * either finds a valid bus:device:function code, or exhausts the 
  40. * PCI limits. 
  41. ****************************************************************************/
  42. #define IOCTL_PCISCAN_GET_FIRST 
  43.     CTL_CODE(PCISCAN_TYPE,  0x0B11, METHOD_BUFFERED, FILE_WRITE_DATA | FILE_READ_DATA)
  44. /****************************************************************************
  45. *                           IOCTL_PCISCAN_GET_NEXT
  46. *
  47. *-----------------------------------------------------------------------------
  48. * BOOL DeviceIoControl(h, IOCTL_PCISCAN_GET_NEXT, 
  49. *        InputBuffer, InputBufferLength,
  50. *        OutputBuffer, OutputBufferLength,
  51. *        BytesWritten, NULL);
  52. *-----------------------------------------------------------------------------
  53. * Inputs:
  54. *       InputBuffer: NULL
  55. * InputBufferLength: 0
  56. * OutputBuffer: PPCISCAN_OUTPUT
  57. * OutputBufferLength: sizeof(PPCISCAN_OUTPUT)
  58. * Return: BOOL
  59. * TRUE - a valid PCI device has been found and the PCISCAN_OUTPUT data
  60. *        is valid
  61. * FALSE - no PCI device has been found, PCISCAN_OUTPUT data is undefined
  62. * Effect: 
  63. *       The internal position pointers are incremented until the driver
  64. * either finds a valid bus:device:function code, or exhausts the 
  65. * PCI limits. 
  66. ****************************************************************************/
  67. #define IOCTL_PCISCAN_GET_NEXT 
  68.     CTL_CODE(PCISCAN_TYPE,  0x0B12, METHOD_BUFFERED, FILE_WRITE_DATA | FILE_READ_DATA)
  69. typedef struct _PCISCAN_OUTPUT {
  70.     PCI_SLOT_NUMBER   SlotData;   
  71.     PCI_COMMON_CONFIG PciData;   
  72.     unsigned int      BusNumber;
  73. }  PCISCAN_OUTPUT;
  74. typedef PCISCAN_OUTPUT *PPCISCAN_OUTPUT; 
  75.