+ All Categories
Home > Software > C/ C++ for Notes & Domino Developers

C/ C++ for Notes & Domino Developers

Date post: 11-Apr-2017
Category:
Upload: ulrich-krause
View: 505 times
Download: 14 times
Share this document with a friend
100
Entwicklercamp 2017 C / C++ für Notes & Domino Entwickler Ulrich Krause 27. – 29..03.2017 Maritim Hotel, Gelsenkirchen
Transcript
Page 1: C/ C++ for Notes & Domino Developers

Entwicklercamp 2017

C / C++ für Notes & Domino EntwicklerUlrich Krause

27. – 29..03.2017 Maritim Hotel, Gelsenkirchen

Page 2: C/ C++ for Notes & Domino Developers

Über: Ulrich Krause

Lotus Notes und Domino seit 1993

EntwicklerAdministrator

IBM Champion 2010 – 2016OpenNTF Contributor

Entwickler bei midpoints GmbH

Page 3: C/ C++ for Notes & Domino Developers

1996 – Erste „Entwicklerversion“

Page 4: C/ C++ for Notes & Domino Developers

“ A word of warning. This is difficult, horrible, tedious frustrating error prone work that WILL take far more time than you think, and WILL come back and bite you in the .. leg .. ” ( Bill Buchan )

Page 5: C/ C++ for Notes & Domino Developers

C API

LSX ToolkitC++ API

JAVA 2 CAPI

LS 2 CAPI

Möglichkeiten

Page 6: C/ C++ for Notes & Domino Developers

Was können wir NICHT mit der API? Modifikationen an der Software selbst. Z.B.,

Entfernen von Menüpunkten oder Funktionen.- Das Hinzufügen ist über Client Menu Addins

möglich

Ändern des Aktivitätenprotokolls Ändern der ECL eines Users Zugriff auf DAOS.

Was können wir mit der API? Erstellen und Löschen von Datenbanken.

Erstellen, Bearbeiten und Löschen von Dokumenten oder Designelementen.

Erstellen, Bearbeiten, und Löschen von Items in einem Dokument.

Erstellen, Bearbeiten, Löschen und Verwenden von Ansichtenindexen.

Erstellen, Bearbeiten und Löschen von ACL Einträgen

Backup und Restore von Datenbanken

Erstellen und Bearbeiten von Kalendereinträgen

Verwaltung des IDVault

Arbeiten mit Server Statistiken

Page 7: C/ C++ for Notes & Domino Developers

Wo operiert die API?

Back-EndFront-End

Page 8: C/ C++ for Notes & Domino Developers

NSF /NTF Container )

Betriebssystem

Notes Object Interface (NOI)

Lotus Script

C++ API

Notes Core ( C API )

Visual Basic (COM)JAVA

JNI

Zugriffe

Page 9: C/ C++ for Notes & Domino Developers

Jede Art von Anwendung.

z.B. NotesPeek, DAOS Estimator.

Erlauben das Ausführen von Code vor und / oder nach einem Ereignis auf

dem Server.

z.B. Virenscanner.

Anwendungen im Kontext des Servers. Lassen sich über LOAD …, TELL … und QUIT steuern

z.B. amgr, router …

Wie Extension Manager, es wird aber auf Events im Kontext des HTTP stack reagiert.

z.B. midpoints DSAPI Authenticator

Arten von Anwendungen

Page 11: C/ C++ for Notes & Domino Developers

Welche Werkzeuge brauche ich?

IBM Domino or IBM Notes 9.0.1 for Windows. All Windows platforms supported by Domino 9.0.1 are also supported by this toolkit.

Microsoft Visual Studio 2010 SP1.

Visual Studio (Express) 2005 & 2008 funktionieren auch mit 9.0.1 (nicht supported )

Novell SUSE Linux Enterprise Server (SLES) 10 x86 (32-bit)32 Bit IBM Domino 8.5 for Linux on xSeriesGNU Compiler Collection (gcc/g++) version 4.1.0

Novell SUSE Linux Enterprise Server (SLES) 11 x86_64 (64 bit) 64 Bit IBM Domino 9.0.1 forGNU Compiler Collection (gcc/g++) version 4.3.x

Macintosh OS X 10.5.5 or late

Page 12: C/ C++ for Notes & Domino Developers

Alternative IDE

https://code.visualstudio.com/

Page 13: C/ C++ for Notes & Domino Developers

Standalone Compiler für Windows

http://landinghub.visualstudio.com/visual-cpp-build-tools

Page 14: C/ C++ for Notes & Domino Developers

http://www.boost.org/https://theboostcpplibraries.com/

Page 15: C/ C++ for Notes & Domino Developers

Warum Boost ?

Beispiel: Es gibt kein trim() in C /C++ ( std::string )

#include <boost/algorithm/string.hpp>

string s = „ midpoints „;boost::trim_left(s);

boost::trim_right(s);boost::trim(s);

boost::copy_trim_xxx(s);

boost::trim_right_if(str, boost::is_any_of("\0"));

Page 16: C/ C++ for Notes & Domino Developers

Boost.Build makes it easy to build C++ projects, everywhere. You name your executables and libraries and list their sources. Boost.Build takes care about compiling your sources with right options, creating static and shared libraries, making executables, and other chores — whether you're using gcc, msvc, or a dozen more supported C++ compilers — on Windows, OSX, Linux and commercial UNIX systems.

http://www.boost.org/build/

CMake (cross-platform make) ist ein plattformunabhängiges Programmierwerkzeug für die Entwicklung und Erstellung von Software.

https://cmake.org/

Page 17: C/ C++ for Notes & Domino Developers

Codedichte, Kosten, Schwierigkeitsgrade

Es existieren sehr wenige Beispiele für C / C++ *. Die Anzahl der Entwickler ist überschaubar. Es wird Spezialwissen vorausgesetzt. Dementsprechend ist die Erstellung von Programmen aufwändig und teuer.

C

C++

LS 2 CAPI

Beispiele für LS2CAPI sind reichlich vorhanden. Die Anpassung oder das Erstellen von Code auf Basis von LS2CAPI erfordert fundierte Kenntnisse.

LotusScript und Java haben eine breite Codebasis. Beispiele für fast alle Aufgabenstellungen sind leicht zu finden.Die Erstellung / Anpassung von Code ist einfach und preiswertLotus Script, Java

JAVA 2 CAPI

* Im Kontext von IBM Notes & Domino

Page 18: C/ C++ for Notes & Domino Developers

Grundlagen

Page 19: C/ C++ for Notes & Domino Developers
Page 20: C/ C++ for Notes & Domino Developers
Page 21: C/ C++ for Notes & Domino Developers
Page 22: C/ C++ for Notes & Domino Developers

C/C++: Additional Include Directories

Page 23: C/ C++ for Notes & Domino Developers

C/C++: Preprocessor Definitions

Page 24: C/ C++ for Notes & Domino Developers

C/C++: Code Generation

Page 25: C/ C++ for Notes & Domino Developers

Handles

#if defined (_MSC_VER) && !defined(ND64)#pragma pack(push, 1)

#endif

#include <global.h>#include <osenv.h>#include <oserr.h>#include <addin.h>#include <nsfdb.h>

#if defined (_MSC_VER) && !defined (ND64)#pragma pack(pop)

#endif

Page 26: C/ C++ for Notes & Domino Developers

#if defined (W64)

#define HANDLE DHANDLE#undef NOTEHANDLE#define NOTEHANDLE DHANDLE

#else // 32Bit

#define DHANDLE HANDLE#undef NOTEHANDLE#define NOTEHANDLE HANDLE

#endif

Page 27: C/ C++ for Notes & Domino Developers

Windows vs. Linux#if defined(UNIX)

#include <sys/stat.h>#include <sys/types.h>#define DIR_SEPARATOR '/'#define _vsnprintf vsnprintf#define _snprintf snprintf#define strcpy_s(t, l, s) strcpy(t, s)#define sprintf_s(t, l, f, ...) sprintf(t, f, __VA_ARGS__)#define strcat_s(t, l, s) strcat(t, s)#define strncpy_s(t, l, s, n) strncpy(t, s, n)#define strtok_s(s, t, c) strtok(s, t)#define memcpy_s(t, m, s, l) memcpy(t, s, l)

#elif defined(W32)#pragma warning(disable: 4996)

#define strdup(str) _strdup(str)#define DIR_SEPARATOR '\\'

#define popen _popen#define pclose _pclose

#endif

Page 28: C/ C++ for Notes & Domino Developers

Linker: Additional Library Directories

Page 29: C/ C++ for Notes & Domino Developers

Linker: Additional Dependencies

Page 30: C/ C++ for Notes & Domino Developers

Beispiel: C API

Page 31: C/ C++ for Notes & Domino Developers

Beispiel: DLL mit C API

Page 32: C/ C++ for Notes & Domino Developers

Beispiel: C++ API

Page 33: C/ C++ for Notes & Domino Developers

C++ API (cont.)

Page 34: C/ C++ for Notes & Domino Developers

C++ API (cont.)

Page 35: C/ C++ for Notes & Domino Developers

C++ API (cont.)

Page 36: C/ C++ for Notes & Domino Developers

C++ API (cont.)

Starten im Notes Programmverzeichnis ec10-dbtitle-cpp.exe

Benötigt eine zusätzliche LCPPN.DLL (~2.5 MB), die auf jeden Rechner ausgerollt werden muss, auf dem das Programm laufen soll

Page 37: C/ C++ for Notes & Domino Developers

The most recent version of the C++ API toolkit for Notes & Domino is 8.0.2 IF3.

While this version of the toolkit should work with newer versions of Notes and Domino, such as 8.5.3 and 9.0.1, any incompatibilities, limitations or defects in this toolkit will not be addressed.

No Linux 64.

Page 38: C/ C++ for Notes & Domino Developers

Eigener C++ Wrapper

Klassencode mit Konstruktor, Destruktor und Errorhandling.

Einfache Verwendung im Code.

Page 39: C/ C++ for Notes & Domino Developers

Lohnt sich das?

Wenn man „nur mal so“ mit der API spielen möchte, dann lohnt sich der Aufwand sicherlich nicht.

Im professionellen Einsatz ist der Wrapper sinnvoll. Er nimmt Entwicklern ( alt und neu ) viel Arbeit ab. Es können auch Klassen, Methoden und Eigenschaften erstellt

werden, die nicht im Standardumfang der API vorhanden sind ( Stichwort undokumentiert )

„Das umzusetzen ist aber viel Arbeit“ Klein anfangen! Der Wrapper kann sukzessive erweitert werden. C / CPP Wrapper können parallel verwendet werden

Page 40: C/ C++ for Notes & Domino Developers

RichText

Page 41: C/ C++ for Notes & Domino Developers

CAPI und RichText

Frage im Forum: Kennt jemand eine Möglichkeit,

die Größe von eingebetteten Bildern in einem Notes RichText Item auszulesen?

Page 42: C/ C++ for Notes & Domino Developers

CAPI und RichText

Es gibt keine Methode oder Eigenschaft dafür

Es gibt keine Methode oder Eigenschaft dafür

Es gibt keine @Formel dafür

Lotu

sScr

ipt ? Java ?

@Formula ?

Page 43: C/ C++ for Notes & Domino Developers

Dann bauen wir uns eine Funktion selber

Container für unstrukturierte DatenMehrere Items mit dem selben Namen möglich

Compound Document Records ( CD ) Feste Struktur ( CD Type + Daten )

Über 200 unterschiedliche CD Types

RichText ist niemals „leer“

Page 44: C/ C++ for Notes & Domino Developers

Dann bauen wir uns eine Funktion selber

Page 45: C/ C++ for Notes & Domino Developers

Schematischer Programmaufbau

Öffnen der Datenbank und des zu untersuchenden Dokuments

Lesen des „Body“ ItemsLesen der enthaltenen CD Records bis „Image Header“

gefunden istLesen des Header CD RecordsAusgabe der DatenProgrammabschluß

Page 46: C/ C++ for Notes & Domino Developers

„Image Header“ suchen

Page 47: C/ C++ for Notes & Domino Developers

Auslesen der „Image Header“ Daten

Page 48: C/ C++ for Notes & Domino Developers

Funktionen kapseln (DLL)

Page 49: C/ C++ for Notes & Domino Developers

Ein Fall aus der Praxis

Erste Kontaktaufnahme des Kunden (04.08.2015)

“Our company does mortgages and we need to check the customer's security info (PATRIOT ACT). We use a 3rd party software package. Here is a sample of a bat file that is being executed. For your info the bat file is always executed without errors from Bridger even when the server crashes.

As far as NSD files we have been working with IBM Support for many months now. They have not been able to find anything very helpful in them.

But if it OK with my manager I would be glad to send you some. BTY. We have hundreds to choose from. “

Page 50: C/ C++ for Notes & Domino Developers

Die Ausgangslage

Formular ausfüllen

Der Kunde füllt auf der Webseite des Unternehmens ein Formular aus und sendet es ab.

Server erhält Request

Die Daten werden aufbereitet Die Daten für die Prüfung werden extrahiert und der LotusScript Code

für die Ansteuerung des 3rd-party Tools ausgeführt

Prüfen der Daten Die Prüfung erfolgt LotusScript wartet bis zur Beendigung des Prüfprozesses und

empfängt das Ergebnis der Prüfung

Rückmeldung Abhängig vom Ergebnis der Prüfung erhält der Kunde Mitteilungen

über die weitere Vorgehensweise auf dem Bildschirm Oder auch nicht …

8.5.3 FP6 64Bit Domino server running on Win 2008/64

Page 51: C/ C++ for Notes & Domino Developers

Funktionsaufruf

Page 52: C/ C++ for Notes & Domino Developers

Deklarationen

Page 53: C/ C++ for Notes & Domino Developers

Strukturen

Page 54: C/ C++ for Notes & Domino Developers

Umsetzung als exportierte Funktion

Page 55: C/ C++ for Notes & Domino Developers

Deklaration und Funktionsaufruf

Page 56: C/ C++ for Notes & Domino Developers

Mail des Kunden an IBM Support ( 17.08.2015 )

“The servers have not crashed since 8/7/2015. Therefore, you can close this PMR. Instead of using a C-API call to the Windows "CreateProcess" function we are now using a type of wrapper DLL function call.

Thank you and the Support team which worked with us to located this problem. It has been a very long and trying 9 months. I also would like to convey an every bigger "thank you" from our several hundred users. Whenever the server crashed their work load increased because they had to recover any lost data. They are now able to work normally. “

Mail nach Installation der DLL ( 06.08.2015):

“Buckle your seat belts. Ralph and I will attempt to plug this in and test it the rest of Today and will attempt to go live with it Tomorrow morning. I'll let you know how it goes... “

Page 57: C/ C++ for Notes & Domino Developers

Lessons learned

Code kann jahrelang ohne Probleme funktionieren. Eines Tages wird er es nicht mehr. Ursachen für das Fehlverhalten können erkannt und beseitigt werden. Ursachen für das Fehlverhalten können nicht erkannt und nicht beseitigt werden. Probleme treten grundsätzlich bei geschäftskritischen Anwendungen auf. In der Regel treten Probleme beim C-Level auf; kurz vor oder während des

Wochenendes Verlasse dich nicht darauf, daß der Softwarehersteller dein Problem löst. Es lohnt sich immer, einen Plan B zu haben.

Page 58: C/ C++ for Notes & Domino Developers

Extension Manager

Page 59: C/ C++ for Notes & Domino Developers

Extension Manager

„Hört“ auf Events am Domino ServerEs gibt unzählige Events ( extmgr.h )Der Extension Manager kann VOR oder NACH dem Event

die Daten das Events verarbeiten. EM_REG_BEFORE EM_REG_AFTER

Beispiel: TriggerHappy, OpenNTF https://

www.openntf.org/main.nsf/project.xsp?r=project/Trigger%20Happy

Page 60: C/ C++ for Notes & Domino Developers

Passwort an (Server) ID übergeben

Page 61: C/ C++ for Notes & Domino Developers

Passwort an (Server) ID übergeben

Event EM_GETPASSWORD registrieren. Wir registrieren den Event VOR der eigentlichen Passwortabfrage.

Modifizierter Code aus CAPI Samples: notesapi\9.0.1\samples\misc\extpwd

Page 62: C/ C++ for Notes & Domino Developers

Wenn der Event nicht EM_GETPASSWORD ist, dann zurück zur aufrufenden Funktion

Passwort aus Datei auslesen, in die Struktur schreiben und zurück zur aufrufenden Funktion.

Page 63: C/ C++ for Notes & Domino Developers

Backup &Restore

Page 64: C/ C++ for Notes & Domino Developers

Backup Restore

Die cAPI stellt eine ganze Reihe von Methoden für das Backup und Restore von Notes Applikationen zur Verfügung

Gerald Peters - Backup und Restore mit der C-API, EC2017Daniel Nashed – Domino Backup, DNUG Domino Day 2016

DomBackup https://

www.openntf.org/main.nsf/project.xsp?r=project/DomBackup

Page 65: C/ C++ for Notes & Domino Developers

DomBackup CLI

-h [-–help] Display this help message

-s [-–source] source file/folder-d [-–dest] destination file/folder

-i [-–include-sub-dirs] Include subdirs, applies to folder backup only (optional, default = false)

-t [-–throttle] Wait short time between file writes (optional, default = false)

-z [-–zip] Move file to .zip archive after backup (optional, default = false)-u [-–unique-filename] appends a timestamp to the archive filename (optional, default = false)

-a [-–application-type] (=nsf) nsf,ntf,both (optional, default = nsf only)

-f [-–input-file] Backup all the files specified in an .ind file in the data folder to <dest>

-v [-–version] Display the version number

Page 66: C/ C++ for Notes & Domino Developers

Standalone Programm

Page 67: C/ C++ for Notes & Domino Developers

Versionsinformationen

Wie kommt die Versionsnummer in eine Notes Anwendung oder ein Template ?

Die Nummer ist auch nicht in allen Datenbanken oder Templates vorhanden. Warum ist das so?

Page 68: C/ C++ for Notes & Domino Developers

ntfbuild.exe

Commandline tool. Benötigt Notes ClientKann in Buildumgebungen wie Jenkins, Bamboo oder

TeamCity verwendet werden.Verwendet ein eigenes CPP FrameworkBoost LibrariesEasyloggingcpp https://github.com/muflihun/easyloggingpp

cmdline: A simple command line parser for C++ https://github.com/tanakh/cmdline

Page 69: C/ C++ for Notes & Domino Developers

ntfbuild.exe

Page 70: C/ C++ for Notes & Domino Developers

ntfbuild.exe

Page 71: C/ C++ for Notes & Domino Developers

Inside ntfbuild.exe - Filehandling

• boost::filesystem zum Erstellen von Verzeichnissen ( auch verschachtelt )und Löschen von Dateien

• NSFDbRename zum Verschieben / Umbenennen von Notes Datenbanken. Kann auch sehr große Datenbanken auf einem Server verschieben

Page 72: C/ C++ for Notes & Domino Developers

Inside ntfbuild.exe - Signing

#include <nsfnote.h>

STATUS LNPUBLIC NSFNoteSignExt3(NOTEHANDLE hNote,KFHANDLE hKFC,const char far

*SignatureItemName,WORD ItemCount,DHANDLE hItemIDs,DWORD Flags,DWORD Reserved,void *pReserved);

Page 73: C/ C++ for Notes & Domino Developers

Welches Zertifikat ist das DEFAULT Zertifikat?

Page 74: C/ C++ for Notes & Domino Developers

@If(CertificateList="";"";@X509Certificates([SetAsEncryptionCertificate];UserCertificate;"";CertificateList));@Command([ViewRefreshFields])

Page 75: C/ C++ for Notes & Domino Developers

midpoints Certana

Certificate AnalyzerKommandozeilen ToolAnalysiert Dokumente mit Internet Zertifikaten in 1 - n

Adressbüchern ( expired, not valid before, default )

OpenSSL https://www.openssl.org/

Secure programming with the OpenSSL API (IBM) https://www.ibm.com/developerworks/library/l-openssl/

Undokumentierte Funktionen.

Page 76: C/ C++ for Notes & Domino Developers

midpoints Certana

Usage: certana.exe -s <servername> [options] [flags]

Options:

-h --help Prints this help -s --server Target server -u --user Analyse certificates of a named user -i --infile Read list of users from .ind file -o --outfile Write to file

Flags:

--primary Search in primary Domino Directory (names.nsf) only --no-console Silent mode. Writes to file if configured with -o <filename> --debug Debug mode

Page 77: C/ C++ for Notes & Domino Developers

Inside Certanaif (error = SECNABEnumerateCertificates(

hNote, (SECNABENUMPROC)callback_certs ,pCtx, 0, 0)) {

}

Page 78: C/ C++ for Notes & Domino Developers

Undokumentierte Funktionen

Page 79: C/ C++ for Notes & Domino Developers
Page 80: C/ C++ for Notes & Domino Developers

Undokumentierte Funktionen.

http://www-10.lotus.com/ldd/46dom.nsf/0/54feea2820bfc15a412568960034054b?OpenDocument

PMR 00452,999,724 - Antwort vom Support

“Some functionality is decided by the lab to not be published. This is a choice made for various reasons (functionality incomplete to be used in all cases, not be limited later on to change the functionality, etc...) This request will not be met.

Several other such requests were made but never met”

Page 81: C/ C++ for Notes & Domino Developers

Undokumentierte Funktionen

http://www.nirsoft.net/utils/dll_export_viewer.html

Page 82: C/ C++ for Notes & Domino Developers

Undokumentierte Funktionen

.bat, Batchfiles zum Erstellen der statischen library

.def, enthält die Funktionsnamen und Ordinalzahlen

.h, enthält die Funktionen und ihre Signaturen

.lib, die statische library

Page 83: C/ C++ for Notes & Domino Developers

Statische Library erstellen

Funktion finden nnotes.dll in DLL Export öffnen und Funktion suchen. Ordinalzahl ermitteln.

Eintrag in .def Funktion mit Ordinalzahl in .def Datei für den Export eintragen

Eintrag in .h Die Signatur der Funktion muss in die .h Datei eingetragen werden. Das ist der

schwierige Teil, weil diese Angaben nicht (immer) durch Suche im Netz zu finden sind. Viel Glück!

Erstellen der .lib

Beispiel für 64Bit:

call "C:\Program Files (x86)\Microsoft Visual Studio 8\VC\vcvarsall.bat" amd64call "%ICPP_COMPILER11%\bin\iclvars.bat" intel64del notesplus64.libxilib /MACHINE:x64 /DEF:notesplus64.def /OUT:notesplus64.lib

Page 84: C/ C++ for Notes & Domino Developers

Server Addin

Page 85: C/ C++ for Notes & Domino Developers

Eigene Administrationsprozesse

Wie lösche ich eine oder mehrere Einträge in einer Gruppe, ohne die Person oder Gruppe selber zu löschen?

Es gibt dafür keinen Administrationsprozess.

Bob Balfe - Creating a custom Administration Process Request Handler https://

www.ibm.com/developerworks/lotus/library/ls-Custom_AdminP_Handler/

Video von 2007 (immer noch verfügbar ) http://www.screencast.com/t/htEtry53BSk http://www.eknori.de/2007-12-15/delete-group-members-using-th

e-administration-process/

Page 86: C/ C++ for Notes & Domino Developers

Java2CAPI

Page 87: C/ C++ for Notes & Domino Developers

Java2CAPI – Domino JNA

Karsten Lehmann, mindoo

https://github.com/klehmann/domino-jna

Page 88: C/ C++ for Notes & Domino Developers

Java2CAPI – Domino JNA

Cross-platform access to IBM Notes/Domino C API methods from Java

The project provides functionality that is not available in the classic Java API of IBM Notes/Domino or that is poorly implemented. (see GitHub )

Also works in XPagesThe code should run in 32 and 64 bit Notes Client and

Domino server environments on Windows, Linux and Mac.It is not expected to run without changes on other

platforms, mainly because of little endian / big endian differences or memory alignments, but we don't currently have access to those platforms anywa

Page 89: C/ C++ for Notes & Domino Developers

DOTS – application.tool

Was ist und was kann das application.tool?

DOTS Task ( Scanner, Jobber )

Verwendet Domino JNA. (DirectoryScanner.class)

Scannen aller Datenbanken und Templates auf dem lokalen Server oder Remote Servern

Auslesen aller Eigenschaften eines Datenbank / Template Objets

Auslesen der ACL

Analyse des FT Verzeichnisses

Analyse des NIFNSF Verzeichnisses

Page 90: C/ C++ for Notes & Domino Developers

@DbColumn

@DbLookup

Page 91: C/ C++ for Notes & Domino Developers

@Formula

@DbLookup( class : cache ; server : database ; view ; key ; fieldName ; keywords ) or@DbLookup( class : cache ; server : database ; view ; key ; columnNum ; keywords)

@DbColumn( class : cache ; server : database ; view ; columnNum )

Klasse / Class

Text. Gibt den Typ der Datenbank an, auf den Sie zugreifen. Handelt es sich um eine Domino Datenbank, können Sie entweder "Notes" oder "" (leere Zeichenfolge) angeben.

Page 92: C/ C++ for Notes & Domino Developers

Templates

1 Database Initialization and Termination; MainEntryPoint(), DBDTerm()

2 Open and Close a Session; DBDOpen, DBDClose

3 Perform a Database Driver Function; DBDPerformFunction

Siehe CAPI UserGuide, Chapter 12-7,External Database Drivers

Page 93: C/ C++ for Notes & Domino Developers

@DbLookup("dbdrv"; "dbdriver.db"; "North America")

@DbColumn("dbdrv"; "dbdriver.db")

Page 94: C/ C++ for Notes & Domino Developers

DSAPI

Page 95: C/ C++ for Notes & Domino Developers

“The Domino Web Server Application Programming Interface (DSAPI) is a C API that you can use to write your own extensions to the Domino Web Server. These extensions, or filters, let you customize authentication for Web users. “

Page 96: C/ C++ for Notes & Domino Developers
Page 97: C/ C++ for Notes & Domino Developers
Page 98: C/ C++ for Notes & Domino Developers
Page 99: C/ C++ for Notes & Domino Developers
Page 100: C/ C++ for Notes & Domino Developers

THANK YOU

Ulrich KrauseDeveloper

midpoints GmbH

[email protected]


Recommended