yyytctctc的专栏

// monitor.cpp : 定义控制台应用程序的入口点。//#include "StdAfx.h"#include <windows.h>#include <stdio.h>#include <conio.h>#include <string.h>#include <iostream>using namespace std;typedef struct parm{char dir[128];HANDLE hDir;} THREAD_PARAM;char DVDpath[3];DWORD WINAPI thread(LPVOID lParam){ THREAD_PARAM *Par=(THREAD_PARAM *)lParam;char notify[1024];FILE_NOTIFY_INFORMATION *pnotify=(FILE_NOTIFY_INFORMATION *)notify;char AnsiChar[3];wchar_t UnicodeChar[2];DWORD cbBytes;printf("Watch [%s] start.\n",Par->dir);while(true){if(ReadDirectoryChangesW(Par->hDir,&notify,sizeof(notify),true,FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME|FILE_NOTIFY_CHANGE_ATTRIBUTES|FILE_NOTIFY_CHANGE_SIZE|FILE_NOTIFY_CHANGE_LAST_WRITE|FILE_NOTIFY_CHANGE_LAST_ACCESS|FILE_NOTIFY_CHANGE_CREATION|FILE_NOTIFY_CHANGE_SECURITY,&cbBytes,NULL,NULL)){switch(pnotify->Action){case FILE_ACTION_ADDED:printf("Directory/File added – ");break;case FILE_ACTION_REMOVED:printf("Directory/File removed – ");break;case FILE_ACTION_MODIFIED:printf("Directory/File modified – ");break;case FILE_ACTION_RENAMED_OLD_NAME:printf("Directory/File old name – ");break;case FILE_ACTION_RENAMED_NEW_NAME:printf("Directory/File new name – ");break;}printf("%s/",Par->dir);for(DWORD i=0;i<pnotify->FileNameLength/2;i++){UnicodeChar[0]=pnotify->FileName[i];UnicodeChar[1]=0;ZeroMemory(AnsiChar,3);WideCharToMultiByte(CP_ACP,0,UnicodeChar,-1,AnsiChar,3,NULL,NULL);printf("%s",AnsiChar);}printf("\n");}}}int main(){ int DVDnum =0; char DrName[3]={0}; DrName[1]=’:’;DrName[2]=’\\’;for(char DrName2 = ‘A’;DrName2<=’Z’;DrName2 = DrName2 +1){ DrName[0]=DrName2; DrName[3]=’\0′; UINT nRes = GetDriveType(DrName); switch(nRes) { case DRIVE_UNKNOWN: // printf(_T("DRIVE_UNKNOWN/r/n")); break; case DRIVE_NO_ROOT_DIR: // printf(_T("DRIVE_NO_ROOT_DIR/r/n")); break; case DRIVE_REMOVABLE: // printf(_T("DRIVE_REMOVABLE/r/n")); break; case DRIVE_FIXED: // printf(_T("DRIVE_FIXED/r/n")); break; case DRIVE_REMOTE: // printf(_T("DRIVE_REMOTE/r/n")); break; case DRIVE_CDROM: // printf(_T("DRIVE_CDROM/r/n")); DVDnum = DrName[0]-‘A’; break; case DRIVE_RAMDISK: // printf(_T("DRIVE_RAMDISK/r/n")); break; default: break; }} char DVD = ‘A’+DVDnum;cout<<DVD<<"盘为DVD"<<endl; DVDpath[0]=’A’+DVDnum;DVDpath[1]=’:’;DVDpath[2]=’\\’;DVDpath[3]=’\0′;DWORD ThreadId;THREAD_PARAM Par;HANDLE hThread;lstrcpyn(Par.dir,"C:\\Tmon",127);hThread=CreateThread(NULL,0,thread,(LPVOID *)&Par,0,&ThreadId);while(true){Par.hDir=CreateFile(Par.dir, // pointer to the file nameFILE_LIST_DIRECTORY, // access (read/write) modeFILE_SHARE_READ|FILE_SHARE_WRITE, // share modeNULL, // security descriptorOPEN_EXISTING, // how to createFILE_FLAG_BACKUP_SEMANTICS, // file attributesNULL // file with attributes to copy);if(Par.hDir== INVALID_HANDLE_VALUE){//printf("Open Directory[%s] fail.\n",Par.dir);SuspendThread(hThread);}else if(Par.hDir){//printf("Open Directory [%s] successfully.\n",Par.dir);ResumeThread(hThread);}//CloseHandle(Par.hDir);//Sleep(1000);// else// {// printf("Open Directory [%s] failed.\n",Par.dir);// SuspendThread(hThread);// }}// if(hThread)// {// printf("CreateThread OK.\n");// printf("Press <q> to quit.\n");// while(getch()!=’q’);// TerminateThread(hThread,0);// WaitForSingleObject(hThread,1000);// CloseHandle(Par.hDir);// }// else// {// CloseHandle(Par.hDir);// printf("CreateThread failed, the program exit.\n");// }}

,悠然享受和大自然融合之乐。

yyytctctc的专栏

相关文章:

你感兴趣的文章:

标签云: