struct CCL::IExecutableLoader

Overview

Management functions for dynmanically loaded executables. More…

#include <iexecutable.h>

struct IExecutableLoader: public CCL::IUnknown
{
    // methods

    virtual const IExecutableImage&CCL_API getMainImage () = 0;
    virtual tresult CCL_API loadImage (IExecutableImage*& image, UrlRef path) = 0;
    virtual IExecutableImage*CCL_API createImage (ModuleRef module) = 0;
    virtual IExecutableIterator*CCL_API createIterator () = 0;
    virtual void CCL_API addNativeImage (ModuleRef module) = 0;
    virtual void CCL_API removeNativeImage (ModuleRef module) = 0;

    virtual tresult CCL_API execute (
        Threading::ProcessID& processId,
        UrlRef path,
        ArgsRef args,
        int flags = 0,
        IUnknown* context = nullptr
    ) = 0;

    virtual tresult CCL_API relaunch (ArgsRef args) = 0;
    virtual tresult CCL_API terminate (Threading::ProcessID processId) = 0;

    virtual tresult CCL_API getExecutablePath (
        IUrl& path,
        Threading::ProcessID processId
    ) = 0;

    virtual tbool CCL_API isProcessRunning (UrlRef executableFile) = 0;
    virtual tresult CCL_API getModuleInfo (IAttributeList& attributes, UrlRef path) = 0;
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;

Detailed Documentation

Management functions for dynmanically loaded executables.

Methods

virtual const IExecutableImage&CCL_API getMainImage () = 0

Get image object of main executable.

virtual tresult CCL_API loadImage (IExecutableImage*& image, UrlRef path) = 0

Map executable into address space.

It will be unmapped when calling release() on the image object.

virtual IExecutableImage*CCL_API createImage (ModuleRef module) = 0

Create image object for given module reference (must be released by caller!)

virtual IExecutableIterator*CCL_API createIterator () = 0

Create iterator of loaded executables.

virtual void CCL_API addNativeImage (ModuleRef module) = 0

Register module reference (already loaded).

virtual void CCL_API removeNativeImage (ModuleRef module) = 0

Unregister module reference (no unload).

virtual tresult CCL_API execute (
    Threading::ProcessID& processId,
    UrlRef path,
    ArgsRef args,
    int flags = 0,
    IUnknown* context = nullptr
) = 0

Executes another program with given arguments and options (see System::ExecutionFlags).

virtual tresult CCL_API relaunch (ArgsRef args) = 0

Start new instance of main executable.

virtual tresult CCL_API terminate (Threading::ProcessID processId) = 0

Terminate process with given identifier.

virtual tresult CCL_API getExecutablePath (
    IUrl& path,
    Threading::ProcessID processId
) = 0

Get the path to the main module of a process.

virtual tbool CCL_API isProcessRunning (UrlRef executableFile) = 0

Determine if a process is currently running.

virtual tresult CCL_API getModuleInfo (IAttributeList& attributes, UrlRef path) = 0

Get platform version information for module.