drmk.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /*
  2. ReactOS Kernel Streaming
  3. Digital Rights Management
  4. Author: Andrew Greenwood
  5. */
  6. #ifndef DRMK_H
  7. #define DRMK_H
  8. typedef struct {
  9. DWORD Flags;
  10. PDEVICE_OBJECT DeviceObject;
  11. PFILE_OBJECT FileObject;
  12. PVOID Context;
  13. } DRMFORWARD, *PDRMFORWARD, *PCDRMFORWARD;
  14. typedef struct {
  15. BOOL CopyProtect;
  16. ULONG Reserved;
  17. BOOL DigitalOutputDisable;
  18. } DRMRIGHTS, *PDRMRIGHTS;
  19. typedef const DRMRIGHTS *PCDRMRIGHTS;
  20. /* ===============================================================
  21. Digital Rights Management Functions
  22. TODO: Check calling convention
  23. */
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. NTSTATUS
  28. NTAPI
  29. DrmAddContentHandlers(
  30. IN ULONG ContentId,
  31. IN PVOID *paHandlers,
  32. IN ULONG NumHandlers);
  33. NTSTATUS
  34. NTAPI
  35. DrmCreateContentMixed(
  36. IN PULONG paContentId,
  37. IN ULONG cContentId,
  38. OUT PULONG pMixedContentId);
  39. NTSTATUS
  40. NTAPI
  41. DrmDestroyContent(
  42. IN ULONG ContentId);
  43. NTSTATUS
  44. NTAPI
  45. DrmForwardContentToDeviceObject(
  46. IN ULONG ContentId,
  47. IN PVOID Reserved,
  48. IN PCDRMFORWARD DrmForward);
  49. NTSTATUS
  50. NTAPI
  51. DrmForwardContentToFileObject(
  52. IN ULONG ContentId,
  53. IN PFILE_OBJECT FileObject);
  54. NTSTATUS
  55. NTAPI
  56. DrmForwardContentToInterface(
  57. IN ULONG ContentId,
  58. IN PUNKNOWN pUnknown,
  59. IN ULONG NumMethods);
  60. NTSTATUS
  61. NTAPI
  62. DrmGetContentRights(
  63. IN ULONG ContentId,
  64. OUT PDRMRIGHTS DrmRights);
  65. #ifdef __cplusplus
  66. }
  67. #endif
  68. DEFINE_GUID(IID_IDrmAudioStream,
  69. 0x1915c967, 0x3299, 0x48cb, 0xa3, 0xe4, 0x69, 0xfd, 0x1d, 0x1b, 0x30, 0x6e);
  70. #undef INTERFACE
  71. #define INTERFACE IDrmAudioStream
  72. DECLARE_INTERFACE_(IDrmAudioStream, IUnknown)
  73. {
  74. STDMETHOD_(NTSTATUS, QueryInterface)(THIS_
  75. REFIID InterfaceId,
  76. PVOID* Interface
  77. ) PURE;
  78. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  79. STDMETHOD_(ULONG,Release)(THIS) PURE;
  80. STDMETHOD_(NTSTATUS,SetContentId)(THIS_
  81. IN ULONG ContentId,
  82. IN PCDRMRIGHTS DrmRights) PURE;
  83. };
  84. typedef IDrmAudioStream *PDRMAUDIOSTREAM;
  85. #define IMP_IDrmAudioStream \
  86. STDMETHODIMP_(NTSTATUS) SetContentId \
  87. ( IN ULONG ContentId, \
  88. IN PCDRMRIGHTS DrmRights \
  89. );
  90. #endif /* DRMK_H */