迷你过滤器驱动器|将信息从操作前传递到操作后

时间:2017-11-18 00:30:08

标签: filter-driver

我跟踪已更改已制作文件,并且想要记住"并将一些信息从操作前回调传递给操作后回调。

最好的方法是什么?

[编辑:驱动程序应该只支持Windows 10,其他一切都是奖金]

1 个答案:

答案 0 :(得分:0)

您可以在PreOperation中使用 PVOID * CompletionContext 来存储指向要传递给PostOperation的数据的指针。 在PostOperation中只需使用 CompletionContext ,因为它将是您在PreOperation中指向它的数据。

例如: 术前:

MyPreOpData = ExAllocatePoolWithTag(DATA_SIZE);
FltGetFileNameInformation(&NameInfo);
MyPreData->NameInfo = NameInfo;
MyPreData->OtherData = MyDrvGetOtherData(Params);
*CompletionContext = MyPreData;

术后:

if (CompletionContext != NULL)
{
    PMY_DATA MyPreData = (PMY_DATA)CompletionContext;
    // now continue using the data queried in the PreOp
    ...
    // when done free it
    ExFreePoolWithTag(MyPreData);
}

有关详细信息,请参阅here

祝你好运,
加布里埃尔