mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
3.8 KiB
191 lines
3.8 KiB
#ifndef _DRMK_H_
|
|
#define _DRMK_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
|
|
typedef struct tagDRMRIGHTS {
|
|
BOOL CopyProtect;
|
|
ULONG Reserved;
|
|
BOOL DigitalOutputDisable;
|
|
} DRMRIGHTS , *PDRMRIGHTS;
|
|
typedef const DRMRIGHTS *PCDRMRIGHTS;
|
|
|
|
#define DEFINE_DRMRIGHTS_DEFAULT(DrmRights) const DRMRIGHTS DrmRights = {FALSE, 0, FALSE}
|
|
|
|
|
|
// {1915C967-3299-48cb-A3E4-69FD1D1B306E}
|
|
DEFINE_GUID(IID_IDrmAudioStream,
|
|
0x1915c967, 0x3299, 0x48cb, 0xa3, 0xe4, 0x69, 0xfd, 0x1d, 0x1b, 0x30, 0x6e);
|
|
|
|
DECLARE_INTERFACE_(IDrmAudioStream, IUnknown)
|
|
{
|
|
// IUnknown methods
|
|
STDMETHOD_(NTSTATUS, QueryInterface)(THIS_
|
|
REFIID InterfaceId,
|
|
PVOID* Interface
|
|
) PURE;
|
|
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
// IDrmAudioStream methods
|
|
STDMETHOD_(NTSTATUS,SetContentId)(THIS_
|
|
IN ULONG ContentId,
|
|
IN PCDRMRIGHTS DrmRights
|
|
) PURE;
|
|
};
|
|
|
|
typedef IDrmAudioStream *PDRMAUDIOSTREAM;
|
|
|
|
#define IMP_IDrmAudioStream\
|
|
STDMETHODIMP_(NTSTATUS) SetContentId\
|
|
( IN ULONG ContentId,\
|
|
IN PCDRMRIGHTS DrmRights\
|
|
);
|
|
|
|
typedef struct tagDRMFORWARD {
|
|
DWORD Flags;
|
|
PDEVICE_OBJECT DeviceObject;
|
|
PFILE_OBJECT FileObject;
|
|
PVOID Context;
|
|
} DRMFORWARD, *PDRMFORWARD;
|
|
typedef const DRMFORWARD *PCDRMFORWARD;
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
DrmAddContentHandlers(
|
|
IN ULONG ContentId,
|
|
IN PVOID* paHandlers,
|
|
IN ULONG NumHandlers
|
|
);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(NTAPI *PFNDRMADDCONTENTHANDLERS)(
|
|
IN ULONG ContentId,
|
|
IN PVOID* paHandlers,
|
|
IN ULONG NumHandlers
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
DrmCreateContentMixed(
|
|
IN PULONG paContentId,
|
|
IN ULONG cContentId,
|
|
OUT PULONG pMixedContentId
|
|
);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(NTAPI *PFNDRMCREATECONTENTMIXED)(
|
|
IN PULONG paContentId,
|
|
IN ULONG cContentId,
|
|
OUT PULONG pMixedContentId
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
DrmDestroyContent(
|
|
IN ULONG ContentId
|
|
);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(NTAPI *PFNDRMDESTROYCONTENT)(
|
|
IN ULONG ContentId
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
DrmForwardContentToDeviceObject(
|
|
IN ULONG ContentId,
|
|
IN PVOID Reserved,
|
|
IN PCDRMFORWARD DrmForward
|
|
);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(NTAPI *PFNDRMFORWARDCONTENTTODEVICEOBJECT)(
|
|
IN ULONG ContentId,
|
|
IN PVOID Reserved,
|
|
IN PCDRMFORWARD DrmForward
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
DrmForwardContentToFileObject(
|
|
IN ULONG ContentId,
|
|
IN PFILE_OBJECT FileObject
|
|
);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(NTAPI *PFNDRMFORWARDCONTENTTOFILEOBJECT)(
|
|
IN ULONG ContentId,
|
|
IN PFILE_OBJECT FileObject
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
DrmForwardContentToInterface(
|
|
ULONG ContentId,
|
|
PUNKNOWN pUnknown,
|
|
ULONG NumMethods);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(NTAPI *PFNDRMFORWARDCONTENTTOINTERFACE)(
|
|
ULONG ContentId,
|
|
PUNKNOWN pUnknown,
|
|
ULONG NumMethods);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
DrmGetContentRights(
|
|
IN ULONG ContentId,
|
|
OUT PDRMRIGHTS DrmRights
|
|
);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(NTAPI *PFNDRMGETCONTENTRIGHTS)(
|
|
IN ULONG ContentId,
|
|
OUT PDRMRIGHTS DrmRights
|
|
);
|
|
|
|
|
|
//
|
|
// Structures for use with KSPROPERY_DRMAUDIOSTREAM_CONTENTID
|
|
//
|
|
|
|
typedef struct {
|
|
ULONG ContentId;
|
|
DRMRIGHTS DrmRights;
|
|
} KSDRMAUDIOSTREAM_CONTENTID, *PKSDRMAUDIOSTREAM_CONTENTID;
|
|
|
|
typedef struct {
|
|
KSPROPERTY Property;
|
|
PVOID Context;
|
|
// DRM API callback functions
|
|
PFNDRMADDCONTENTHANDLERS DrmAddContentHandlers;
|
|
PFNDRMCREATECONTENTMIXED DrmCreateContentMixed;
|
|
PFNDRMDESTROYCONTENT DrmDestroyContent;
|
|
PFNDRMFORWARDCONTENTTODEVICEOBJECT DrmForwardContentToDeviceObject;
|
|
PFNDRMFORWARDCONTENTTOFILEOBJECT DrmForwardContentToFileObject;
|
|
PFNDRMFORWARDCONTENTTOINTERFACE DrmForwardContentToInterface;
|
|
PFNDRMGETCONTENTRIGHTS DrmGetContentRights;
|
|
} KSP_DRMAUDIOSTREAM_CONTENTID, *PKSP_DRMAUDIOSTREAM_CONTENTID;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|