📄 w2k_lib.h
字号:
// w2k_lib.h
// 02-12-2001 Sven B. Schreiber
// sbs@orgon.com
#ifndef UNICODE
#define UNICODE // ANSI not supported by this library
#endif
// =================================================================
// PROGRAM VERSION
// =================================================================
#define W2K_LIB_MODULE w2k_lib
#define W2K_LIB_BUILD 1
#define W2K_LIB_VERSION_HIGH 1
#define W2K_LIB_VERSION_LOW 0
#define W2K_LIB_VERSION ((W2K_LIB_VERSION_HIGH * 100) \
+ W2K_LIB_VERSION_LOW)
////////////////////////////////////////////////////////////////////
#ifdef _W2K_LIB_DLL_
////////////////////////////////////////////////////////////////////
// =================================================================
// PROGRAM IDENTIFICATION
// =================================================================
#define MAIN_BUILD W2K_LIB_BUILD
#define MAIN_VERSION_HIGH W2K_LIB_VERSION_HIGH
#define MAIN_VERSION_LOW W2K_LIB_VERSION_LOW
// -----------------------------------------------------------------
#define MAIN_DAY 12
#define MAIN_MONTH 02
#define MAIN_YEAR 2001
// -----------------------------------------------------------------
#define MAIN_PREFIX SBS
#define MAIN_MODULE W2K_LIB_MODULE
#define MAIN_NAME SBS Windows 2000 Utility Library
#define MAIN_COMPANY Sven B. Schreiber
#define MAIN_AUTHOR Sven B. Schreiber
#define MAIN_EMAIL sbs@orgon.com
#define MAIN_DLL
////////////////////////////////////////////////////////////////////
#endif // #ifdef _W2K_LIB_DLL_
////////////////////////////////////////////////////////////////////
// =================================================================
// HEADER FILES
// =================================================================
#include <proginfo.h>
////////////////////////////////////////////////////////////////////
#ifndef _RC_PASS_
////////////////////////////////////////////////////////////////////
// =================================================================
// MACROS
// =================================================================
#define ENTRY(_a) ((DWORD) ((PBYTE) ((_a)+1) - (PBYTE) (_a)))
#define OFFSET(_s,_m) ((DWORD) &(((_s *) 0)->_m))
#define MEMBER(_s,_m) sizeof (((_s *) 0)->_m)
#define SKIP(_p,_d) ((PVOID) (((PBYTE) (_p)) + (_d)))
#define BACK(_p,_d) ((PVOID) (((PBYTE) (_p)) - (_d)))
#define BASE(_p,_s,_m) ((_s *) BACK (_p, OFFSET (_s, _m)))
#define COUNT(_n,_1,_x) ((_n) == 1 ? (_1) : (_x))
#define COUNTX(_n,_1,_x) (_n), COUNT(_n,_1,_x)
#define LCASE(_c) ((WORD) CharLower ((PWORD) (_c)))
#define UCASE(_c) ((WORD) CharUpper ((PWORD) (_c)))
#define W2K_VERSION1(_q) ((WORD) ((_q) >> 48))
#define W2K_VERSION2(_q) ((WORD) ((_q) >> 32))
#define W2K_VERSION3(_q) ((WORD) ((_q) >> 16))
#define W2K_VERSION4(_q) ((WORD) (_q) )
// =================================================================
// VARIOUS CONSTANTS
// =================================================================
#define N_STRING 0x0100
#define N_CONSOLE 0x1000
#define N_WRITE 0x4000 // WriteFile() block size
#define N_NAME N_STRING
#define N_LEVEL N_STRING
#define N_DECIMAL16 ( 5 + 1)
#define N_DECIMAL32 (10 + 1)
#define N_HEX16 ( 4 + 1)
#define N_HEX32 ( 8 + 1)
#define N_VERSION (2 * N_DECIMAL32) // a.bb
#define N_VERSION_EX (4 * N_DECIMAL16) // a.b.c.d
#define N_BUILD (3 * N_DECIMAL32) // a.bb.c
#define HKEY_NULL ((HKEY ) -1)
#define VERSION_NULL ((QWORD) -1)
#define INVALID_UNICODE 0x7F
// =================================================================
// TYPE SIZE DEFINITIONS
// =================================================================
#define ENUM_SERVICE_STATUS_ sizeof (ENUM_SERVICE_STATUS)
#define BYTE_ sizeof (BYTE)
#define WORD_ sizeof (WORD)
#define DWORD_ sizeof (DWORD)
#define PVOID_ sizeof (PVOID)
#define HANDLE_ sizeof (HANDLE)
#define HMODULE_ sizeof (HMODULE)
#define BYTE__ (BYTE_ * 8)
#define WORD__ (WORD_ * 8)
#define DWORD__ (DWORD_ * 8)
// =================================================================
// REGISTRY R/W MODES
// =================================================================
#define W2K_MODE_DWORD 0xFFFFFFFF
#define W2K_MODE_TEXT 0xFFFFFFFE
#define W2K_MODE_BINARY(_m) ((DWORD) (_m) < W2K_MODE_TEXT)
// =================================================================
// POOL NOTIFICATION IDS
// =================================================================
#define W2K_NOTIFY_UNDEFINED 0
#define W2K_NOTIFY_ENUMERATE 1
#define W2K_NOTIFY_ADD 2
#define W2K_NOTIFY_REMOVE 3
#define W2K_NOTIFY_DESTROY 4
// =================================================================
// LIST NODE TYPES
// =================================================================
#define W2K_NODE_ANY 0
// =================================================================
// SYSTEM IDS
// =================================================================
#define W2K_SYSTEM_WINNT3 3
#define W2K_SYSTEM_WINNT4 4
#define W2K_SYSTEM_WIN2000 5
// =================================================================
// POINTER TYPES
// =================================================================
typedef VOID **PPVOID;
typedef WORD **PPWORD;
typedef DWORD **PPDWORD;
typedef DWORDLONG QWORD, *PQWORD, **PPQWORD;
typedef COLORREF *PCOLORREF, **PPCOLORREF;
typedef RGBQUAD *PRGBQUAD, **PPRGBQUAD;
typedef HBITMAP *PHBITMAP, **PPHBITMAP;
typedef HICON *PHICON, **PPHICON;
typedef HMODULE *PHMODULE, **PPHMODULE;
typedef HWND *PHWND, **PPHWND;
typedef SC_HANDLE *PSC_HANDLE, **PPSC_HANDLE;
typedef SERVICE_STATUS *PSERVICE_STATUS, **PPSERVICE_STATUS;
typedef ENUM_SERVICE_STATUS * PENUM_SERVICE_STATUS,
**PPENUM_SERVICE_STATUS;
// =================================================================
// FUNCTION TYPES
// =================================================================
typedef BOOL (CALLBACK *W2K_WALK ) (PVOID pThis,
PVOID pData);
typedef BOOL (CALLBACK *W2K_NOTIFY) (struct _W2K_POOL *pwp,
DWORD dMode,
PWORD pwName,
PVOID pData);
// =================================================================
// STRUCTURES
// =================================================================
typedef struct _W2K_MEMORY
{
DWORD dTag;
DWORD dSize;
BYTE abData [];
}
W2K_MEMORY, *PW2K_MEMORY, **PPW2K_MEMORY;
#define W2K_MEMORY_ sizeof (W2K_MEMORY)
#define W2K_MEMORY_TAG '>k2w' // w2k>
// -----------------------------------------------------------------
typedef struct _W2K_ENTRY
{
WORD awName [N_NAME];
PVOID pData;
}
W2K_ENTRY, *PW2K_ENTRY, **PPW2K_ENTRY;
#define W2K_ENTRY_ sizeof (W2K_ENTRY)
// -----------------------------------------------------------------
typedef struct _W2K_POOL
{
CRITICAL_SECTION cs;
SYSTEMTIME stCreate;
SYSTEMTIME stUpdate;
SYSTEMTIME stAdd;
SYSTEMTIME stRemove;
DWORD dCount;
W2K_ENTRY awe [];
}
W2K_POOL, *PW2K_POOL, **PPW2K_POOL;
#define W2K_POOL_ sizeof (W2K_POOL)
#define W2K_POOL__(_n) \
(W2K_POOL_ + ((_n) * W2K_ENTRY_))
// -----------------------------------------------------------------
typedef struct _W2K_NODE
{
struct _W2K_NODE *pwnBack;
struct _W2K_NODE *pwnNext;
PVOID pThis;
DWORD dType;
}
W2K_NODE, *PW2K_NODE, **PPW2K_NODE;
#define W2K_NODE_ sizeof (W2K_NODE)
// -----------------------------------------------------------------
typedef struct _W2K_VALUE
{
PWORD pwValue;
DWORD dMode;
union
{
DWORD dData;
PWORD pwData;
PVOID pData;
};
}
W2K_VALUE, *PW2K_VALUE, **PPW2K_VALUE;
#define W2K_VALUE_ sizeof (W2K_VALUE)
// -----------------------------------------------------------------
typedef struct _W2K_PATH
{
HKEY hk;
HKEY hkBase;
PWORD pwParts;
PWORD pwKey;
PWORD pwValue;
}
W2K_PATH, *PW2K_PATH, **PPW2K_PATH;
#define W2K_PATH_ sizeof (W2K_PATH)
// -----------------------------------------------------------------
typedef struct _W2K_SYSTEM
{
DWORD dMajor;
DWORD dMinor;
DWORD dBuild;
DWORD dSystem;
WORD awName [N_NAME];
WORD awVersion [N_VERSION];
WORD awBuild [N_BUILD];
WORD awLevel [N_LEVEL];
}
W2K_SYSTEM, *PW2K_SYSTEM, **PPW2K_SYSTEM;
#define W2K_SYSTEM_ sizeof (W2K_SYSTEM)
// -----------------------------------------------------------------
typedef struct _W2K_SERVICES
{
DWORD dEntries; // number of entries in aess[]
DWORD dBytes; // overall number of bytes
DWORD dDisplayName; // maximum display name length
DWORD dServiceName; // maximum service name length
ENUM_SERVICE_STATUS aess []; // service/driver status array
}
W2K_SERVICES, *PW2K_SERVICES, **PPW2K_SERVICES;
#define W2K_SERVICES_ sizeof (W2K_SERVICES)
#define W2K_SERVICES__(_n) \
(W2K_SERVICES_ + ((_n) * ENUM_SERVICE_STATUS_))
// -----------------------------------------------------------------
typedef struct _W2K_PLACEMENT
{
DWORD dMode;
INT iLeft;
INT iTop;
INT iWidth;
INT iHeight;
}
W2K_PLACEMENT, *PW2K_PLACEMENT, **PPW2K_PLACEMENT;
#define W2K_PLACEMENT_ sizeof (W2K_PLACEMENT)
// -----------------------------------------------------------------
typedef struct _W2K_SETTINGS
{
LOGFONT lf;
COLORREF crForeground;
COLORREF crBackground;
W2K_PLACEMENT wp;
}
W2K_SETTINGS, *PW2K_SETTINGS, **PPW2K_SETTINGS;
#define W2K_SETTINGS_ sizeof (W2K_SETTINGS)
// =================================================================
// VERSION INFO STRUCTURES
// =================================================================
#define VS_HEADER(_n) \
struct _VS_HEADER_##_n \
{ \
WORD wLength; \
WORD wValueLength; \
WORD wType; \
WORD awKey [_n]; \
}
typedef VS_HEADER ( 0) VS_HEADER, *PVS_HEADER;
typedef VS_HEADER ( 1) VS_HEADER_01, *PVS_HEADER_01;
typedef VS_HEADER ( 9) VS_HEADER_09, *PVS_HEADER_09;
typedef VS_HEADER (13) VS_HEADER_13, *PVS_HEADER_13;
typedef VS_HEADER (15) VS_HEADER_15, *PVS_HEADER_15;
typedef VS_HEADER (17) VS_HEADER_17, *PVS_HEADER_17;
// -----------------------------------------------------------------
typedef struct _VS_STRING
{
VS_HEADER_01 Header; // key and value
WORD awData [];
}
VS_STRING, *PVS_STRING, **PPVS_STRING;
#define VS_STRING_ sizeof (VS_STRING)
// -----------------------------------------------------------------
typedef struct _VS_STRINGTABLE
{
VS_HEADER_09 Header; // language and code page
VS_STRING String;
}
VS_STRINGTABLE, *PVS_STRINGTABLE, **PPVS_STRINGTABLE;
#define VS_STRINGTABLE_ sizeof (VS_STRINGTABLE)
// -----------------------------------------------------------------
typedef struct _VS_STRINGFILEINFO
{
VS_HEADER_15 Header; // "StringFileInfo"
VS_STRINGTABLE StringTable;
}
VS_STRINGFILEINFO, *PVS_STRINGFILEINFO, **PPVS_STRINGFILEINFO;
#define VS_STRINGFILEINFO_ sizeof (VS_STRINGFILEINFO)
// -----------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -