windows-nt/Source/XPSP1/NT/shell/ext/occache/general.h
2020-09-26 16:20:57 +08:00

139 lines
4.1 KiB
C

#ifndef __GENERAL__
#define __GENERAL__
#include "resource.h"
#include "init.h"
#include <cleanoc.h>
#include <wininet.h>
#define VERSION_MAXSIZE 50
#define TIMESTAMP_MAXSIZE 64
#define MESSAGE_MAXSIZE 200
#define CONTROLNAME_MAXSIZE 200
#define MAX_KILOBYTE_ABBREV_LEN 16
// Needed for FindFirstControl/FindNextControl
#define MAX_CTRL_NAME_SIZE 2048
#define MAX_DIST_UNIT_NAME_LEN MAX_PATH
#define MAX_CLIENT_LEN 1024
#define MAX_REGENTRY_SIZE 1024
#define MAX_CLSID_LEN 40
// conlumn identifiers
#define NUM_COLUMNS 6
enum {
SI_CONTROL = 0, // column
SI_STATUS, // column
SI_TOTALSIZE, // column
SI_CREATION, // column
SI_LASTACCESS, // column
SI_VERSION, // column
SI_LOCATION,
SI_CLSID,
SI_TYPELIBID,
SI_CODEBASE
};
// control status flags moved to cleanoc.h ( in iedev\inc )
// struct containing info about a control
struct tagDEPENDENTFILEINFO
{
TCHAR szFile[MAX_PATH];
DWORD dwSize;
};
typedef tagDEPENDENTFILEINFO DEPENDENTFILEINFO;
typedef DEPENDENTFILEINFO* LPDEPENDENTFILEINFO;
struct tagCACHECTRLINFO
{
TCHAR szName[CONTROLNAME_MAXSIZE];
TCHAR szFile[MAX_PATH];
TCHAR szCLSID[MAX_CLSID_LEN];
TCHAR szTypeLibID[MAX_CLSID_LEN];
TCHAR szVersion[VERSION_MAXSIZE];
TCHAR szLastAccess[TIMESTAMP_MAXSIZE];
TCHAR szCreation[TIMESTAMP_MAXSIZE];
TCHAR szLastChecked[TIMESTAMP_MAXSIZE];
TCHAR szCodeBase[INTERNET_MAX_URL_LENGTH];
DWORD dwIsDistUnit;
DWORD dwHasActiveX;
DWORD dwHasJava;
DWORD dwTotalFileSize;
DWORD dwTotalSizeSaved;
UINT cTotalFiles;
DWORD dwStatus;
FILETIME timeCreation;
FILETIME timeLastAccessed;
DEPENDENTFILEINFO dependentFile;
};
typedef tagCACHECTRLINFO CACHECTRLINFO;
typedef CACHECTRLINFO* LPCACHECTRLINFO;
// PIDL format for this folder...
struct tagCONTROLPIDL
{
USHORT cb;
CACHECTRLINFO ci;
};
typedef tagCONTROLPIDL CONTROLPIDL;
typedef UNALIGNED CONTROLPIDL* LPCONTROLPIDL;
// common expiration
#define DEFAULT_DAYS_BEFORE_EXPIRE 60
#define DEFAULT_DAYS_BEFORE_AUTOEXPIRE 15
// misc macros
#define IS_VALID_CONTROLPIDL(pidl) (TRUE)
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
// helper functions
LPCTSTR GetStringInfo(LPCONTROLPIDL lpcpidl, int nFlag);
BOOL GetTimeInfo(LPCONTROLPIDL lpcpidl, int nFlag, FILETIME* lpTime);
UINT GetTotalNumOfFiles(LPCONTROLPIDL lpcpidl);
DWORD GetSizeSaved(LPCONTROLPIDL lpcpidl);
BOOL GetSizeSaved(LPCONTROLPIDL pcpidl, LPTSTR lpszBuf);
UINT GetStatus(LPCONTROLPIDL pcpidl);
BOOL GetStatus(LPCONTROLPIDL pcpidl, LPTSTR lpszBuf, int nBufSize);
BOOL GetDependentFile(
LPCONTROLPIDL lpcpidl,
UINT iFile,
LPTSTR lpszFile,
DWORD *pdwSize);
HICON GetDefaultOCIcon(LPCONTROLPIDL lpcpidl);
void GetContentBools(LPCONTROLPIDL pcpidl, BOOL *pbHasActiveX, BOOL *pbHasJava );
HRESULT GetLastAccessTime(HANDLE hControl, FILETIME *pLastAccess);
HRESULT CreatePropDialog(
HWND hwnd,
LPCONTROLPIDL pcpidl);
void GenerateEvent(
LONG lEventId,
LPITEMIDLIST pidlFolder,
LPITEMIDLIST pidlIn,
LPITEMIDLIST pidlNewIn);
HCURSOR StartWaitCur();
void EndWaitCur(HCURSOR hCurOld);
void GetDaysBeforeExpireGeneral(ULONG *pnDays);
void GetDaysBeforeExpireAuto(ULONG *pnDays);
HRESULT WINAPI RemoveControlByName2(
LPCTSTR lpszFile,
LPCTSTR lpszCLSID,
LPCTSTR lpszTypeLibID,
BOOL bForceRemove, /* = FALSE */
DWORD dwIsDistUnit, /* = FALSE */
BOOL bSilent);
HRESULT WINAPI RemoveControlByHandle2(
HANDLE hControlHandle,
BOOL bForceRemove, /* = FALSE */
BOOL bSilent);
#endif