2012-10-11 3 views
0

dst에 복사하는 DLL 기능 Copy(const char** srcFiles, const char* dst)이 있습니다. 예를 들어 0.01 초마다해야합니다. 복사 진행 정보 (퍼센트로)를 내 기능 CopyProgress에 보냅니다. 문제는 내가 Copy 함수 코드를 변경할 수 없다는 것입니다. 그래서 다른 스레드에서이 함수를 실행하는 것이 좋습니다. 그러나 나는 멀티 스레딩의 초보자이며 이것을 어떻게 할 수 있는지 상상할 수 없습니다.다른 스레드에서 DLL 함수를 호출해야합니다.

어떤 아이디어, 요령? 고맙습니다.

+1

일반적으로 멀티 스레딩은 모든 프로그래밍 문제에 대한 해결책이 아니며 종종 과용됩니다. 'Copy'를 변경할 수없고 진행 훅/콜백을위한 수단이 없다면 할 수있는 일이 없습니다. –

답변

0

우선, Copy을 변경하여 콜백을 통해 진행 정보를 제공해야합니다. 그러나 Copy을 변경하지 않고 절대적으로 수행해야하는 경우 CreateThread을 사용하여 다른 스레드에서 실행 한 다음 대상 디렉토리를 주기적으로 스캔하여 복사량을 확인해야합니다 (0.01 초마다이 방법에 실용적이지 않을 수 있음). -이 정도의 세밀도가 필요한 경우 Copy에 몇 가지 후크를 추가해야합니다.

+0

FindXXXXChangeNotification API는 bdonian이 말하는 것을 수행하는 데 큰 도움이 될 것입니다. 설정하는 것은 간단하지 않지만 파일 복사 모니터링에 관한 OP 질문의 본질이 그의 구제 금융 일 수 있습니다. 일반적인 해결책에 대한 질문 이었지만, OP는 SOL 일 가능성이 높지만 파일 복사 (실제로 복사)이기 때문에 Windows 시스템 호출을 이용하여 Windows를 호출 할 수 있습니다. – WhozCraig

관련 문제