Using it with Delphi

These are the function declarations for Delphi:
Function CreatePair(Port1, Port2 : PChar) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function DeletePair(Port : PChar) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function DeleteAll : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetStrictBaudrateName(Port: PChar, StrictBaudrate: Boolean) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetStrictBaudrateHandle(hPort: THandle, StrictBaudrate: Boolean) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function CreatePair(Port1, Port2 : PChar) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function DeletePair(Port : PChar) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function DeleteAll : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetStrictBaudrate(Port: PChar, StrictBaudrate: Boolean) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetBreak (Port: PChar, bBreak: Boolean) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function QueryBus (InBuffer: Pointer, sizeInBuffer: Integer, OutBuffer: Pointer, sizeOutBuffer: Integer) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetWiring (Port: PChar Buffer: Pointer, sizeBuffer: Integer) : Boolean; stdcall; external 'VSPDCTL.DLL';

Delphi can load ArmAccess either dynamically or statically. Here is a sample code for dynamic loading:

Function CreatePairFn(PortName1, PortName2 : String) : Boolean;

Type TCreatePair = function(Port1, Port2 : PChar) : Boolean; stdcall;

Var Handle : THandle;
CreatePair : TCreatePair;

Begin

CreatePairFn := False;
Handle := LoadLibrary('VSPDCTL.DLL');
If (Handle <> 0) Then
Begin
@CreatePair:=GetProcAddress(Handle, 'CreatePair');
If (CreatePair <> Nil) Then
CreatePairFn := CreatePair(PChar(PortName1), PChar(PortName2));
FreeLibrary(Handle);

End;
End;

Note: In Delphi since version 2009 PAnsiChar variable type should be used instead of PChar.