ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

drm_port.cpp
Go to the documentation of this file.
00001 /*
00002  * COPYRIGHT:       See COPYING in the top level directory
00003  * PROJECT:         ReactOS Kernel Streaming
00004  * FILE:            drivers/wdm/audio/backpln/portcls/drm_port.cpp
00005  * PURPOSE:         portcls drm port object
00006  * PROGRAMMER:      Johannes Anderwald
00007  */
00008 
00009 #include "private.hpp"
00010 
00011 class CDrmPort2 : public IDrmPort2
00012 {
00013 public:
00014     STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
00015 
00016     STDMETHODIMP_(ULONG) AddRef()
00017     {
00018         InterlockedIncrement(&m_Ref);
00019         return m_Ref;
00020     }
00021     STDMETHODIMP_(ULONG) Release()
00022     {
00023         InterlockedDecrement(&m_Ref);
00024 
00025         if (!m_Ref)
00026         {
00027             delete this;
00028             return 0;
00029         }
00030         return m_Ref;
00031     }
00032     IMP_IDrmPort2;
00033     CDrmPort2(IUnknown *OuterUnknown){}
00034     virtual ~CDrmPort2(){}
00035 
00036 protected:
00037     LONG m_Ref;
00038 
00039 };
00040 
00041 NTSTATUS
00042 NTAPI
00043 CDrmPort2::QueryInterface(
00044     IN  REFIID refiid,
00045     OUT PVOID* Output)
00046 {
00047     UNICODE_STRING GuidString;
00048 
00049     if (IsEqualGUIDAligned(refiid, IID_IDrmPort) ||
00050         IsEqualGUIDAligned(refiid, IID_IDrmPort2) ||
00051         IsEqualGUIDAligned(refiid, IID_IUnknown))
00052     {
00053         *Output = PVOID(PUNKNOWN(this));
00054         PUNKNOWN(*Output)->AddRef();
00055         return STATUS_SUCCESS;
00056     }
00057 
00058     if (RtlStringFromGUID(refiid, &GuidString) == STATUS_SUCCESS)
00059     {
00060         DPRINT("IDrmPort2_QueryInterface no interface!!! iface %S\n", GuidString.Buffer);
00061         RtlFreeUnicodeString(&GuidString);
00062     }
00063     return STATUS_UNSUCCESSFUL;
00064 }
00065 
00066 NTSTATUS
00067 NTAPI
00068 CDrmPort2::CreateContentMixed(
00069     IN  PULONG paContentId,
00070     IN  ULONG cContentId,
00071     OUT PULONG pMixedContentId)
00072 {
00073     PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
00074     return DrmCreateContentMixed(paContentId, cContentId, pMixedContentId);
00075 }
00076 
00077 NTSTATUS
00078 NTAPI
00079 CDrmPort2::DestroyContent(
00080     IN ULONG ContentId)
00081 {
00082     PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
00083     return DrmDestroyContent(ContentId);
00084 }
00085 
00086 NTSTATUS
00087 NTAPI
00088 CDrmPort2::ForwardContentToFileObject(
00089     IN ULONG ContentId,
00090     IN PFILE_OBJECT FileObject)
00091 {
00092     return DrmForwardContentToFileObject(ContentId, FileObject);
00093 }
00094 
00095 NTSTATUS
00096 NTAPI
00097 CDrmPort2::ForwardContentToInterface(
00098     IN ULONG ContentId,
00099     IN PUNKNOWN pUnknown,
00100     IN ULONG NumMethods)
00101 {
00102     PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
00103     return DrmForwardContentToInterface(ContentId, pUnknown, NumMethods);
00104 }
00105 
00106 NTSTATUS
00107 NTAPI
00108 CDrmPort2::GetContentRights(
00109     IN ULONG ContentId,
00110     OUT PDRMRIGHTS  DrmRights)
00111 {
00112     PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
00113     return DrmGetContentRights(ContentId, DrmRights);
00114 }
00115 
00116 NTSTATUS
00117 NTAPI
00118 CDrmPort2::AddContentHandlers(
00119     IN ULONG ContentId,
00120     IN PVOID * paHandlers,
00121     IN ULONG NumHandlers)
00122 {
00123     PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
00124     return DrmAddContentHandlers(ContentId, paHandlers, NumHandlers);
00125 }
00126 
00127 NTSTATUS
00128 NTAPI
00129 CDrmPort2::ForwardContentToDeviceObject(
00130     IN ULONG ContentId,
00131     IN PVOID Reserved,
00132     IN PCDRMFORWARD DrmForward)
00133 {
00134     PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
00135     return DrmForwardContentToDeviceObject(ContentId, Reserved, DrmForward);
00136 }
00137 
00138 NTSTATUS
00139 NewIDrmPort(
00140     OUT PDRMPORT2 *OutPort)
00141 {
00142     CDrmPort2 * This = new(NonPagedPool, TAG_PORTCLASS)CDrmPort2(NULL);
00143     if (!This)
00144         return STATUS_INSUFFICIENT_RESOURCES;
00145 
00146     This->AddRef();
00147 
00148     *OutPort = (PDRMPORT2)This;
00149     return STATUS_SUCCESS;
00150 }
00151 
00152 

Generated on Sat May 26 2012 04:27:07 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.