/************************************************************************ Copyright (c) 2000-2000 Microsoft Corporation Module Name : bitsenable.cpp Abstract : Revision History : Notes: ***********************************************************************/ #define INITGUID #include #include #include #include #include #include #include #include #include // {A55E7D7F-D51C-4859-8D2D-E308625D908E} DEFINE_GUID(CLSID_CBITSExtensionSetup, 0xa55e7d7f, 0xd51c, 0x4859, 0x8d, 0x2d, 0xe3, 0x8, 0x62, 0x5d, 0x90, 0x8e); void PrintHelp() { wprintf( L"USAGE: bitsenable command\n" L"The following commands are available:\n" L"\n" L"/?\n" L"/HELP\n" L"/ENABLE virtual-directory\n" L"/DISABLE virtual-directory\n" L"\n" ); exit(0); } void CheckError( HRESULT Hr ) { if (FAILED(Hr)) { wprintf(L"Error 0x%8.8X\n", Hr ); exit(Hr); } } int _cdecl wmain( int argc, WCHAR**argv ) { bool Enable; if ( argc < 2 ) PrintHelp(); if ( _wcsicmp( argv[1], L"/?" ) == 0 ) PrintHelp(); else if ( _wcsicmp( argv[1], L"/HELP" ) == 0 ) PrintHelp(); else if ( _wcsicmp( argv[1], L"/ENABLE" ) == 0 ) Enable = true; else if ( _wcsicmp( argv[1], L"/DISABLE" ) == 0 ) Enable = false; else { wprintf( L"Unknown command.\n"); PrintHelp(); } if ( argc != 3 ) { wprintf( L"Invalid number of arguments.\n"); exit(1); } CheckError( CoInitializeEx( NULL, COINIT_MULTITHREADED ) ); IBITSExtensionSetup *ExtensionSetup = NULL; #if 0 BSTR TaskName = NULL; ITask *Task = NULL; LPWSTR Parameters = NULL; CheckError( ADsGetObject( BSTR( argv[2] ), __uuidof( *ExtensionSetup ), (void**)&ExtensionSetup ) ); CheckError( ExtensionSetup->GetCleanupTaskName( &TaskName ) ); wprintf( L"Cleanup Item name %s\n", (LPCWSTR)TaskName ); CheckError( ExtensionSetup->GetCleanupTask( __uuidof( ITask ), (IUnknown**)&Task ) ); wprintf( L"ITask pointer, %p\n", Task ); if ( Task ) { CheckError( Task->GetParameters( &Parameters ) ); wprintf( L"Task parameters %s\n", Parameters ); } exit(0); #else IBITSExtensionSetupFactory *ExtensionSetupFactory = NULL; REFIID CLSID = __uuidof( BITSExtensionSetupFactory ); // CLSID_CBITSExtensionSetup; //; CheckError( CoCreateInstance( CLSID, NULL, CLSCTX_INPROC_SERVER, __uuidof(IBITSExtensionSetupFactory), (void**)&ExtensionSetupFactory ) ); CheckError( ExtensionSetupFactory->GetObject( BSTR( argv[2] ), &ExtensionSetup ) ); if ( Enable ) { CheckError( ExtensionSetup->EnableBITSUploads() ); wprintf( L"BITS upload enabled for virtual directory %s\n", argv[2] ); } else { CheckError( ExtensionSetup->DisableBITSUploads() ); wprintf( L"BITS upload disabled for virtual directory %s\n", argv[2] ); } ExtensionSetup->Release(); ExtensionSetupFactory->Release(); exit(0); #endif }