2009-07-08 2 views
0

원래이 호출에 연결되어 특정 파일에 대한 모든 액세스를 기록하고 모든 변경 사항을 캡처 할 수있었습니다.ReadDirectoryChangesW 구현

나는 몇 가지 예를 통해 연구했지만 실패했습니다. 심지어 코드가 컴파일되지 않습니다.

누군가 파일을 모니터링하고 변경 사항을 기록하기 위해 작은 작업 스 니펫을 제공 할 수 있습니까?

또는 적어도 일부 포인터가 있습니까?

감사

답변

0

당신은 ReadDirectoryChangesW를 선언하는 헤더가되지 않을 수도 있습니다, 또는 당신이 0x0400보다 크거나 같은 것으로 #define _WIN32_WINNT해야합니다. 이전 버전 인 경우 ReadDirectoryChangesW에 대한 주소를 수동으로 가져 와서 다음과 같이 호출 할 수 있습니다.

HANDLE kernel32_dll_handle= LoadLibrary("kernel32.dll"); 
FARPROC ReadDirectoryChangesWAddress= GetProcAddress(kernel32_dll_handle, "ReadDirectoryChangesW"); 

typedef BOOL WINAPI (*ReadDirectoryChangesWDeclaration)(
    __in   HANDLE hDirectory, 
    __out  LPVOID lpBuffer, 
    __in   DWORD nBufferLength, 
    __in   BOOL bWatchSubtree, 
    __in   DWORD dwNotifyFilter, 
    __out_opt LPDWORD lpBytesReturned, 
    __inout_opt LPOVERLAPPED lpOverlapped, 
    __in_opt  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine 
); 

ReadDirectoryChangesWDeclaration ReadDirectoryChangesW= (ReadDirectoryChangesWDeclaration)ReadDirectoryChangesWAddress;