硬盘爱好者 发表于 2012-4-13 20:54:57

WinHEX API函数解释

函数一: int WHX_Init( int APIVersion);

第一步,我们需要初始化这个dll,因此,我们需要调用 WHX_Init(1)函数,传递一个1,从返回值可以判断我们初始化的结果。
其返回值可能为:
2初始化成功(功能受限)
1成功
0常规错误
-1安装不正确
-2API版本不正确

因此,我们必须有一个非评估版的DLL,才能使用正常使用这些API,一般返回值为1.


函数二:BOOL WHX_Done();

此函数用于释放分配的资源,同时终止进程。一般在最后调用。


函数三:BOOL WHX_Open(LPCSTR lpResName);

打开指定的文件,也可以是磁盘,分区等,例子:

C:\test.img打开文件
D:   打开本地磁盘
00h   软驱
80h   物理磁盘0
81h   物理磁盘1
82h   移动媒体
9Eh   光驱


函数四:BOOL WHX_Create(LPCSTR lpPathName,int Size);

创建一个文件,创建是,需要传递文件路径文件名,以及将要创建的文件大小
此函数可以支持最大创建2的 31次方 = 2 147 483 648字节。但实际我们使用中
,发现新版已经超过这个最大限制了。


函数五:BOOL WHX_Save();

保存修改的数据。经过分析发现,用winhex修改磁盘或文件,当修改范围小于20M(默认)时,winhex会将修改前的内容备份到自己创建的文件里面,(用于撤销编辑).当超过20M时,winhex会自动提示,此修改将不可逆。因此,当修改的内容超过20M时,也可以不调用此函数。


函数六:BOOL WHX_SaveAll();

保存所有打开并修改的文件,功能同上。


函数七:BOOL WHX_Close();

调用此函数将直接关闭打开的文件或磁盘,所有未保存的数据将丢失。因此,调用此函数前,根据需求,需要调用保存函数。


函数八:BOOL WHX_CloseAll();

功能同上,关闭所有打开的文件或磁盘,不保存修改的数据。


函数九:BOOL WHX_SaveAs(LPCSTR lpNewFileName);

另存为。需要传递完整的文件名和路径。



函数十:BOOL WHX_OpenEx( LPCSTR lpResName,int Param);

功能同WHX_Open(),但是增加了一个Param的参数。Param的目的主要是传递编辑模式,参数只能是以下三种之一:
0x00000001: 只读方式
传递只读方式后,文件或磁盘将无法写入操作,只能查看

0x00000002: 替换方式
之前介绍过,winhex写入的方式是先写入到自己创建的临时文件,在用户点击保存后再将文件写入到文件或磁盘。而这种方式是直接写入到磁盘,若写入错误,无法撤销,由于少了一个步骤,写入速度得到了很大提高,一般不建议新手使用。
0x00000004: 取证方式
此参数需要法政版才可以使用。

函数十一:
BOOL WHX_Read(LPVOID lpBuffer,int Bytes);
从指定的偏移地址开始读取Bytes个字节到lpBuffer里面,读到内存后,我们可以对这里的数据执行任意的操作,比如查找0x55aa的结束标记,或对这段内容进行加密,然后保存到文件,又或者将这段内容替换用户指定的值等等。数据源可以是文件,也可以是磁盘。


函数十二:
BOOL WHX_Write(LPVOID lpBuffer,int Bytes);
功能与上一个函数相反。此函数是将lpBuffer里面的内容写入到指定的偏移地址,写入长度为Bytes个字节。


函数十三:
BOOL WHX_GetSize(LPLONGLONG lpSize);
获取从当前位置到指定偏移地址的字节数,返回值保存在lpSize。



函数十四
BOOL WHX_Move(LONGLONG Distance);
移动当前文件指针的位置,共计移动Distance个字节,向后移动必须大于0,向前移动必须小于0。


函数 十六:
BOOL WHX_CurrentPos(LPLONGLONG lpOfs);
获取当前的偏移值,获取成功后,值保存在lpOfs里面。


函数十七:
BOOL WHX_SetBlock(LONGLONG Ofs1,LONGLONG Ofs2);
设置选块,开始偏移为Ofs1,结束偏移为Ofs2.设置选款后,我们可以对这段选块进行拷贝,或者“写入新文件”的操作。如果要清空当前的选择,则需要将Ofs1和Ofs2都设置为-1.


函数十八:
BOOL WHX_Copy();
此函数是将选块内的数据拷贝到剪切板,由于内容容量有限,因此拷贝的数据量不能太大。


函数十九:

BOOL WHX_CopyIntoNewFile(LPCSTR lpNewFileName);
由于WHX_Copy()的数据量有限,而我们需要将某一段区域内的数据都保存到新的文件里面,我们可以调用此函数,将选块内的数据保存,需要传递一个具体的保存路径和文件名。


函数二十:
BOOL WHX_Cut();
剪切文件,注意,此功能只能针对文件,不能剪切磁盘扇区。


函数二十一
BOOL WHX_Remove();
移除设定的选块内容,此功能也只能针对于文件有效,无法移除磁盘扇区。


函数二十二:
BOOL WHX_Paste();
粘贴剪切板数据,此功能只针对文件有效,无法粘贴数据到磁盘扇区。对于磁盘扇区,需要调用“写入”功能。


函数二十三:
BOOL WHX_WriteClipboard();
将当前剪切板的数据写入到文件或者磁盘,一般在调用WHX_Copy()后应立即调用此函数,以保证数据的正确性。


函数二十四:
BOOL WHX_Find(LPCSTR lpData,LPCSTR lpOptions);
强大的搜索功能,从当前磁盘或者文件开始搜索lpData,lpOptions为搜索选项,可以设置为:向下搜索,向上搜索,大小写匹配,使用通配符等等。


函数二十五:
BOOL WHX_Replace(LPCSTR lpData1,LPCSTR lpData2, LPCSTR lpOptions);
替换功能,设置方法同上,数据恢复中不建议使用。


函数二十六:
BOOL WHX_WasFound();
如果在调用 WHX_Find 或者 WHX_Replace找到了数据,那么此函数将返回真。


函数二十七:
BOOL WHX_Convert(LPCSTR lpSrcFormat,LPCSTR lpDstFormat);编码转换函数,支持的编码有“ANSI”, “IBM”, “EBCDIC”,“Binary”, “HexASCII”, “IntelHex”, “MotorolaS”, “Base64”, “UUCode”。

函数二十八:
BOOL WHX_Encrypt(LPCSTR lpKey,int Algorithm);
按照指定的key和算法加密数据。

函数二十九:
BOOL WHX_Decrypt(LPCSTR lpKey,int Algorithm);
按照设定的算法解密数据。


函数三十:
BOOL WHX_GetCurObjName(LPCSTR lpObjName);
获取当前活动窗口的名称。


函数三十一:
BOOL WHX_SetFeedbackLevel(int Level);
对于错误信息通知用户的方法。参数Level为界面的表示方式:
0显示消息框和进度窗口
仅1禁止消息框
仅2禁止进度窗口
3禁止消息框和进度窗口

函数三十二:
BOOL WHX_GetLastError(LPCSTR lpErrorMsg);
获取当前错误码,比如当硬盘有坏道时,读取扇区失败,即可调用此函数获取错误代码,假错误代码为23,则会显示“磁盘冗余错误”。


函数三十三:
BOOL WHX_SetLastError(LPCSTR lpErrorMsg);
设置一个错误消息。


函数三十四:
BOOL WHX_GetStatus(LPCSTR lpInstPath LPLONG lpWHXVersion LPLONG lpWHXSubVersion LPLONG lpReserved);
获取当前使用的DLL的完整路径,以及版本,子版本等信息。



假皮 发表于 2012-4-13 21:34:49

支持下!!!!!

xiongdeyuan 发表于 2012-4-13 22:16:48

严重支持

elite306 发表于 2012-4-14 09:03:12

感谢楼主的分享,支持!
页: [1]
查看完整版本: WinHEX API函数解释