2013-04-01 9 views
0

我一直只在程序集中2個星期現在所以我是一種新的組裝,我需要一些幫助。使用masm組件注意一個目錄的變化

我需要觀察目錄和所有子目錄以進行更改。我需要通知的唯一更改是文件創建和文件編輯時,但是如果包含其他人很好。

我需要通知對消息框進行了更改的文件。我不需要知道文件所做的更改,我只需要文件路徑到消息框。我試圖搜索網頁,但無法找到任何關於如何在彙編特別masm中做到這一點。
我能找到的唯一東西是我認爲是爲masm編寫的代碼,我嘗試過但是它的消息框A或其他字母,就是這樣,它阻止了我更改該目錄中任何文件的名稱,而我不希望它這樣做。

.data 
FolderPath3 db "C:\users",0 
.data ? 
hFile dd ? 
FileBuffer  DB 200 DUP(?) 

ThreadProc PROC uses edi esi Param:DWORD 
    LOCAL lpBytesReturned:dword 

    invoke CreateFile,addr FolderPath3,GENERIC_READ,FILE_SHARE_DELETE or FILE_SHARE_READ,0,\ 
       OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0 
    mov hFile,eax 
    invoke ReadDirectoryChangesW,hFile,addr FileBuffer,sizeof FileBuffer,TRUE,FILE_NOTIFY_CHANGE_LAST_ACCESS,\ 
       addr lpBytesReturned,0,0 
    .if eax==0 
     invoke MessageBoxA,0,0,0,MB_OK 
    .else 
     xor ecx,ecx 
@@: 
     add edi,ecx 
     lea edi,FileBuffer 
     mov esi,[edi].FILE_NOTIFY_INFORMATION.Action 
     .if esi==FILE_ACTION_MODIFIED 
        invoke MessageBoxA, NULL, addr [edi].FILE_NOTIFY_INFORMATION.FileName, offset BoxCaption, NULL 

        .elseif esi==0 
      invoke CloseHandle,hDir 
      ret 
     .endif 
     mov ecx,[edi].FILE_NOTIFY_INFORMATION.NextEntryOffset 
     .if ecx==0 
      invoke RtlZeroMemory,addr FileBuffer,sizeof FileBuffer 
      jmp ThreadProc 
     .endif 
     jmp @B 
    .endif 

    ret 
ThreadProc ENDP 

如果有人能解決上面的代碼或告訴我不同​​的代碼,它的工作將是巨大的, 謝謝

回答

1

任務的本質是操作系統特定的服務和處理通知。

如果您在彙編時遇到了這種情況,請使用高級語言(C,C++,Perl等)進行編碼並使其工作。從MSDN中找到這樣做的例子不應該很難。一旦你已經學會了如何做到這一點,那麼彙編語言必須做的事情就很清楚了。

+0

我確實有這個vb.net版本,但我仍然不知道在裝配中做什麼 – patchariadog

相關問題