, , , , , . , - Microsoft Visual Basic, Scripting Edition (VBScript), Active Server Pages, Web- , , . , , , , VBScript- C++. .
TraceSrv, , , , . , , , , , , .
TraceSrv . , . , , . , , .
TraceSrv, , . :
1. TraceSrv , , , C++, Visual Basic, Borland Delphi, Visual Basic for Applications, Java, Jscript VBScript.
2. TraceSrv .
3. TraceSrv , .
4. , , ().
5. (trace viewer applications) .
6. () :
( ) ;
;
(ID) , ;
, ;
, TraceSrv.
7. TraceSrv, . 6 , , ( ) .
, TraceSrv - . , (DLL), . , Web-, VBScript Java. , VBScript , - VBScript DLL. , ,
, , VBScript createObject; -, a VBScript . - , TraceSrv -.
- . - +, " ", +- Microsoft Win32. , - .
+- ( DCOM2) - Microsoft Windows NT 4 . ( ), - ( ). , +- (ATL3), Microsoft Visual C++ 6 , .
, TraceSrv. TraceSrv (itrace) IDL-4TRACESRV.IDL, 11-1. TraceSrv Trace iTrace, , BSTR (. bstrText ).
COM+ () Microsoft (MTS Microsoft Transaction Server). .
DCOM (Distributed Component Object Model) . .
3ATL ActiveX Template Library. .
IDL- , ATL -. ( ) -, . IDL- C++. .
11-1.TRACERV.IDL
/*- - - - - - - - - - - - - - - - - - - - - - - - - -
"Debugging Applications" (Microsoft Press)
Copyright (c) 1997-2000 John Robbins All rights reserved.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - */
import "oaidl.idl";
import "ocidl.idl";
[
object ,
uuid ( 4D42AOOC-7774-11D3-9F57-OOC04FA34F2C ) ,
dual ,
helpstring ( "ITrace Interface" ) ,
pointer_default ( unique )
]
interface ITrace : IDispatch
{
[ id ( 1 ) ,
helpstring ( "method Trace" ) ]
HRESULT Trace ( [ in ] BSTR bstrText ) ;
[ id ( 2 ) ,
helpstring ( "method FullTrace" ) ]
HRESULT FullTrace ( [ in ] BSTR bstrText , [ in ] long dwPID ) ;
[ propget, id ( 3 ) ,
helpstring ( "property ShowTimeStamps" ) ]
HRESULT ShowTimeStamps ( [ out, retval ] VARIANT_BOOL *pVal ) ;
[ propput, id ( 3 ) ,
helpstring ( "property ShowTimeStamps" ) ]
HRESULT ShowTimeStamps ( [ in ] VARIANT_BOOL newVal ) ;
[ propget,
id ( 4 ) ,
helpstring ( "property ShowTraceAsODS" ) ]
HRESULT ShowTraceAsODS ( [ out, retval ] VARIANT_BOOL *pVal ) ;
[ propput,
id ( 4 ) ,
helpstring ( "property ShowTraceAsODS" ) ]
HRESULT ShowTraceAsODS ( [ in ] VARIANT_BOOL newVal ) ;
[ propget,
id ( 5 ) ,
helpstring ( "property ShowItemNumber" ) ]
HRESULT ShowItemNumber ( [ out, retval ] VARIANT_BOOL *pVal ) ;
[ propput,
id ( 5 ) ,
helpstring ( "property ShowItemNumber" ) ]
HRESULT ShowItemNumber ( [ in ] VARIANT_BOOL newVal ) ;
[ propget,
id ( 6 ) ,
helpstring ( "property ShowPID" ). ]
HRESULT ShowPID ( [ out, retval ] VARIANT_BOOL *pVal ) ;
[ propput,
id ( 6 ) ,
helpstring ( "property ShowPID" ) ]
HRESULT ShowPID ( [ in ] VARIANTJ30OL newVal ) ;
[ propget,
id ( 7 ) ,
helpstring ( "property AddCRLF" ) ]
HRESULT AddCRLF ( [ out, retval ] VARIANT_BOOL *pVal ) ;
[ propput,
id ( 7 ) ,
helpstring ( "property AddCRLF" ) ]
HRESULT AddCRLF ( [ in ] VARIANT_BOOL newVal ) ;
} ;
[
uuid ( 4D42AOOO-7774-11D3-9F57-OOC04FA34F2C ) ,
version ( 1.0 ) ,
helpstring ( "TraceSrv 1.0 Type Library" ) ]
library TRACESRVLib
{
importlib ( "stdole32.tlb" ) ;
importlib ( "stdole2.tlb" ) ;
[
uuid ( 4D42AOOE-7774-11D3-9F57-OOC04FA34F2C ) ,
helpstring ( "_ITraceEvents Interface" )
]
dispinterface _ITraceEvents
{
properties: methods:
[ id ( 1 ) ,
helpstring ( "method TraceEvent" ) ] HRESULT TraceEvent ( BSTR bstrText ) ;
[ id ( 2 ) ,
helpstring ( "method ChangeShowTimeStamps" ) ]
HRESULT ChangeShowTimeStamps ( VARIANT_BOOL bNewVal ) ;
[ id ( 3 ) ,
helpstring ( "method ChangeShowTraceAsODS" ) ]
HRESULT ChangeShowTraceAsODS ( VARIANT_BOOL bNewVal ) ;
[ id ( 4 ) ,
helpstring ( "method ChangeShowItemNumber" ) ]
HRESULT ChangeShowItemNumber ( VARIANT_BOOL bNewVal ) ;
[ id ( 5 ) ,
helpstring ( "method ChangeShowPID" ) ]
HRESULT ChangeShowPID ( VARIANT_BOOL bNewVal ) ;
[ id ( 6 ) ,
helpstring ( "method ChangeAddCRLF" ) }
HRESULT ChangeAddCRLF ( VARIANT__BOOL bNewVal ) ;
} ;
[
uuid ( 4D42AOOD-7774-11D3-9F57-OOC04FA34F2C ) ,
helpstring ( "Trace Class" )
]
coclass Trace
{
[ default ] interface ITrace ;
[ default, source ] dispinterface _ITraceEvents ;
} ;
} ;
, iTraceEvents. ITrace 1TraceSrv, ( . 6 ) ( , , TraceSrv, ). TraceSrv , , TraceView. ( ) , , TraceSrv.
AppWizard ( - ATL) 90% +-. TraceSrv . TraceSrvTRACE.H TRACE.CPP -. , , . CTr: :ProcessTrace ( ) 11-2.
, propput propget IDL- ( Visual Basic), , . .
11-2. CTr: :ProcessTrace
HRESULT CTrace :: ProcessTrace ( BSTR bstrText , long dwPID)
{
// !
ASSERT ( this ) ;
ASSERT ( NULL != bstrText ) ;
// . ,
// .
int ilnputLen = 0 ;
if ( NULL == bstrText )
{
return ( Error ( IDS_NULLSTRINGPASSED ,
GUID_NULL ,
E_INVALIDARG ) ) ;
}
// bstrText .
// , .
ASSERT ( FALSE = IsBadReadPtr ( bstrText , sizeof ( BSTR ) ) ) ;
ASSERT ( L';\0'; != *bstrText );
if ( ( TRUE == IsBadReadPtr ( bstrText , sizeof ( BSTR ) ) ) ||
( L';\0'; == *bstrText ) )
{
return ( Error ( IDS_INVALIDSTRING , GUID_NULL
E_INVALIDARG ) ) ;
}
// , ,
// ( ).
iInputLen = IstrlenW ( bstrText ) ;
// ,
// .
UINT uiSize = ( ilnputLen * sizeof ( OLECHAR ) ) +
k_SIZE_FULLFORMATBYTES ;
// lock, m_cOutput.
// Grab the lock to protect the m_cOutput class.
ObjectLock lock ( this ) ;
// ProcessTrace (m_lBuffSize - 0),
// if- ,
if ( uiSize >= m_cOutput.BufferSize ( ) )
{
// .
m_cOutput.Free ( ) ;
// ,
. // ,
// .
// .
// 2 ,
// .
// Unicode, // .
UINT uiAllocSize = uiSize * 2 ;
// , .
// 2 ,
// if- .
if ( k_MIN_TRACE_BUFF_SIZE > uiAllocSize )
{
uiAllocSize = k_MIN_TRACE_BUFF_SIZE ;
}
OLECHAR * pTemp = m_cOutput.Allocate ( uiAllocSize ) ;
ASSERT ( NULL != pTemp ) ;
if ( NULL == pTemp )
{
return ( Error ( IDSJXJTOFMEMORY ,
GUID_NULL , EJDUTOFMEMORY ) ) ;
}
}
// , .
// 1 .
m_dwCurrCount++ ;
if ( 100000 == m_dwCurrCount )
{
m_dwCurrCount = 0 ;
}
//
OLECHAR * pCurr = m__cOutput.GetDataBuffer ( ) ;
if ( -1 = m_vbShowItemNumber )
{
pCurr += wsprintfW ( pCurr , L"%05d " , m_dwCurrCount ) ;
}
if ( -1 == m_vbShowTimeStamps )
{
// .
// ( , !).
// 24- .
int iLen = GetTimeFormatW ( LOCALE_USER_DEFAULT ,
LOCALE_NOUSEROVERRIDE |
TIME_FORCE24HOURFORMAT |
TIME_NOTIMEMARKER ,
NULL
NULL ,
pCurr ,
k_SIZE_TIME ) ; ASSERT ( 0 != iLen ) ;
// ,
// NULL- .
pCurr 4= ( iLen - I ) ;
11 GetTimeFormat ,
// .
*pCurr = L' ' ;
pCurr++ ;
}
if ( -1 == m_vbShowPID )
{
pCurr += wsprintfW ( pCurr , L"[%04X] " , dwPID ) ;
}
//
// NULL- .
IstrcpynW ( pCurr , bstrText , IlnputLeri + 1 ) ;
// pCurr, NULL-.
pCurr += ilnputLen ;
// , CRLF ,
if ( -1 == m_vbAddCRLF )
{
if ( ( L';\xOD'; != *( pCurr _ 2 ) ) ||
( L';\xOA'; != *( pCurr _ 1 ) ) )
{
*( pCurr ) = L';\xOD;;
*( pCurr + 1 } = L';\xOA'; ;
pCurr += 2 ;
*pCurr = YL';\0'; ;
}
}
// ?
if ( -1 == m_vbShowTraceAsODS )
{
OutputDebugStringW ( (OLECHAR*) m_cOutput ) ;
}
// .
m_cOutput.GetStringByteLength ( ) ;
// .
#ifdef _DEBUG
HRESULT hr =
#endif
Fire_TraceEvent ( m_cOutput ) ;
#ifdef _DEBUG
if ( ! SUCCEEDED ('hr ) )
{
ASSERT ( SUCCEEDED ( hr ) ) ;
TRACE ( ( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" ) ) ;
TRACE ( _T ( "TraceSrv FireJTraceEvent failed!!\n" ) ) ;
TRACE ( ( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" ) ) ;
}
#endif
return ( S_OK ) ;
}
, TraceSvr . Implement Connection Point ClassView IconnectionPoint . ATL Proxy Generator Microsoft Visual C++ 5, .
BSTR . , , , . : : ProcessTrace TRACE.CPP , , TraceSrv. CComBSTR. , Sysxxxstring. ccomBSTR , ( TraceSrv), , .
, CFastBSTR, BSTR . FASTBSTR.H. (DWORD) GetstringByteLength. , BSTR, , . , CFastBSTR , Sysxxxstring.
: (debug) (release) , Unicode. TraceSrv Windows 98. 5, Windows 2000, , Unicode. TraceSrv Windows 2000, Windows 98, , , Unicode-.
, TraceSrv, TraceSrv. , Visual C++ 6, -, COM AppWizard (ATL), TraceSrv. TraceSrv ATL-, TraceSrv -. TraceSrv Win32, -service. , , Win32 ( SoftICE) . , "--", (. . ) net stop tracesrv , . , TraceSrv , .
TraceSrv , , (. . TraceSrv +-). , , TraceSrv , , . , , TraceSrv . - , ( -). Visual Basic- "" Visual C++. , "" . , , VB-, , TraceSvr , VB-.
TraceSrv , DCOMCNFG.EXE, . , +- . +- +- . , , . 11.1 , , TraceSrv.
11.1. DCOMCNFG
Default Properties DCOMCNFG |
Enable Distributed COM () On This Computer |
Default Authentication Level Connect |
Default Impersonation Level Identify |
Default Security DCOMCNFG.EXE |
Default Access Permissions Everyone (Bee) Allow Access ( ) INTERACTIVE Allow Access NETWORK Allow Access SYSTEM Allow Access |
Default Launch Permissions Administrators Allow Launch () ( ) Everyone Allow Launch INTERACTIVE Allow Launch NETWORK Allow Launch SYSTEM Allow Launch |
Default Configuration Administrators Full Control Permissions ( ) CREATOR OWNER Full Control Everyone Read () INTERACTIVE Special Access ( . Create Link, Write DAC Write Owner) |
SYSTEM Full Control |
TraceSrv ( , -RegServer ) DCOMCNFG, TraceSrv ( Trace Class Windows 98) Properties. Location. TraceSrv , Run Application On This Computer . TraceSrv , Run Application On The Following Computer . ( , DCOMCNFG , .) , , Security .
- DCOMCNFG (security) (identity), TraceSrv , -unRegServer , TraceSrv (. ). (registration) "" (unregistration) ATL.
, , TraceSrv, , , , . , , TraceSrv, .
, TraceSrv, . , TraceSrv. , , , TraceSrv, iirace, .
, , . , iciassFactory:: Createinstance itrace. Createinstance, , , . , ATL, ccomciassFactorySingieton, , , , . DECLARE_CLASSFACTORY_SINGLETON (CTrace), TRACE.H. , ATL.
, TraceSrv, , ccomBSTR . CFastBSTR, , . ( CTrace: :ProcessTrace), 11-2. TraceSrv ASSERT, 3, - TraceSrv , setoiagAssertoptions .
, TraceSrv . Fire_TraceEvent, Implement Connection Point IDE, - . Fire_TraceEvent 11-3. .
11-3. Fire_ TraceEvent
HRESULT Fire_TraceEvent( BSTR bstrText )
{
CComVariant varResult;
* = static_cast<T*>( this );
int nConnectionlndex;
CComVariant* pvars = new CComVariant[1];
int nConnections = m_vec.GetSize( );
for ( nConnectionlndex = 0;
nConnectionlndex < nConnections; nConnection!ndex++ )
{
pT->Lock();
CComPtr<IUnknown> sp = m_vec.GetAt( nConnectionlndex );
pT->Unlock( );
IDispatch* pDispatch = reinterpret_cast<IDispatch*>( sp.p );
if (pDispatch != NULL)
{
VariantClear( SvarResult );
pvars[0] = bstrText;
DISPPARAMS disp = { pvars, NULL, 1, 0 };
pDispatch->Invoke( 0xl,
IID_NULL,
LOCALE_USER_DEFAULT,
DISPATCH_METHOD,
&disp, SvarResult,
NULL, NULL );
}
}
delete[] pvars;
return varResult.scode;
}
, , TraceSrv . Fire_rraceEvent, , for , . varResuit.scode, for. , , . Fire_rraceEvent (-, /GZ ).
. , Implement Connection Point, (TRACESRVCP.H) CORRECTEDTRACESRVCP.H varResult varResuit.scode s . , , , Visual C++ IDispatch:: invoke. Visual C++ . , TraceSrv .
, TraceView, Win32, TraceSrv .
TraceSrv , , , . TraceView Visual Basic, . , , .
TraceView , , , , , , , . , . , , LoadResStrings ( LoadFormResStrings) , , . TraceView . TraceView TraceSrv . TraceView TraceSrv , Trace View TraceSrv , . TraceView TraceSrv, TraceSrv , +-. TraceView TraceSrv, +-, , VB- "Run-time error -2147023071 (80070721) Automation Error" ( -2147023071 (80070721) ). WINERROR.H (ID) : RPC_S_SEC_PKG_ERROR, "A ' security package specific error occurred" ( ).
, MSDN, , WINERROR.H . , , VB- TraceSrv , Trace- withEvents. withEvents, RPC_S_SEC_PKG_ERROR , , (security) TraceSrv.
" " , , - . withEvents iconnectionPoint, , , . , . TraceSrv , TraceView, , , , TraceSrv , TraceView. TraceSrv +-, a TraceView , , . , Windows NT Workstation , "John" . Q158508 Knowledge Base (" -") Windows NT Workstation " ". , Windows NT Workstation, ASCII-, , DCOM NT (, ) , ".
, "Bob", TraceSrv , TraceView , , "John", RPC_S_SEC_PKG_ERROR. TraceSrv - I .
: , . Win32 . , TraceSrv , - iconnectionPoint, . , +- , . CoInitializeSecurity, , Coinitiaiize. TraceView, Visual Basic, CoInitializeSecurity . CoInitializeSecurity sub Main, 0x80010119 (RPC_E_ TOO_LATE), : "Security must be initialized before any interfaces are marshaled or unmarshaled. It cannot be changed once initialized." ( 1 . .) , Visual Basic , .
. . .
Visual Basic . 1 DCOMCNFG Default Authentication Level I Default Properties None. , . : , TraceSrv, , , Services. TraceSrv ( ) Start Service, Properties, Properties TraceSrv. Log On Log On As This Account , TraceSrv. . "COM Security Frequently Asked Questions" ( -): " Localsystem ... NT, , , DCOM RPC1-". , , TraceView . , , TraceSrv. , Build, (build) .
TraceSrv . - TraceSrv , . 11-4 TraceSrv VBScript, , TraceSrv. C++ , TraceSrv, BSTR. DCOMTEST.CPP 11-5.
RFC Remote Procedure Call, ( , ; - ; , DCOM, CORBA, Java RMI.
11-4. TraceSrv VBScript
<SCRIPT LANGUAGE="VBScript"><!- -
Dim g_TraceObj
set g_TraceObj = CreateObject ( "TraceSrv.Trace.1" )
g_TraceObj.Trace( "This is a test of the...?" + vbCRLF )
Sub ButtonOne_OnClick
g_TraceObj.Trace ( "Hey! I'm Button One!" + vbCRLF )
End Sub
Sub ButtonTwo__OnClick
g_TraceObj.Trace ( "VBScript is dangerous!" + vbCRLF )
End Sub
- -></SCRIPT>
11-5. TraceSrv C++ (DCOMtESf .)
void main ( void )
{
HRESULT hr ;
ITrace * IpTrace ;
lUnknown * IpUnknown ;
// +.
hr = CoInitializeEx ( NULL , COINIT_APARTMENTTHREADED ) ;
if ( FAILED ( hr ) )
{
printf ( "Unable to initialize COM+\n" ) ;
return ;
}
hr = CoCreatelnstance ( CLSIDJTrace ,
NULL , CLSCTX_SERVER , IID_IUnknown , (LPVOID*)SlpUnknown } ;
if ( FAILED ( hr ) )
{
LPVOID IpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE__FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE__INSERTS,
NULL,
hr,
MAKELANGID ( LANG_NEUTRAL, SUBLANG__DEFAULT ),
(LPTSTR) SlpMsgBuf,
0,
NULL ) ;
printf ( "CoCreatelnstanceEx failed: Ox%08X\n" , hr ) ;
printf ( "FormatMessage returned: %s\n" , IpMsgBuf ) ;
return ;
}
hr = lpUnknown->Query!nterface ( IID_ITrace ,
(LPVOID*)&lpTrace ) ;
lpUnknown->Release ( ) ;
if ( FAILED ( hr } )
{
LPVOID IpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL,
hr,
MAKELANGID ( LANG_NEUTRAL, SUBLANG_DEFAULT ),
(LPTSTR) SlpMsgBuf, 0,
NULL );
printf ( "Querylnterface failed: Ox%08X\n" , hr ) ;
printf { "FormatMessage returned: %s\n" , IpMsgBuf ) ;
return ;
}
OLECHAR * pszTemp ;
pszTemp = SysAllocString ( OLESTR ( "Hello from a C++ program!!!" ) ); ,
lpTrace->Trace ( pszTemp ) ;
SysFreeString ( pszTemp ) ;
lpTrace->Release ( ) ;
CoUninitialize ( ) ;
}
TraceSrv, , , . TraceSrv , TraceSrv , Windows 2000. -, . , - , , , . /, , , , .
TraceSrv . .
10.11.2021 - 12:37: - Personalias -> WHO IS WHO - - _. 10.11.2021 - 12:36: - Conscience -> . ? - _. 10.11.2021 - 12:36: , , - Upbringing, Inlightening, Education -> ... - _. 10.11.2021 - 12:35: - Ecology -> - _. 10.11.2021 - 12:34: , - War, Politics and Science -> - _. 10.11.2021 - 12:34: , - War, Politics and Science -> . - _. 10.11.2021 - 12:34: , , - Upbringing, Inlightening, Education -> , - _. 10.11.2021 - 09:18: - New Technologies -> , 5G- - _. 10.11.2021 - 09:18: - Ecology -> - _. 10.11.2021 - 09:16: - Ecology -> - _. 10.11.2021 - 09:15: , , - Upbringing, Inlightening, Education -> - _. 10.11.2021 - 09:13: , , - Upbringing, Inlightening, Education -> - _. |