gpt4 book ai didi

c - 如何在 minifilter 驱动程序中取消重命名操作

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:23 27 4
gpt4 key购买 nike

我想取消微过滤器中的重命名操作。我写了检测文件何时被重命名的代码,但我不清楚如何重命名实际上取消操作。谁能帮我解决这个问题?

这是我检测文件重命名的回调例程。

FLT_PREOP_CALLBACK_STATUS
PreSetInformation(
_Inout_ PFLT_CALLBACK_DATA Cbd,
_In_ PCFLT_RELATED_OBJECTS FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *CompletionContext
)
{
if (Cbd->Iopb->Parameters.SetFileInformation.FileInformationClass == FileRenameInformation)
{
WCHAR buf[MAX_PATH] = { 0 };
PFILE_RENAME_INFORMATION renameInfo = Cbd->Iopb->Parameters.SetFileInformation.InfoBuffer;
memcpy(buf, renameInfo->FileName, renameInfo->FileNameLength);
DbgPrint("renameInfo %ws\n", buf);

if (anCondition(buf))
{
// TO DO: cancel a rename
}
}

return FLT_PREOP_SUCCESS_NO_CALLBACK;
}

最佳答案

您需要填写Cbd->IoStatus返回FLT_PREOP_COMPLETE所以在你的代码中:

if (anCondition(buf))
{
// TO DO: cancel a rename
Cbd->IoStatus.Status = <some_status>;
Cbd->IoStatus.Information = <some_information>;//usually 0
return FLT_PREOP_COMPLETE;
}

关于c - 如何在 minifilter 驱动程序中取消重命名操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40564824/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com