A kapcsolódások és az automatizálás elosztása, a titkosítással kapcsolatos blog

Az automatizálás egy másik módszer egy összetevő kezelésére. Automatizálás - COM bővítmény.

Az Automation kiszolgáló egy olyan COM-összetevő, amely az IDispatch felületet valósítja meg.

Az automatizálási vezérlő olyan COM-ügyfél, amely az IDispatch felületen kommunikál a kiszolgálóval. (A funkcióhívásokhoz a kiszolgáló a felület tagjainak funkcióit használja - implicit hívást).

Kezdetben az Automatizálást Visual Basic fejlesztette ki.

Szinte minden olyan szolgáltatás, amelyet a COM interfészek képviselnek, megjeleníthető az IDispatch segítségével.

IDispatch interfész

Az IDispatch egyetlen szolgáltatáson keresztül biztosítja az összes szolgáltatás elérését.

Az IDispatch egy funkcióhívást biztosít három paraméterben: az összetevő ProgID-jának, a függvény nevének és annak érveinek.

Az IDispatch felület a következő formális leírással rendelkezik:

interfaceIDispatch. IUnknown // az OAidl.idl fájlból

HRESULT GetTypeInfoCount ([ki] UINT * pctinfo);

HRESULT GetTypeInfo ([in] UINT iTInfo,
LCID lsid;
[out] ITypeInfo ** ppTInfo);

HRESULT GetIDsOfName ([in] REFIID riid, // Elfogadja a függvény nevét és

// visszaadja
[in, size_is (cNames)] LPOLESTR * rgszNames, // Küldés

// azonosító
[in] UINT cNames,
LCID lcid,
[ki, size_is (cNames)] DISPID * rgDispId); // DISPID hosszú

Hosszú és nem egyedi

// Minden IDispatch végrehajtásnak van saját IID-je (néha DIID).

HRESULT Invoke ([in] DISPID dispIdMember, // Automatizálás vezérlő
[in] REFIID riid, // átadja a hívott DISPID-ot

// függvények az Invoke-ban

[be, ki] DISPPARAMS * pDispParams,

[ki] VARIANT * pVarResult,

[out] EXEPINFO * pExcepinfo,

[ki] UINT * puArgErr

A DISPID-t az Invoke tag függvény használja indexként a függvénymutatók tömbjében. Az Automation szervernek azonban nem kell végrehajtania az Invoke szolgáltatást. Használhatja a szokásos kapcsolási nyilatkozatot.

IDispatch :: Invoke implementálja az index által elérni kívánt funkciókat.

Az IDispatch :: Invoke alkalmazással végrehajtott funkciókészletet a diszpécseri felület (disp-interface)

Az IDispatch :: Invoke végrehajtása olyan funkciókat határoz meg, amelyekkel a szerver és az automatizálási vezérlő kommunikál.

Példa a DISP interfész lehetséges megvalósítására:

Kapcsolódó cikkek