2 ReactOS Kernel Streaming
3 Digital Rights Management
5 Author: Andrew Greenwood
13 PDEVICE_OBJECT DeviceObject
;
14 PFILE_OBJECT FileObject
;
16 } DRMFORWARD
, *PDRMFORWARD
, *PCDRMFORWARD
;
21 BOOL DigitalOutputDisable
;
22 } DRMRIGHTS
, *PDRMRIGHTS
;
24 typedef const DRMRIGHTS
*PCDRMRIGHTS
;
26 /* ===============================================================
27 Digital Rights Management Functions
28 TODO: Check calling convention
35 _IRQL_requires_max_(PASSIVE_LEVEL
)
38 DrmAddContentHandlers(
40 _In_reads_(NumHandlers
) PVOID
*paHandlers
,
41 _In_ ULONG NumHandlers
);
43 _IRQL_requires_max_(PASSIVE_LEVEL
)
46 DrmCreateContentMixed(
47 _In_ PULONG paContentId
,
48 _In_ ULONG cContentId
,
49 _Out_ PULONG pMixedContentId
);
51 _IRQL_requires_max_(PASSIVE_LEVEL
)
55 _In_ ULONG ContentId
);
59 DrmForwardContentToDeviceObject(
61 _In_opt_ PVOID Reserved
,
62 _In_ PCDRMFORWARD DrmForward
);
64 _IRQL_requires_max_(PASSIVE_LEVEL
)
67 DrmForwardContentToFileObject(
69 _In_ PFILE_OBJECT FileObject
);
71 _IRQL_requires_max_(PASSIVE_LEVEL
)
74 DrmForwardContentToInterface(
76 _In_ PUNKNOWN pUnknown
,
77 _In_ ULONG NumMethods
);
79 _IRQL_requires_max_(PASSIVE_LEVEL
)
84 _Out_ PDRMRIGHTS DrmRights
);
90 DEFINE_GUID(IID_IDrmAudioStream
,
91 0x1915c967, 0x3299, 0x48cb, 0xa3, 0xe4, 0x69, 0xfd, 0x1d, 0x1b, 0x30, 0x6e);
94 #define INTERFACE IDrmAudioStream
96 DECLARE_INTERFACE_(IDrmAudioStream
, IUnknown
) {
97 STDMETHOD_(NTSTATUS
, QueryInterface
)(THIS_
98 _In_ REFIID InterfaceId
,
99 _Out_ PVOID
* Interface
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
109 typedef IDrmAudioStream
*PDRMAUDIOSTREAM
;
111 #define IMP_IDrmAudioStream \
112 STDMETHODIMP_(NTSTATUS) SetContentId( \
113 _In_ ULONG ContentId, \
114 _In_ PCDRMRIGHTS DrmRights);