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 115