68 lines
1.5 KiB
C++
68 lines
1.5 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1995 - 1995.
|
|
//
|
|
// File: pfolder.cxx
|
|
//
|
|
// Contents: Implementation of IPersistFolder
|
|
//
|
|
// History: 13-Dec-95 BruceFo Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#include "headers.hxx"
|
|
#pragma hdrstop
|
|
|
|
#include "guids.h"
|
|
#include "pfolder.hxx"
|
|
#include "shares.hxx"
|
|
#include "util.hxx"
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
STDMETHODIMP
|
|
CSharesPF::GetClassID(
|
|
LPCLSID lpClassID
|
|
)
|
|
{
|
|
CShares* This = IMPL(CShares,m_PersistFolder,this);
|
|
*lpClassID = CLSID_CShares;
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
STDMETHODIMP
|
|
CSharesPF::Initialize(
|
|
LPCITEMIDLIST pidl
|
|
)
|
|
{
|
|
CShares* This = IMPL(CShares,m_PersistFolder,this);
|
|
This->m_pidl = ILClone(pidl);
|
|
if (NULL == This->m_pidl)
|
|
{
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
|
|
// Determine what share info level to use, based on which level succeeds.
|
|
// NOTE: if this is being invoked remotely, we assume that IRemoteComputer
|
|
// is invoked *before* IPersistFolder.
|
|
|
|
// Try 2, then 1.
|
|
if (IsLevelOk(This->m_pszMachine, 2))
|
|
{
|
|
This->m_level = 2;
|
|
}
|
|
else if (IsLevelOk(This->m_pszMachine, 1))
|
|
{
|
|
This->m_level = 1;
|
|
}
|
|
else
|
|
{
|
|
// error: can't enumerate
|
|
return HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED);
|
|
}
|
|
|
|
return S_OK;
|
|
}
|