2009-07-08 8 views
0

À l'origine, j'étais lié à cet appel afin que je puisse enregistrer tous les accès à un certain fichier et capturer tous les changements.Mise en œuvre de ReadDirectoryChangesW

J'ai travaillé à travers plusieurs exemples et j'ai échoué. Même le code ne compile pas pour moi.

Quelqu'un peut-il me fournir un petit extrait de travail pour surveiller un fichier et enregistrer les changements?

Ou au moins quelques pointeurs?

Merci

Répondre

0

Vous pourriez ne pas avoir la tête qui déclare ReadDirectoryChangesW, ou vous devez #define _WIN32_WINNT supérieure ou égale à 0x0400. Si c'est le premier, vous pouvez manuellement obtenir l'adresse à ReadDirectoryChangesW et appeler cela:

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;