
Title: Eco.InterfaceBus1 Software Component Specification
USPD: US.ECO.00015-01 90
Component Name: Eco.InterfaceBus1
Short Description (max 300 char.): implements components registration in kernel, components discovery and calls marshaling
Component Use Category: MULTIPURPOSE
Component Type: KERNEL
CID: 00000000000000000000000042757331
Marketplace URL: https://ecoos.dev/product/7d71eccc-c82a-4181-bf15-045230ab7245
Status: Draft
Modified Date: November 8, 2021
Version: 1.0
Tags: KERNEL, INTERFACE BUS, COMMUNICATION, BUS
| Authors | Company |
|---|---|
| Vladimir Bashev | PEERF |
Table of Contents
2. Eco.InterfaceBus1 Component
3. IEcoInterfaceBus1 Interface
3.1. IEcoInterfaceBus1 IDL descriptor
3.1.3. RegisterComponent function
3.1.4. UnRegisterComponent function
3.1.5. QueryComponent function
4. IEcoInterfaceBus1NetExt Interface
4.1. IEcoInterfaceBus1NetExt IDL descriptor
4.1.3. QueryComponent function
5. IEcoInterfaceBus1MemExt Interface
5.1. IEcoInterfaceBus1MemExt IDL
5.1.3. set_ExpandPool function
6. IEcoInterfaceBus1FileExt Interface
6.1. IEcoInterfaceBus1FileExt IDL
6.1.3. set_SearchPath function
6.1.4. get_SearchPath function
6.1.5. RegisterComponent function
6.1.6. QueryComponent function
Appendix A: Sample code and Training programs
1. Overview
This document describes the requirements for the implementation of the Eco.InterfaceBus1 component. (Component)
1.1. Introduction
Description.
1.2. Notes
- Keywords
1.3. Links
This paragraph contains links to the component on marketplace and to other information useful to better understand this document:
Available in Marketplace at url: https://ecoos.dev/product/7d71eccc-c82a-4181-bf15-045230ab7245
2. Eco.InterfaceBus1 Component
The Eco.InterfaceBus1 component is a part of EcoOS microkernel and designated for other components registration in the OS kernel, components discovery and calls marshaling. Interface bus will provide components with System Interface pointer of a generation, corresponding to the generation of calling component.
The component has the following features: TBA
3. IEcoInterfaceBus1 Interface
3.1. IEcoInterfaceBus1 IDL descriptor
import "IEcoBase1.idl"
[
object,
uguid(00000000-0000-0000-0000-A00000000101),
]
interface IEcoInterfaceBus1 : IEcoUnknown {
int16_t Init ([in] void);
int16_t InitWith ([in] void* heapStartAddress, [in] uint32_t size);
int16_t RegisterComponent ([in] const UGUID* rcid, [in] IecoUnknown* pIFactory);
int16_t UnRegisterComponent ([in] const UGUID* rcid);
int16_t QueryComponent ([in] const UGUID* rcid, [in] IEcoUnknown* pIUnkOuter [in] const UGUID* riid, [out] voidptr_t* ppv);
}3.1.1. Init function
The function
3.1.2. InitWith function
The function
3.1.3. RegisterComponent function
The function
3.1.4. UnRegisterComponent function
The function
3.1.5. QueryComponent function
The function
4. IEcoInterfaceBus1NetExt Interface
4.1. IEcoInterfaceBus1NetExt IDL descriptor
import "IEcoBase1.idl"
[
object,
uguid(00000000-0000-0000-0000-A00300000101),
]
interface IEcoInterfaceBus1NetExt : IEcoUnknown {
int16_t set_Manager ([in] const UGUID* rcid);
const UGUID* get_Manager ([in] void);
int16_t QueryComponent ([in] char_t* networkname,
[in] const UGUID* rcid,
[in] IEcoUnknown* pIUnkOuter,
[in] const UGUID* riid,
[out] voidptr_t* ppv)
}4.1.1. set_Manager function
The function
4.1.2. get_Manager function
The function
4.1.3. QueryComponent function
The function
5. IEcoInterfaceBus1MemExt Interface
5.1. IEcoInterfaceBus1MemExt IDL
import "IEcoBase1.idl"
[
object,
uguid(00000000-0000-0000-0000-A00100000101),
]
interface IEcoInterfaceBus1MemExt : IEcoUnknown {
int16_t set_Manager ([in] const UGUID* rcid);
const UGUID* get_Manager ([in] void);
int16_t set_ExpandPool ([in] bool_t bExpandPool);
}5.1.1. set_Manager function
The function
5.1.2. get_Manager function
The function
5.1.3. set_ExpandPool function
The function
6. IEcoInterfaceBus1FileExt Interface
6.1. IEcoInterfaceBus1FileExt IDL
import "IEcoBase1.idl"
[
object,
uguid(00000000-0000-0000-0000-A00200000101),
]
interface IEcoInterfaceBus1FileExt : IEcoUnknown {
int16_t set_Manager ([in] const UGUID* rcid);
const UGUID* get_Manager ([in] void);
int16_t set_SearchPath ([in] char_t* path);
char_t* get_SearchPath ([in] void);
int16_t RegisterComponent ([in] const UGUID* rcid,
[in] char_t* filename);
int16_t QueryComponent ([in] char_t* filename,
[in] const UGUID* rcid,
[in] IEcoUnknown* pIUnkOuter,
[in] const UGUID* riid,
[out] voidptr_t* ppv)
}6.1.1. set_Manager function
The function
6.1.2. get_Manager function
The function
6.1.3. set_SearchPath function
The function
6.1.4. get_SearchPath function
The function
6.1.5. RegisterComponent function
The function
6.1.6. QueryComponent function
The function
7. Error codes
The following table contains the error codes.
| Error code | Value | Description |
|---|---|---|
| ERR_ECO_SUCCESES | 0x0000 | Operation successful. |
| ERR_ECO_UNEXPECTED | 0xFFFF | Unexpected condition. |
| ERR_ECO_POINTER | 0xFFEE | NULL was passed incorrectly for a pointer value. |
| ERR_ECO_NOINTERFACE | 0xFFED | No such interface supported. |
| ERR_ECO_COMPONENT_NOTFOUND | 0xFFE9 | The component was not found. |

