2016-11-12 2 views
1

미니 필터에서 이름 바꾸기 작업을 취소하고 싶습니다. 파일 이름을 바꿀 때를 감지하는 코드를 작성했지만 작업을 실제로 취소하는 방법이 명확하지 않습니다. 아무도 이것으로 나를 도울 수 있습니까?미니 필터 드라이버에서 이름 바꾸기 작업을 취소하는 방법

다음은 파일 이름 변경을 감지하는 콜백 루틴입니다.

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

당신은 채울 필요 Cbd->IoStatus 및 코드에서 너무 return 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; 
} 
관련 문제