//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1997 - 1999
//
//  File:       security.h
//
//--------------------------------------------------------------------------

#ifndef __security_h
#define __security_h


/*-----------------------------------------------------------------------------
/ CDsSecurityClassFactory
/----------------------------------------------------------------------------*/

class CDsSecurityClassFactory : public IClassFactory, CUnknown
{
public:
    // IUnkown
    STDMETHODIMP_(ULONG) AddRef();
    STDMETHODIMP_(ULONG) Release();
    STDMETHODIMP         QueryInterface(REFIID riid, LPVOID* ppvObject);

    // IClassFactory
    STDMETHODIMP CreateInstance(IUnknown* pOuter, REFIID riid, LPVOID* ppvObject);
    STDMETHODIMP LockServer(BOOL fLock);
};


/*-----------------------------------------------------------------------------
/ CDsSecurity
/----------------------------------------------------------------------------*/

class CDsSecurity : public IShellExtInit, IShellPropSheetExt, IContextMenu, CUnknown
{
private:
    LPSECURITYINFO m_pSI;

public:
    virtual ~CDsSecurity();

    // IUnknown
    STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppvObject);
    STDMETHOD_(ULONG, AddRef)();
    STDMETHOD_(ULONG, Release)();

    // IShellExtInit
    STDMETHODIMP Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hKeyID);

    // IShellPropSheetExt methods
    STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE, LPARAM);
    STDMETHODIMP ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM);

    // IContextMenu
    STDMETHODIMP QueryContextMenu(HMENU hShellMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
    STDMETHODIMP InvokeCommand( LPCMINVOKECOMMANDINFO lpcmi);
    STDMETHODIMP GetCommandString( UINT_PTR idCmd, UINT uFlags, UINT FAR* reserved, LPSTR pszName, UINT ccMax);
};


#endif  // __security_h