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