Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
103 lines
2.5 KiB
C++
103 lines
2.5 KiB
C++
//------------------------------------------------------------------------------
|
|
// File: KeyProvider.cpp
|
|
//
|
|
// Desc: DirectShow sample code - provides a class to unkey Windows Media
|
|
// for use with ASF, WMA, WMV media files.
|
|
//
|
|
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------------------------
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include <streams.h>
|
|
#include <atlbase.h>
|
|
#include <atlimpl.cpp>
|
|
#include <stdio.h>
|
|
|
|
#include <dshowasf.h>
|
|
#include "keyprovider.h"
|
|
|
|
|
|
//
|
|
// Build warning to remind developers of the dependency on the
|
|
// Windows Media Format SDK libraries, which do not ship with
|
|
// the DirectX SDK.
|
|
//
|
|
#pragma message("NOTE: To link and run this sample, you must install the Windows Media Format SDK.")
|
|
#pragma message("After signing a license agreement with Microsoft, you will receive a")
|
|
#pragma message("unique version of WMStub.LIB, which should be added to this VC++ project.")
|
|
#pragma message("Without this library, you will receive linker errors for the following:")
|
|
#pragma message(" WMCreateCertificate")
|
|
#pragma message("You must also add WMVCore.LIB to the linker settings to resolve the following:")
|
|
#pragma message(" WMCreateProfileManager")
|
|
|
|
|
|
CKeyProvider::CKeyProvider() : m_cRef(0)
|
|
{
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
ULONG CKeyProvider::AddRef()
|
|
{
|
|
return ++m_cRef;
|
|
}
|
|
|
|
ULONG CKeyProvider::Release()
|
|
{
|
|
ASSERT(m_cRef > 0);
|
|
|
|
m_cRef--;
|
|
|
|
if(m_cRef == 0)
|
|
{
|
|
delete this;
|
|
|
|
// don't return m_cRef, because the object doesn't exist anymore
|
|
return((ULONG) 0);
|
|
}
|
|
|
|
return(m_cRef);
|
|
}
|
|
|
|
//
|
|
// QueryInterface
|
|
//
|
|
// We only support IUnknown and IServiceProvider
|
|
//
|
|
HRESULT CKeyProvider::QueryInterface(REFIID riid, void ** ppv)
|
|
{
|
|
if(riid == IID_IServiceProvider || riid == IID_IUnknown)
|
|
{
|
|
*ppv = (void *) static_cast<IServiceProvider *>(this);
|
|
AddRef();
|
|
return NOERROR;
|
|
}
|
|
|
|
return E_NOINTERFACE;
|
|
}
|
|
|
|
STDMETHODIMP CKeyProvider::QueryService(REFIID siid, REFIID riid, void **ppv)
|
|
{
|
|
if(siid == __uuidof(IWMReader) && riid == IID_IUnknown)
|
|
{
|
|
IUnknown *punkCert;
|
|
|
|
HRESULT hr = WMCreateCertificate(&punkCert);
|
|
|
|
if(SUCCEEDED(hr))
|
|
*ppv = (void *) punkCert;
|
|
else
|
|
printf("CKeyProvider::QueryService failed to create certificate! hr=0x%x\n", hr);
|
|
|
|
return hr;
|
|
}
|
|
|
|
return E_NOINTERFACE;
|
|
}
|
|
|