2016-11-12 3 views
1

ミニフィルターで名前変更操作をキャンセルしたいと思います。私は ファイルの名前が変更されていることを検出するコードを書いたが、私は が実際に操作をキャンセルする方法については不明である。誰もがこれで私を助けることができますか?ミニフィルタードライバーの名前変更操作をキャンセルする方法

ファイル名の変更を検出するコールバックルーチンです。

あなたのコードでそう Cbd->IoStatusreturn FLT_PREOP_COMPLETE を埋める必要
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; 
} 

答えて

2

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