windows-nt/Source/XPSP1/NT/ds/security/services/ca/certmmc/misc.h
2020-09-26 16:20:57 +08:00

208 lines
5.7 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: misc.h
//
//--------------------------------------------------------------------------
#ifndef _MISC_H_
#define _MISC_H_
#define _JumpIfOutOfMemory(hr, label, pMem) \
{ \
if (NULL == (pMem)) \
{ \
(hr) = E_OUTOFMEMORY; \
_JumpError((hr), label, "Out of Memory"); \
} \
}
__inline
void FREE_DATA(void* pData)
{
if (pData)
GlobalFree(pData);
}
// count the number of bytes needed to fully store the WSZ
#define WSZ_BYTECOUNT(__z__) \
( (__z__ == NULL) ? 0 : (wcslen(__z__)+1)*sizeof(WCHAR) )
// fwds
class CertSvrCA;
class CertSvrMachine;
BOOL FixupFilterString(LPWSTR szFilter);
LPCWSTR GetNullMachineName(CString* pcstr);
BOOL FIsCurrentMachine(LPCWSTR);
STDMETHODIMP CStringLoad(CString& cstr, IStream *pStm);
STDMETHODIMP CStringSave(CString& cstr, IStream *pStm, BOOL fClearDirty);
STDMETHODIMP CStringGetSizeMax(CString& cstr, int* piSize);
STDMETHODIMP VariantLoad(VARIANT& var, IStream *pStm);
STDMETHODIMP VariantSave(VARIANT& var, IStream *pStm, BOOL fClearDirty);
STDMETHODIMP VariantGetSizeMax(VARIANT& var, int* piSize);
DWORD AllocAndReturnConfigValue(HKEY hKey, LPCWSTR szConfigEntry, PBYTE* ppbOut, DWORD* pcbOut, DWORD* pdwType);
void DisplayCertSrvErrorWithContext(HWND hwnd, DWORD dwErr, UINT iRscContext);
void DisplayCertSrvErrorWithContext(HWND hwnd, DWORD dwErr, LPCWSTR szContext);
void DisplayGenericCertSrvError(HWND hwnd, DWORD dwErr);
void DisplayGenericCertSrvError(LPCONSOLE pConsole, DWORD dwErr);
DWORD CryptAlgToStr(CString* pcstrAlgName, LPCWSTR szProv, DWORD dwProvType, DWORD dwAlg);
enum ENUM_PERIOD DurationEnumFromNonLocalizedString(LPCWSTR szPeriod);
BOOL StringFromDurationEnum(int iEnum, CString* pcstr, BOOL fLocalized);
LPCWSTR OperationToStr(int iOperation);
int StrToOperation(LPCWSTR szOperation);
// Column name localization
LPCWSTR FindUnlocalizedColName(LPCWSTR strColumn); // returns ptr to rsc
// returns localized string
BOOL MakeDisplayStrFromDBVariant(VARIANT* pvt, VARIANT* pvOut);
typedef struct _QUERY_RESTRICTION
{
_QUERY_RESTRICTION* pNext;
LPWSTR szField;
UINT iOperation;
VARIANT varValue;
friend bool operator==(
const struct _QUERY_RESTRICTION& lhs,
const struct _QUERY_RESTRICTION& rhs);
} QUERY_RESTRICTION, *PQUERY_RESTRICTION;
PQUERY_RESTRICTION NewQueryRestriction(LPCWSTR szField, UINT iOp, VARIANT* pvarValue);
void FreeQueryRestriction(PQUERY_RESTRICTION pQR);
void FreeQueryRestrictionList(PQUERY_RESTRICTION pQR);
PQUERY_RESTRICTION QueryRestrictionFound(
PQUERY_RESTRICTION pQR,
PQUERY_RESTRICTION pQRListHead);
void ListInsertAtEnd(void** ppList, void* pElt);
LPWSTR RegEnumKeyContaining(
HKEY hBaseKey,
LPCWSTR szContainsString,
DWORD* pdwIndex);
HRESULT
myGetActiveModule(
CertSvrCA *pCA,
IN BOOL fPolicyModule,
IN DWORD Index,
OPTIONAL OUT LPOLESTR *ppwszProgIdModule, // CoTaskMem*
OPTIONAL OUT CLSID *pclsidModule);
/////////////////////////////////////////
// fxns to load resources automatically
class CLocalizedResources
{
public:
CLocalizedResources();
~CLocalizedResources();
BOOL Load();
public:
BOOL m_fLoaded;
CBitmap m_bmpSvrMgrToolbar1; // Imagelist for the STOP/START toolbar
CString m_ColumnHead_Name;
CString m_ColumnHead_Size;
CString m_ColumnHead_Type;
CString m_ColumnHead_Description;
CString m_DescrStr_CA;
CString m_DescrStr_Unknown;
CString m_szFilterApplied;
CString m_szSortedAscendingTemplate;
CString m_szSortedDescendingTemplate;
CString m_szStoppedServerMsg;
CString m_szStatusBarErrorFormat;
CString m_szRevokeReason_Unspecified;
CString m_szRevokeReason_KeyCompromise;
CString m_szRevokeReason_CaCompromise;
CString m_szRevokeReason_Affiliation;
CString m_szRevokeReason_Superseded;
CString m_szRevokeReason_Cessatation;
CString m_szRevokeReason_CertHold;
CString m_szRevokeReason_RemoveFromCRL;
CString m_szPeriod_Seconds;
CString m_szPeriod_Minutes;
CString m_szPeriod_Hours;
CString m_szPeriod_Days;
CString m_szPeriod_Weeks;
CString m_szPeriod_Months;
CString m_szPeriod_Years;
CString m_szYes;
};
extern CLocalizedResources g_cResources;
BOOL OnDialogHelp(LPHELPINFO pHelpInfo, LPCTSTR szHelpFile, const DWORD rgzHelpIDs[]);
BOOL OnDialogContextHelp(HWND hWnd, LPCTSTR szHelpFile, const DWORD rgzHelpIDs[]);
HRESULT ReadOfSize(IStream* pStm, void* pbData, ULONG cbData);
HRESULT WriteOfSize(IStream* pStm, void* pbData, ULONG cbData);
HRESULT myOIDToName(
IN WCHAR const *pwszObjId,
OUT LPWSTR* pszName);
HRESULT myDumpFormattedObject(
IN WCHAR const *pszObjId,
IN BYTE const *pbObject,
IN DWORD cbObject,
OUT LPWSTR* pwszFormatted);
void InplaceStripControlChars(WCHAR* szString);
HANDLE EnablePrivileges(LPCWSTR ppcwszPrivileges[], ULONG cPrivileges);
void ReleasePrivileges(HANDLE hToken);
HRESULT IsUserDomainAdministrator(BOOL* pfIsAdministrator);
BOOL RestartService(HWND hWnd, CertSvrMachine* pMachine);
//
// defined in casec.cpp
//
extern "C"
HRESULT
CreateCASecurityInfo( CertSvrCA *pCA,
LPSECURITYINFO *ppObjSI);
_COM_SMARTPTR_TYPEDEF(ICertAdmin2, IID_ICertAdmin2);
HRESULT FindComputerObjectSid(
LPCWSTR pcwszCAComputerDNSName,
PSID &pSid);
#endif _MISC_H_