?? cooperator.h
字號(hào):
///////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------
// Copyright (c) 2004 jfpan20000@sina.com
//
// IceSword協(xié)件庫(kù) 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,其實(shí)只用到255字節(jié)
//
#define DATA_BUF_LEN 2000
//
////IsdCreateFile可以創(chuàng)建與打開(kāi)目錄,但必須為dwFlagsAndAttributes指定FILE_FLAG_DIRECTORY標(biāo)志
//
#define FILE_FLAG_DIRECTORY 0x00400000
//
////用于IsdFindFile,對(duì)應(yīng)于WIN32_FIND_DATA,有一點(diǎn)區(qū)別
//
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;
//
////注冊(cè)表查詢操作結(jié)構(gòu)
//
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
//
////導(dǎo)出函數(shù)
//
/////////////////////////////////////////////////////////////////////
////IsdGetVersion
//
//目的:獲取運(yùn)行中的Icesword程序版本
//
//參數(shù):
// Version
// [out] 成功后返回版本號(hào),如1.06版就返回0x106.
//
//返回值:成功則返回TRUE.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsdGetVersion(DWORD *Version);
/////////////////////////////////////////////////////////////////////
////IsdGetIceProcId
//
//目的:獲取運(yùn)行中的Icesword進(jìn)程PID
//
//參數(shù):無(wú)
//
//返回值:成功則返回PID.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) DWORD IsdGetIceProcId();
/////////////////////////////////////////////////////////////////////
////IsConnectServer
//
//目的:是否已經(jīng)連接到IceSword進(jìn)程
//
//參數(shù):無(wú)
//
//返回值:已連接則返回TRUE.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsConnectServer();
/////////////////////////////////////////////////////////////////////
////ConnectAndCall
//
//目的:連接IceSword進(jìn)程并獲取初始參數(shù)
//
//參數(shù):無(wú)
//
//返回值:成功則返回TRUE.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL ConnectAndCall();
/////////////////////////////////////////////////////////////////////
////IsdEnumProcesses
//
//目的:枚舉進(jìn)程
//
//參數(shù):
// lpidProcess
// [out] 用于保存返回值的緩沖.
// cb
// [in] 緩沖大小.
// cbNeeded
// [out] 實(shí)際返回緩沖大小.
//
//返回值:成功則返回TRUE.
//
//備注:1、它與系統(tǒng)PSAPI的EnumProcesses幾乎一樣使用,就不多說(shuō)了.
// 注意因?yàn)?號(hào)Idle進(jìn)程始終不變,返回值就省略了,所以進(jìn)程總數(shù)
// 應(yīng)該加一.
// 2、它返回的PID包含狀態(tài)Deleting的進(jìn)程,請(qǐng)用IsProcessDeleting
// 判斷是不是該狀態(tài)(返回TRUE則是).
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsdEnumProcesses(
DWORD *lpidProcess,
DWORD cb,
DWORD *cbNeeded);
/////////////////////////////////////////////////////////////////////
////IsProcessDeleting
//
//目的:判斷進(jìn)程狀態(tài)是否為Deleting
//
//參數(shù):
// Pid
// [in] 用于保存返回值的緩沖.
//
//返回值:是Deleting狀態(tài)進(jìn)程則返回TRUE.
//
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsProcessDeleting(DWORD Pid);
/////////////////////////////////////////////////////////////////////
////IsdEnumProcessModules
//
//目的:枚舉進(jìn)程模塊
//
//參數(shù):
// Pid
// [in] 進(jìn)程PID
// lphModule
// [out] 用于保存返回值的緩沖.
// cb
// [in] 緩沖大小.
// lpcbNeeded
// [out] 實(shí)際返回緩沖大小.
//
//返回值:成功則返回TRUE.
//
//備注:它與系統(tǒng)PSAPI的EnumProcessModules幾乎一樣使用,注意第一個(gè)參
// 數(shù)不同,這里是Pid.
/////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllimport) BOOL IsdEnumProcessModules(
DWORD Pid,
HMODULE *lphModule,
DWORD cb,
LPDWORD lpcbNeeded);
/////////////////////////////////////////////////////////////////////
////IsdQueryProcessFileName
//
//目的:由進(jìn)程PID獲取進(jìn)程文件路徑名
//
//參數(shù):
// Pid
// [in] 進(jìn)程PID
// FileName
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -