Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999 Microsoft Corporation
//
// Module Name:
// ScriptResource.h
//
// Description:
// CScriptResource class header file.
//
// Maintained By:
// gpease 14-DEC-1999
//
//////////////////////////////////////////////////////////////////////////////
#pragma once
//
// Forward declarations
//
class CScriptResource;
typedef enum _EMESSAGE { msgUNKNOWN = 0, msgOPEN, msgCLOSE, msgONLINE, msgOFFLINE, msgTERMINATE, msgLOOKSALIVE, msgISALIVE, msgDIE, msgMAX } EMESSAGE;
//
// CreateInstance
//
CScriptResource * CScriptResource_CreateInstance( LPCWSTR pszNameIn, HKEY hkeyIn, RESOURCE_HANDLE hResourceIn );
//
// Class CScriptResource
//
class CScriptResource : public IUnknown { private: // data
LONG m_cRef;
LPWSTR m_pszName; LPWSTR m_pszScriptFilePath; LPWSTR m_pszScriptEngine; HKEY m_hkeyParams; IActiveScriptSite * m_pass; IDispatch * m_pidm; IActiveScriptParse * m_pasp; IActiveScript * m_pas;
HANDLE m_hThread; DWORD m_dwThreadId; HANDLE m_hEventWait; HANDLE m_hEventDone; LONG m_lockSerialize;
// Task stuff
EMESSAGE m_msg; // task to do.
HRESULT m_hr; // result of doing m_msg.
// the following don't need to be freed, closed or released.
RESOURCE_HANDLE m_hResource;
DISPID m_dispidOpen; DISPID m_dispidClose; DISPID m_dispidOnline; DISPID m_dispidOffline; DISPID m_dispidTerminate; DISPID m_dispidLooksAlive; DISPID m_dispidIsAlive;
BOOL m_fLastLooksAlive;
private: // methods
CScriptResource( ); ~CScriptResource( ); HRESULT Init( LPCWSTR pszNameIn, HKEY hkeyIn, RESOURCE_HANDLE hResourceIn ); LPWSTR MakeScriptEngineAssociation( IN LPCWSTR pszScriptFileName ); HRESULT DoConnect( IN LPWSTR szScriptFilePath = NULL ); void DoDisconnect( );
static DWORD WINAPI S_ThreadProc( LPVOID pParam );
STDMETHOD(LogError)( HRESULT hrIn ); STDMETHOD(LogScriptError)( EXCEPINFO ei );
HRESULT OnOpen( ); HRESULT OnClose( ); HRESULT OnOnline( ); HRESULT OnOffline( ); HRESULT OnTerminate( ); HRESULT OnLooksAlive( ); HRESULT OnIsAlive( );
HRESULT WaitForMessageToComplete( EMESSAGE msgIn );
public: // methods
friend CScriptResource * CScriptResource_CreateInstance( LPCWSTR pszNameIn, HKEY hkeyIn, RESOURCE_HANDLE hResourceIn );
// IUnknown
STDMETHOD(QueryInterface)( REFIID riid, LPVOID *ppv ); STDMETHOD_(ULONG, AddRef)(void); STDMETHOD_(ULONG, Release)(void);
// Publics
STDMETHOD(Open)( ); STDMETHOD(Close)( ); STDMETHOD(Online)( ); STDMETHOD(Offline)( ); STDMETHOD(Terminate)( ); STDMETHOD(LooksAlive)( ); STDMETHOD(IsAlive)( );
}; // class CScriptResource
|