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