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