windows-nt/Source/XPSP1/NT/admin/snapin/filemgmt/filesvc.cpp
2020-09-26 16:20:57 +08:00

130 lines
3.3 KiB
C++

// FileSvc.cpp : File Service provider base class
#include "stdafx.h"
#include "safetemp.h"
#include "FileSvc.h"
#include "compdata.h" // CFileMgmtComponentData::DoPopup
#include "macros.h"
USE_HANDLE_MACROS("FILEMGMT(FileSvc.cpp)")
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
FileServiceProvider::FileServiceProvider(CFileMgmtComponentData* pFileMgmtData)
: m_pFileMgmtData( pFileMgmtData )
{
ASSERT( m_pFileMgmtData != NULL );
}
FileServiceProvider::~FileServiceProvider()
{
}
//+-------------------------------------------------------------------------
//
// Function: AddPageProc
//
// Synopsis: The IShellPropSheetExt->AddPages callback.
//
//--------------------------------------------------------------------------
BOOL CALLBACK
AddPageProc(HPROPSHEETPAGE hPage, LPARAM pCallBack)
{
HRESULT hr = ((LPPROPERTYSHEETCALLBACK)pCallBack)->AddPage(hPage);
return (hr == S_OK);
}
// Security Shell extension CLSID - {1F2E5C40-9550-11CE-99D2-00AA006E086C}
const CLSID CLSID_ShellExtSecurity =
{0x1F2E5C40, 0x9550, 0x11CE, {0x99, 0xD2, 0x0, 0xAA, 0x0, 0x6E, 0x08, 0x6C}};
HRESULT
FileServiceProvider::CreateFolderSecurityPropPage(
LPPROPERTYSHEETCALLBACK pCallBack,
LPDATAOBJECT pDataObject
)
{
//
// add the file system security page
//
CComPtr<IShellExtInit> spShlInit;
HRESULT hr = CoCreateInstance(CLSID_ShellExtSecurity,
NULL,
CLSCTX_INPROC_SERVER,
IID_IShellExtInit,
(void **)&spShlInit);
if (SUCCEEDED(hr))
{
hr = spShlInit->Initialize(NULL, pDataObject, 0);
if (SUCCEEDED(hr))
{
CComPtr<IShellPropSheetExt> spSPSE;
hr = spShlInit->QueryInterface(IID_IShellPropSheetExt, (void **)&spSPSE);
if (SUCCEEDED(hr))
hr = spSPSE->AddPages(AddPageProc, (LPARAM)pCallBack);
}
}
return hr;
}
INT FileServiceProvider::DoPopup(
INT nResourceID,
DWORD dwErrorNumber,
LPCTSTR pszInsertionString,
UINT fuStyle )
{
return m_pFileMgmtData->DoPopup( nResourceID, dwErrorNumber, pszInsertionString, fuStyle );
}
//
// These methods cover the seperate API to determine whether share type is admin specific
// By default (FPNW and SFM) have no admin specific shares.
//
DWORD FileServiceProvider::ReadShareType(
LPCTSTR /*ptchServerName*/,
LPCTSTR /*ptchShareName*/,
DWORD* pdwShareType )
{
ASSERT(pdwShareType);
*pdwShareType = 0;
return NERR_Success;
}
//
// These methods cover the seperate API to determine whether IntelliMirror
// caching is enabled. By default (FPNW and SFM) they are disabled.
//
DWORD FileServiceProvider::ReadShareFlags(
LPCTSTR /*ptchServerName*/,
LPCTSTR /*ptchShareName*/,
DWORD* /*pdwFlags*/ )
{
return NERR_InvalidAPI; // caught by CSharePageGeneralSMB::Load()
}
DWORD FileServiceProvider::WriteShareFlags(
LPCTSTR /*ptchServerName*/,
LPCTSTR /*ptchShareName*/,
DWORD /*dwFlags*/ )
{
ASSERT( FALSE ); // why was this called?
return NERR_Success;
}
BOOL FileServiceProvider::GetCachedFlag( DWORD /*dwFlags*/, DWORD /*dwFlagToCheck*/ )
{
ASSERT(FALSE);
return FALSE;
}
VOID FileServiceProvider::SetCachedFlag( DWORD* /*pdwFlags*/, DWORD /*dwNewFlag*/ )
{
ASSERT(FALSE);
}