windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/wp/sync/test.cxx
2020-09-26 16:20:57 +08:00

72 lines
1.5 KiB
C++

#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;
}