📄 cooperator.h
字号:
///////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------
// Copyright (c) 2004 jfpan20000@sina.com
//
// IceSword协件库 1.06
//
// pjf USTC
//------------------------------------------------------------------
////////////////////////////////////////////////////////////////////
#ifndef __ICE_COOPERATOR_
#define __ICE_COOPERATOR_
#pragma comment(lib, "IceSword.lib")
typedef LONG NTSTATUS;
//
////指示IsdOpenKey的RootDirectory为空
//
#define NULL_ROOT_DIR_HANDLE ((HANDLE)0xF000000F)
//
////历史原因,将其定义为2000,其实只用到255字节
//
#define DATA_BUF_LEN 2000
//
////IsdCreateFile可以创建与打开目录,但必须为dwFlagsAndAttributes指定FILE_FLAG_DIRECTORY标志
//
#define FILE_FLAG_DIRECTORY 0x00400000
//
////用于IsdFindFile,对应于WIN32_FIND_DATA,有一点区别
//
typedef struct _ISD_WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
LARGE_INTEGER nFileSize;
LARGE_INTEGER AllocationSize;
TCHAR cAlternateFileName[ 14 ];
TCHAR cFileName[ DATA_BUF_LEN ];
} ISD_WIN32_FIND_DATA, *PISD_WIN32_FIND_DATA;
//
////用于IsdSetInformationFile/IsdQueryInformationFile
//
typedef enum _FILE_INFORMATION_CLASS {
FileDirectoryInformation = 1,
FileFullDirectoryInformation, // 2
FileBothDirectoryInformation, // 3
FileBasicInformation, // 4 wdm
FileStandardInformation, // 5 wdm
FileInternalInformation, // 6
FileEaInformation, // 7
FileAccessInformation, // 8
FileNameInformation, // 9
FileRenameInformation, // 10
FileLinkInformation, // 11
FileNamesInformation, // 12
FileDispositionInformation, // 13
FilePositionInformation, // 14 wdm
FileFullEaInformation, // 15
FileModeInformation, // 16
FileAlignmentInformation, // 17
FileAllInformation, // 18
FileAllocationInformation, // 19
FileEndOfFileInformation, // 20 wdm
FileAlternateNameInformation, // 21
FileStreamInformation, // 22
FilePipeInformation, // 23
FilePipeLocalInformation, // 24
FilePipeRemoteInformation, // 25
FileMailslotQueryInformation, // 26
FileMailslotSetInformation, // 27
FileCompressionInformation, // 28
FileObjectIdInformation, // 29
FileCompletionInformation, // 30
FileMoveClusterInformation, // 31
FileQuotaInformation, // 32
FileReparsePointInformation, // 33
FileNetworkOpenInformation, // 34
FileAttributeTagInformation, // 35
FileTrackingInformation, // 36
FileIdBothDirectoryInformation, // 37
FileIdFullDirectoryInformation, // 38
FileValidDataLengthInformation, // 39
FileShortNameInformation, // 40
FileMaximumInformation
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
//
////注册表查询操作结构
//
typedef enum _KEY_INFORMATION_CLASS {
KeyBasicInformation,
KeyNodeInformation,
KeyFullInformation,
KeyNameInformation,
KeyCachedInformation,
KeyFlagsInformation
} KEY_INFORMATION_CLASS;
typedef struct _KEY_BASIC_INFORMATION {
LARGE_INTEGER LastWriteTime;
ULONG TitleIndex;
ULONG NameLength;
WCHAR Name[1]; // Variable-length string
} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
typedef enum _KEY_VALUE_INFORMATION_CLASS {
KeyValueBasicInformation,
KeyValueFullInformation,
KeyValuePartialInformation,
KeyValueFullInformationAlign64,
KeyValuePartialInformationAlign64
} KEY_VALUE_INFORMATION_CLASS;
typedef struct _KEY_VALUE_BASIC_INFORMATION {
ULONG TitleIndex;
ULONG Type;
ULONG NameLength;
WCHAR Name[1]; // Variable size
} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
ULONG TitleIndex;
ULONG Type;
ULONG DataLength;
UCHAR Data[1]; // Variable size
} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
typedef struct _KEY_FULL_INFORMATION {
LARGE_INTEGER LastWriteTime;
ULONG TitleIndex;
ULONG ClassOffset;
ULONG ClassLength;
ULONG SubKeys;
ULONG MaxNameLen;
ULONG MaxClassLen;
ULONG Values;
ULONG MaxValueNameLen;
ULONG MaxValueDataLen;
WCHAR Class[1];
} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
typedef struct _KEY_VALUE_FULL_INFORMATION {
ULONG TitleIndex;
ULONG Type;
ULONG DataOffset;
ULONG DataLength;
ULONG NameLength;
WCHAR Name[1]; // Variable size
} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
//
////导出函数
//
/////////////////////////////////////////////////////////////////////
////IsdGetVersion
//
//目的:获取运行中的Icesword程序版本
//
//参数:
// Version
// [out] 成功后返回版本号,如1.06版就返回0x106.
//
//返回值:成功则返回TRUE.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsdGetVersion(DWORD *Version);
/////////////////////////////////////////////////////////////////////
////IsdGetIceProcId
//
//目的:获取运行中的Icesword进程PID
//
//参数:无
//
//返回值:成功则返回PID.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) DWORD IsdGetIceProcId();
/////////////////////////////////////////////////////////////////////
////IsConnectServer
//
//目的:是否已经连接到IceSword进程
//
//参数:无
//
//返回值:已连接则返回TRUE.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsConnectServer();
/////////////////////////////////////////////////////////////////////
////ConnectAndCall
//
//目的:连接IceSword进程并获取初始参数
//
//参数:无
//
//返回值:成功则返回TRUE.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL ConnectAndCall();
/////////////////////////////////////////////////////////////////////
////IsdEnumProcesses
//
//目的:枚举进程
//
//参数:
// lpidProcess
// [out] 用于保存返回值的缓冲.
// cb
// [in] 缓冲大小.
// cbNeeded
// [out] 实际返回缓冲大小.
//
//返回值:成功则返回TRUE.
//
//备注:1、它与系统PSAPI的EnumProcesses几乎一样使用,就不多说了.
// 注意因为0号Idle进程始终不变,返回值就省略了,所以进程总数
// 应该加一.
// 2、它返回的PID包含状态Deleting的进程,请用IsProcessDeleting
// 判断是不是该状态(返回TRUE则是).
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsdEnumProcesses(
DWORD *lpidProcess,
DWORD cb,
DWORD *cbNeeded);
/////////////////////////////////////////////////////////////////////
////IsProcessDeleting
//
//目的:判断进程状态是否为Deleting
//
//参数:
// Pid
// [in] 用于保存返回值的缓冲.
//
//返回值:是Deleting状态进程则返回TRUE.
//
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsProcessDeleting(DWORD Pid);
/////////////////////////////////////////////////////////////////////
////IsdEnumProcessModules
//
//目的:枚举进程模块
//
//参数:
// Pid
// [in] 进程PID
// lphModule
// [out] 用于保存返回值的缓冲.
// cb
// [in] 缓冲大小.
// lpcbNeeded
// [out] 实际返回缓冲大小.
//
//返回值:成功则返回TRUE.
//
//备注:它与系统PSAPI的EnumProcessModules几乎一样使用,注意第一个参
// 数不同,这里是Pid.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsdEnumProcessModules(
DWORD Pid,
HMODULE *lphModule,
DWORD cb,
LPDWORD lpcbNeeded);
/////////////////////////////////////////////////////////////////////
////IsdQueryProcessFileName
//
//目的:由进程PID获取进程文件路径名
//
//参数:
// Pid
// [in] 进程PID
// FileName
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -