我正在尝试修改现有的 C 迷你过滤器驱动程序,但对 C 的经验非常有限。我的函数接收到两个 PUNICODE_STRING 的两个文件系统上文件的路径。
_In_ PUNICODE_STRING SourceFile,
_In_ PUNICODE_STRING TargetFile,
我需要创建一个新的 PUNICODE_STRING(称为 NewTargetFile),然后在 NewTargetFile 的末尾附加“.xy”,而不是覆盖 TargetFile。
我假设一个明智的方法是定义一个新的 PUNICODE_STRING 并将 TargetFile 复制到 NewTargetFile。然后将字符串追加到末尾。但我显然超出了我的理解范围!因为我只得到一个空白值。
PUNICODE_STRING NewTargetFile = { 0 };
NewTargetFile = TargetFile;
NT_IF_FAIL_LEAVE(RtlAppendUnicodeToString(NewTargetFile, (PCWSTR)'.ta'));
所以简而言之,如果我的函数接收到“filename.txt”的 TargetFile,我需要生成一个值为“filename.txt.xy”的 PUNICODE_STRING
最佳答案
通过分配 NewTargetFile = TargetFile;
,您只是在复制指针。在 NewTargetFile
上执行的每个操作都将在 TargetFile
上执行。
您需要为 NewTargetFile
创建一个单独的 UNICODE_STRING
并使用 RtlUnicodeStringInit()
初始化它功能,那么你需要使用RtlUnicodeStringCopy()
将 TargetFile
复制到 NewTargetFile
的函数。最后,您可以使用 RtlAppendUnicodeToString()
。
类似于:
PUNICODE_STRING NewTargetFile = { 0 };
NTSTRSAFEDDI status;
// NewTargetFile = TargetFile;
status = RtlUnicodeStringInit(
NewTargetFile,
(NTSTRSAFE_PCWSTR) "\0"
);
// check status ...
status = RtlUnicodeStringCopy(
NewTargetFile,
TargetFile
);
// check status ...
NT_IF_FAIL_LEAVE(RtlAppendUnicodeToString(NewTargetFile, (PCWSTR)'.ta'));
我没有尝试代码,但这似乎是问题所在。
希望这对您有所帮助。
关于c - 如何在 C 中将字符串添加到 PUNICODE_STRING 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149715/