|
|
#define INITGUID
#include <windows.h>
#include <stdio.h>
#include <ole2.h>
#include "sync.h"
BOOL g_fDone = FALSE; DWORD g_dwTarget = 0; SYNC_STAT* g_pStat = NULL;
DWORD WINAPI Monitor( LPVOID pV ) { for ( ;; ) { printf( "Source : %d, %s, Targets : ", g_pStat->m_dwSourceScan, g_pStat->m_fSourceComplete ? "scanned" : "scanning" ); for ( int i = 0 ; i < g_dwTarget ; ++i ) { printf( "(%d,%d), ", g_pStat->m_adwTargets[i*2], g_pStat->m_adwTargets[i*2+1] ); } printf( "\r" );
if ( g_fDone ) { break; }
Sleep( 1000 ); }
return 0; }
int __cdecl main( int argc, char*argv[] ) { IMdSync* pIf; DWORD adwErr[16]; HANDLE hThread; DWORD dwThreadId;
g_pStat = (SYNC_STAT*)LocalAlloc( LMEM_FIXED, sizeof(SYNC_STAT)+sizeof(DWORD)*2*16 ); memset ( g_pStat, '\0', sizeof(SYNC_STAT)+sizeof(DWORD)*2*16 );
CoInitializeEx( NULL, COINIT_MULTITHREADED );
if ( SUCCEEDED( CoCreateInstance( CLSID_MDSync, NULL, CLSCTX_INPROC_SERVER, IID_IMDSync, (LPVOID*)&pIf ) ) ) { g_dwTarget = 1;
hThread = CreateThread( NULL, 0, ::Monitor, NULL, 0, &dwThreadId );
pIf->Synchronize( "phillich01\x0", adwErr, 0, (LPDWORD)g_pStat );
g_fDone = TRUE;
WaitForSingleObject( hThread, INFINITE );
pIf->Release(); }
CoUninitialize();
return 0; }
|