?? 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 + -