2025-04-27 07:49:33 -04:00

34 lines
980 B
C++

#ifndef VRoot_h
#define VRoot_h
// KS "Validation Root"
// Functions called to kick off the graph validation process, and provide
// the proving and validation functions for DRMK itself.
class VRoot: public IDrmAudioStream{
public:
VRoot();
DRM_STATUS initiateValidation(PFILE_OBJECT OutPinFileObject, PDEVICE_OBJECT OutPinDeviceObject, DWORD StreamId);
DRM_STATUS initiateValidation(IUnknown* OutPin, DWORD StreamId);
static NTSTATUS MyProvingFunction(PVOID AudioObject, PVOID DrmContext);
NTSTATUS provingFunction(PVOID DrmContext);
// IUnknown
STDMETHODIMP QueryInterface(REFIID, void **);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
IMP_IDrmAudioStream;
protected:
DWORD myStreamId;
// OutPin is FILE_OBJECT or IUnknown
enum OutPinType{IsUndefined, IsFileObject, IsCOM};
PFILE_OBJECT outPinFileObject;
PDEVICE_OBJECT outPinDeviceObject;
IUnknown* outPinUnk;
OutPinType outPinType;
};
#endif