2009-07-08 4 views
0

Ursprünglich war ich mit diesem Aufruf verbunden, so dass ich den gesamten Zugriff auf eine bestimmte Datei protokollieren und alle Änderungen erfassen konnte.ReadDirectoryChangesW Implementierung

Ich habe mehrere Beispiele durchgearbeitet und bin gescheitert. Selbst der Code kompiliert nicht für mich.

Kann mir jemand ein kleines funktionierendes Snippet zur Verfügung stellen, um eine Datei zu überwachen und Änderungen aufzuzeichnen?

Oder zumindest einige Zeiger?

Dank

Antwort

0

Sie werden vielleicht nicht die Header, ReadDirectoryChangesW haben, oder Sie müssen #define _WIN32_WINNT als größer oder gleich 0x0400 erklärt. Wenn es ersteres ist, können Sie die Adresse manuell an ReadDirectoryChangesW abrufen und Folgendes aufrufen:

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;