从内存地址读取字符串 - GetStringFromPtr
函数简介
从指定内存地址读取字符串,参考 Windows 函数 GetWindowText 实现。
接口名称
GetStringFromPtr
DLL调用
int GetStringFromPtr(long ptr, LPSTR lpString, int size);
参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| ptr | 长整数型 | 字符串内存地址。 |
| lpString | 字符串 | 接收字符串的缓冲区。 |
| size | 整数型 | 缓冲区大小,可通过 GetStringSize 接口读取字符串大小,size 要 +1 用于存储终止符 '\0'。 |
示例
long strPtr = 0x12345678; // 示例内存地址
int size = GetStringSize(strPtr) + 1; // +1 用于存储终止符 '\0'
char* buffer = (char*)malloc(size);
memset(buffer, 0, size);
int length = GetStringFromPtr(strPtr, buffer, size);
if (length > 0) {
printf("读取到的字符串: %s\n", buffer);
} else {
printf("读取失败\n");
}
free(buffer);
返回值
整型数:成功返回字符串实际长度,失败返回 0。
注意事项
- 使用此函数时需要确保传入的内存地址有效且可访问。
- 建议在使用前先通过 GetStringSize 接口获取实际需要的缓冲区大小。
- 缓冲区大小不足可能导致字符串截断。
