Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

161 lines
5.6 KiB

4 years ago
  1. /*
  2. * Copyright (c) Microsoft Corporation, 1993. All Rights Reserved.
  3. */
  4. /*
  5. * ntddvidc.h
  6. *
  7. * 32-bit Video Capture driver
  8. *
  9. * defines interface to kernel driver to be used by user-level dll.
  10. *
  11. * include vcstruct.h before this.
  12. */
  13. #ifndef _NTDDVIDC_
  14. #define _NTDDVIDC_
  15. // Device Naming:
  16. //
  17. // a device name will be created in \Device and a symbolic link
  18. // in \DosDevices: the name will be the string DD_VIDCAP_DEVICE_NAME_U
  19. // followed by a number 0, 1.. to ensure uniqueness. There is no guarantee
  20. // that names will have consecutive numbers: if device 1 is deleted out of 3,
  21. // it would leave two names, \Device\VidCap0 and \Device\VidCap2
  22. //
  23. // In addition, each device records the name used (eg VidCap0) in the
  24. // REG_DEVNAME value of its PARMS_SUBKEY entry in the registry.
  25. #define DD_VIDCAP_DEVICE_NAME_U L"VidCap"
  26. //
  27. // name of subkey in which device parameters are stored
  28. //
  29. #define PARMS_SUBKEY L"Parameters"
  30. //
  31. // value name within PARMS_SUBKEY where the device name created is stored.
  32. // This is the DD_VIDCAP_DEVICE_NAME_U string together with the
  33. // unique number.
  34. #define REG_DEVNAME L"DeviceName"
  35. // maximum number of vidcap devices we allow
  36. #define MAX_VIDCAP_DEVICES 32
  37. // maximum length (in characters) of the device name including \device and the
  38. // number (or \dosdevices and the number) and a null
  39. #define MAX_VIDCAP_NAME_LENGTH 12+6+3+1
  40. // device type - we are a multimedia device, so for now we will be a sound device
  41. #define DD_TYPE_VIDC FILE_DEVICE_SOUND
  42. // base for IOCTL requests - just above the sound requests
  43. #define IOCTL_VIDC_BASE 0x200
  44. // Ioctl set
  45. //--- configuration ------
  46. // Sets size, format of captured data. <IN CONFIG_INFO>
  47. #define IOCTL_VIDC_CONFIG_FORMAT CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x1, METHOD_BUFFERED, FILE_ANY_ACCESS)
  48. // Set up source video (NTSC/PAL, source...) <IN CONFIG_INFO>
  49. #define IOCTL_VIDC_CONFIG_SOURCE CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x2, METHOD_BUFFERED, FILE_ANY_ACCESS)
  50. // Set up live display config. <IN CONFIG_INFO>
  51. #define IOCTL_VIDC_CONFIG_DISPLAY CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x3, METHOD_BUFFERED, FILE_ANY_ACCESS)
  52. //-- set/get overlay keying/rectangles
  53. // Get overlay mode. <OUT OVERLAY_MODE>
  54. #define IOCTL_VIDC_OVERLAY_MODE CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x4, METHOD_BUFFERED, FILE_ANY_ACCESS)
  55. //set key colour rgb <IN RGBQUAD>
  56. #define IOCTL_VIDC_SET_KEY_RGB CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x5, METHOD_BUFFERED, FILE_ANY_ACCESS)
  57. //set key colour palindx <IN ULONG palindex>
  58. #define IOCTL_VIDC_SET_KEY_PALIDX CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x6, METHOD_BUFFERED, FILE_ANY_ACCESS)
  59. //get the key colour <OUT ULONG colour>
  60. #define IOCTL_VIDC_GET_KEY_COLOUR CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x7, METHOD_BUFFERED, FILE_ANY_ACCESS)
  61. //set key rect(s) <IN OVERLAY_RECTS>
  62. #define IOCTL_VIDC_OVERLAY_RECTS CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x8, METHOD_BUFFERED, FILE_ANY_ACCESS)
  63. //set overlay offset (pan) <IN RECT>
  64. #define IOCTL_VIDC_OVERLAY_OFFSET CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x9, METHOD_BUFFERED, FILE_ANY_ACCESS)
  65. // capture and overlay enable
  66. //enable video capture no args
  67. #define IOCTL_VIDC_CAPTURE_ON CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0xa, METHOD_BUFFERED, FILE_ANY_ACCESS)
  68. //disable video capture no args
  69. #define IOCTL_VIDC_CAPTURE_OFF CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0xb, METHOD_BUFFERED, FILE_ANY_ACCESS)
  70. //overlay on no args
  71. #define IOCTL_VIDC_OVERLAY_ON CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0xc, METHOD_BUFFERED, FILE_ANY_ACCESS)
  72. //overlay off no args
  73. #define IOCTL_VIDC_OVERLAY_OFF CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0xd, METHOD_BUFFERED, FILE_ANY_ACCESS)
  74. // capture stream functions
  75. //stream init <IN ULONG microsec-per-frame>
  76. #define IOCTL_VIDC_STREAM_INIT CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0xe, METHOD_BUFFERED, FILE_ANY_ACCESS)
  77. //stream fini no args
  78. #define IOCTL_VIDC_STREAM_FINI CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0xf, METHOD_BUFFERED, FILE_ANY_ACCESS)
  79. //stream start no args
  80. #define IOCTL_VIDC_STREAM_START CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x10, METHOD_BUFFERED, FILE_ANY_ACCESS)
  81. //stream stop no args
  82. #define IOCTL_VIDC_STREAM_STOP CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x11, METHOD_BUFFERED, FILE_ANY_ACCESS)
  83. //stream reset no args
  84. #define IOCTL_VIDC_STREAM_RESET CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x12, METHOD_BUFFERED, FILE_ANY_ACCESS)
  85. //wait error (completes on overrun) <OUT ULONG count>
  86. #define IOCTL_VIDC_WAIT_ERROR CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x13, METHOD_BUFFERED, FILE_ANY_ACCESS)
  87. //addbuffer (completes when filled) <IN OUT CAPTUREBUFFER>
  88. #define IOCTL_VIDC_ADD_BUFFER CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x14, METHOD_BUFFERED, FILE_ANY_ACCESS)
  89. //get position <OUT ULONG millisecs>
  90. #define IOCTL_VIDC_GET_POSITION CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x15, METHOD_BUFFERED, FILE_ANY_ACCESS)
  91. // partial-frame capture
  92. // capture to system buffer (no data returned) <no args>
  93. #define IOCTL_VIDC_CAP_TO_SYSBUF CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x16, METHOD_BUFFERED, FILE_ANY_ACCESS)
  94. // copy part of the system buffer <IN OUT CAPTUREBUFFER>
  95. #define IOCTL_VIDC_PARTIAL_CAPTURE CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x17, METHOD_BUFFERED, FILE_ANY_ACCESS)
  96. // release system buffer <no args>
  97. #define IOCTL_VIDC_FREE_SYSBUF CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x18, METHOD_BUFFERED, FILE_ANY_ACCESS)
  98. // draw-frame: used for playback direct to overlay buffer (optional!)
  99. // place this frame data on screen <IN DRAWBUFFER>
  100. #define IOCTL_VIDC_DRAW_FRAME CTL_CODE(DD_TYPE_VIDC, IOCTL_VIDC_BASE+0x19, METHOD_BUFFERED, FILE_ANY_ACCESS)
  101. #endif // _NTDDVIDC_