home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1999 September
/
CHIPCD_9_99.iso
/
software
/
uaktualnienia
/
OptionPackPL
/
iis4_07.cab
/
context.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-04-27
|
2KB
|
109 lines
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name :
context.h
Abstract:
A class to retrieve and release ASP intrinsics
Author:
Neil Allain ( a-neilal ) August-1997
Revision History:
--*/
#include "stdafx.h"
#include <asptlb.h>
#include "context.h"
//---------------------------------------------------------------------------
// GetServerObject
//
// Get an instrinic object from the current Object context
//---------------------------------------------------------------------------
HRESULT
CContext::GetServerObject(
IGetContextProperties* pProps,
BSTR bstrObjName,
const IID& iid,
void** ppObj
)
{
HRESULT rc = E_FAIL;
_ASSERT( pProps );
_ASSERT( bstrObjName );
_ASSERT( ppObj );
if ( pProps && bstrObjName && ppObj )
{
*ppObj = NULL;
CComVariant vt;
if ( !FAILED( pProps->GetProperty( bstrObjName, &vt ) ) )
{
if ( V_VT(&vt) == VT_DISPATCH )
{
IDispatch* pDispatch = V_DISPATCH(&vt);
if ( pDispatch )
{
rc = pDispatch->QueryInterface( iid, ppObj );
}
}
}
}
return rc;
}
HRESULT
CContext::Init(
DWORD dwFlags // which instrinsics to initialize
)
{
HRESULT rc = E_FAIL;
CComPtr<IObjectContext> pObjContext;
rc = ::GetObjectContext( &pObjContext );
if ( !FAILED( rc ) )
{
CComPtr<IGetContextProperties> pProps;
rc = pObjContext->QueryInterface( IID_IGetContextProperties, (void**)&pProps );
if ( !FAILED( rc ) )
{
CComBSTR bstrObj;
if ( dwFlags & get_Request )
{
bstrObj = "Request";
rc = GetServerObject( pProps, bstrObj, IID_IRequest, (void**)&m_piRequest );
}
if ( !FAILED(rc) && ( dwFlags & get_Response ) )
{
bstrObj = "Response";
rc = GetServerObject( pProps, bstrObj, IID_IResponse, (void**)&m_piResponse );
}
if ( !FAILED(rc) && ( dwFlags & get_Session ) )
{
bstrObj = "Session";
rc = GetServerObject( pProps, bstrObj, IID_ISessionObject, (void**)&m_piSession );
}
if ( !FAILED(rc) && ( dwFlags & get_Server ) )
{
bstrObj = "Server";
rc = GetServerObject( pProps, bstrObj, IID_IServer, (void**)&m_piServer );
}
if ( !FAILED(rc) && ( dwFlags & get_Application ) )
{
bstrObj = "Application";
rc = GetServerObject( pProps, bstrObj, IID_IApplicationObject, (void**)&m_piApplication );
}
}
}
return rc;
}