windows-nt/Source/XPSP1/NT/base/fs/utils/sigverif/sigtab/sigtab.h
2020-09-26 16:20:57 +08:00

127 lines
4.3 KiB
C++

//---------------------------------------------------------------------------
//
// File: sigtab.h
//
// General definition of OLE Entry points, CClassFactory and CPropSheetExt
//
// Common Code for all display property sheet extension
//
// Copyright (c) Microsoft Corp. 1992-1998 All Rights Reserved
//
//---------------------------------------------------------------------------
#include <windows.h>
#include <windowsx.h>
#include <shlobj.h>
#include <shellapi.h>
#include <initguid.h>
#include <ole2.h>
#include <regstr.h>
#include "resource.h"
#define IDC_STATIC (-1)
/*
For driver signing, there are actually 3 sources of policy:
1. HKLM\Software\Microsoft\Driver Signing : Policy : REG_BINARY (REG_DWORD also supported)
This is a Windows 98-compatible value that specifies the default
behavior which applies to all users of the machine.
2. HKCU\Software\Microsoft\Driver Signing : Policy : REG_DWORD
This specifies the user's preference for what behavior to employ
upon verification failure.
3. HKCU\Software\Policies\Microsoft\Windows NT\Driver Signing : BehaviorOnFailedVerify : REG_DWORD
This specifies the administrator-mandated policy on what behavior
to employ upon verification failure. This policy, if specified,
overrides the user's preference.
The algorithm for deciding on the behavior to employ is as follows:
if (3) is specified {
policy = (3)
} else {
policy = (2)
}
policy = MAX(policy, (1))
Value indicating the policy in effect. May be one of the following three values:
DRIVERSIGN_NONE - silently succeed installation of unsigned/
incorrectly-signed files. A PSS log entry will
be generated, however (as it will for all 3 types)
DRIVERSIGN_WARNING - warn the user, but let them choose whether or not
they still want to install the problematic file
DRIVERSIGN_BLOCKING - do not allow the file to be installed
*/
#define SIGTAB_REG_KEY TEXT("Software\\Microsoft\\Driver Signing")
#define SIGTAB_REG_VALUE TEXT("Policy")
//
// Context-Sensitive Help/Identifiers specific to SigVerif
//
#define SIGTAB_HELPFILE TEXT("SYSDM.HLP")
#define IDH_CODESIGN_IGNORE 11020
#define IDH_CODESIGN_WARN 11021
#define IDH_CODESIGN_BLOCK 11022
#define IDH_CODESIGN_APPLY 11023
INT_PTR CALLBACK SigTab_DlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK SigTab_PS_DlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
extern "C" {
VOID
pSetupGetRealSystemTime(
OUT LPSYSTEMTIME RealSystemTime
);
}
//Type for an object-destroyed callback
typedef void (FAR PASCAL *LPFNDESTROYED)(void);
class CClassFactory : public IClassFactory
{
protected:
ULONG m_cRef;
public:
CClassFactory();
~CClassFactory();
//IUnknown members
STDMETHODIMP QueryInterface( REFIID, LPVOID* );
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
//IClassFactory members
STDMETHODIMP CreateInstance( LPUNKNOWN, REFIID, LPVOID* );
STDMETHODIMP LockServer( BOOL );
};
class CPropSheetExt : public IShellPropSheetExt, IShellExtInit
{
private:
ULONG m_cRef;
LPUNKNOWN m_pUnkOuter; //Controlling unknown
LPFNDESTROYED m_pfnDestroy; //Function closure call
public:
CPropSheetExt( LPUNKNOWN pUnkOuter, LPFNDESTROYED pfnDestroy );
~CPropSheetExt(void);
// IUnknown members
STDMETHODIMP QueryInterface(REFIID, LPVOID*);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// IShellExtInit methods
STDMETHODIMP Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj,
HKEY hKeyID);
//IShellPropSheetExt methods ***
STDMETHODIMP AddPages( LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam );
STDMETHODIMP ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith,
LPARAM lParam);
};