Subversion Repositories delphiutils

Compare Revisions

No changes between revisions

Regard whitespace Rev 68 → Rev 69

/trunk/UserDetect2/Troubleshooting.txt
File deleted
/trunk/UserDetect2/new_status_codes.txt
File deleted
/trunk/UserDetect2/todo_doku.txt
File deleted
/trunk/UserDetect2/UserDetect2.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/UD2_PluginIntf.pas
7,7 → 7,7
{$IFEND}
 
uses
Windows;
Windows, SysUtils;
 
const
GUID_USERDETECT2_IDPLUGIN_V1: TGUID = '{6C26245E-F79A-416C-8C73-BEA3EC18BB6E}';
28,28 → 28,54
{$IFEND}
 
type
UD2_STATUSCODE = DWORD;
UD2_STATUS = DWORD;
UD2_STATUSCAT = $0..$F;
UD2_STATUSAUTH = $000..$FFF;
UD2_STATUSMSG = $0000..$FFFF;
 
const
// We have chosen these numbers, to avoid that people use
// "return FALSE" ("return 0") to declare an error, and
// "return TRUE" ("return 1") to declare a successful operation.
// TODO: visible und invisible module errors, z.b. unavailable wegen winapi etc.
// --> mask machen: sucessful, failed, failed hard, official oder userdefined
UD2_STATUS_OK : UD2_STATUSCODE = $10000000;
UD2_STATUS_BUFFER_TOO_SMALL : UD2_STATUSCODE = $00001000;
UD2_STATUS_INVALID_ARGS : UD2_STATUSCODE = $00001001;
UD2_STATUS_NOT_LICENSED : UD2_STATUSCODE = $00001002;
UD2_STATUSCAT_SUCCESS : UD2_STATUSCAT = $8;
UD2_STATUSCAT_NOT_AVAIL : UD2_STATUSCAT = $9;
UD2_STATUSCAT_ERROR : UD2_STATUSCAT = $A;
 
UD2_STATUSAUTH_GENERIC : UD2_STATUSAUTH = $100;
 
UD2_STATUS_OK_UNSPECIFIED : UD2_STATUS = $81000000;
UD2_STATUS_OK_SINGLELINE : UD2_STATUS = $81000001;
UD2_STATUS_OK_MULTILINE : UD2_STATUS = $81000002;
UD2_STATUS_OK_LICENSED : UD2_STATUS = $81000003;
 
UD2_STATUS_NOTAVAIL_UNSPECIFIED : UD2_STATUS = $91000000;
UD2_STATUS_NOTAVAIL_OS_NOT_SUPPORTED : UD2_STATUS = $91000001;
UD2_STATUS_NOTAVAIL_HW_NOT_SUPPORTED : UD2_STATUS = $91000002;
UD2_STATUS_NOTAVAIL_NO_ENTITIES : UD2_STATUS = $91000003;
UD2_STATUS_NOTAVAIL_API_CALL_FAILURE : UD2_STATUS = $91000004;
 
UD2_STATUS_ERROR_UNSPECIFIED : UD2_STATUS = $A1000000;
UD2_STATUS_ERROR_BUFFER_TOO_SMALL : UD2_STATUS = $A1000001;
UD2_STATUS_ERROR_INVALID_ARGS : UD2_STATUS = $A1000002;
UD2_STATUS_ERROR_PLUGIN_NOT_LICENSED : UD2_STATUS = $A1000003;
 
function UD2_STATUS_Construct(cat: UD2_STATUSCAT;
auth: UD2_STATUSAUTH; msg: UD2_STATUSMSG): UD2_STATUS;
function UD2_STATUS_GetCategory(dwStatus: UD2_STATUS): UD2_STATUSCAT;
function UD2_STATUS_GetAuthority(dwStatus: UD2_STATUS): UD2_STATUSAUTH;
function UD2_STATUS_GetMessage(dwStatus: UD2_STATUS): UD2_STATUSMSG;
function UD2_STATUS_Successful(dwStatus: UD2_STATUS): boolean;
function UD2_STATUS_NotAvail(dwStatus: UD2_STATUS): boolean;
function UD2_STATUS_Failed(dwStatus: UD2_STATUS): boolean;
function UD2_STATUS_FormatStatusCode(dwStatus: UD2_STATUS): string;
function UD2_STATUS_IsSpecific(dwStatus: UD2_STATUS): boolean;
 
type
TFuncPluginInterfaceID = function(): TGUID; cdecl;
TFuncPluginIdentifier = function(): TGUID; cdecl;
TFuncPluginNameW = function(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
TFuncPluginVersionW = function(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
TFuncPluginVendorW = function(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
TFuncCheckLicense = function(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
TFuncIdentificationMethodNameW = function(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
TFuncIdentificationStringW = function(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
TFuncPluginNameW = function(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
TFuncPluginVersionW = function(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
TFuncPluginVendorW = function(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
TFuncCheckLicense = function(lpReserved: LPVOID): UD2_STATUS; cdecl;
TFuncIdentificationMethodNameW = function(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
TFuncIdentificationStringW = function(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
 
const
UD2_MULTIPLE_ITEMS_DELIMITER = #10;
58,6 → 84,54
 
implementation
 
function UD2_STATUS_Construct(cat: UD2_STATUSCAT;
auth: UD2_STATUSAUTH; msg: UD2_STATUSMSG): UD2_STATUS;
begin
result := (cat shl 28) + (auth shl 16) + msg;
end;
 
function UD2_STATUS_GetCategory(dwStatus: UD2_STATUS): UD2_STATUSCAT;
begin
result := (dwStatus and $F0000000) shr 28;
end;
 
function UD2_STATUS_GetAuthority(dwStatus: UD2_STATUS): UD2_STATUSAUTH;
begin
result := (dwStatus and $0FFF0000) shr 16;
end;
 
function UD2_STATUS_GetMessage(dwStatus: UD2_STATUS): UD2_STATUSMSG;
begin
result := dwStatus and $0000FFFF;
end;
 
function UD2_STATUS_Successful(dwStatus: UD2_STATUS): boolean;
begin
result := UD2_STATUS_GetCategory(dwStatus) = UD2_STATUSCAT_SUCCESS;
end;
 
function UD2_STATUS_NotAvail(dwStatus: UD2_STATUS): boolean;
begin
result := UD2_STATUS_GetCategory(dwStatus) = UD2_STATUSCAT_NOT_AVAIL;
end;
 
function UD2_STATUS_Failed(dwStatus: UD2_STATUS): boolean;
begin
result := UD2_STATUS_GetCategory(dwStatus) = UD2_STATUSCAT_ERROR;
end;
 
function UD2_STATUS_FormatStatusCode(dwStatus: UD2_STATUS): string;
begin
result := IntToHex(UD2_STATUS_GetCategory(dwStatus), 1) + ' ' +
IntToHex(UD2_STATUS_GetAuthority(dwStatus), 3) + ' ' +
IntToHex(UD2_STATUS_GetMessage(dwStatus), 4);
end;
 
function UD2_STATUS_IsSpecific(dwStatus: UD2_STATUS): boolean;
begin
result := (dwStatus and $0000FFFF) <> 0;
end;
 
function PluginInterfaceID: TGUID; cdecl;
begin
result := GUID_USERDETECT2_IDPLUGIN_V1;
/trunk/UserDetect2/UD2_PluginUtils.pas
9,62 → 9,36
uses
Windows, Classes, UD2_PluginIntf;
 
(*
function WritePascalStringToPointerA(lpDestination: LPSTR; cchSize: DWORD;
stSource: AnsiString): UD2_STATUSCODE;
*)
function UD2_WritePascalStringToPointerW(lpDestination: LPWSTR; cchSize: DWORD;
stSource: WideString): UD2_STATUS;
 
function WritePascalStringToPointerW(lpDestination: LPWSTR; cchSize: DWORD;
stSource: WideString): UD2_STATUSCODE;
function UD2_WriteStringListToPointerW(lpDestination: LPWSTR; cchSize: DWORD;
slSource: TStrings): UD2_STATUS;
 
(*
function WriteStringListToPointerA(lpDestination: LPSTR; cchSize: DWORD;
slSource: TStrings): UD2_STATUSCODE;
*)
 
function WriteStringListToPointerW(lpDestination: LPWSTR; cchSize: DWORD;
slSource: TStrings): UD2_STATUSCODE;
 
implementation
 
uses
Math;
 
(*
function WritePascalStringToPointerA(lpDestination: LPSTR; cchSize: DWORD;
stSource: AnsiString): UD2_STATUSCODE;
function UD2_IsMultiLineW(s: WideString): boolean;
var
cchSource: DWORD;
i: integer;
c: WideChar;
begin
if cchSize = 0 then
for i := 1 to Length(s) do
begin
result := STATUS_INVALID_ARGS;
c := s[i];
if c = UD2_MULTIPLE_ITEMS_DELIMITER then //if (c = #10) or (c = #13) then
begin
Result := true;
Exit;
end;
if stSource = '' then
begin
ZeroMemory(lpDestination, SizeOf(AnsiChar));
result := STATUS_OK;
end
else
begin
CopyMemory(lpDestination, @stSource[1], cchSize*SizeOf(AnsiChar));
cchSource := Cardinal(Length(stSource));
if cchSource >= cchSize then
begin
result := STATUS_BUFFER_TOO_SMALL;
ZeroMemory(lpDestination+(cchSize-1)*SizeOf(AnsiChar), SizeOf(AnsiChar));
end
else
begin
result := STATUS_OK;
end;
Result := false;
end;
end;
*)
 
function WritePascalStringToPointerW(lpDestination: LPWSTR; cchSize: DWORD;
stSource: WideString): UD2_STATUSCODE;
function UD2_WritePascalStringToPointerW(lpDestination: LPWSTR; cchSize: DWORD;
stSource: WideString): UD2_STATUS;
var
cchSource: DWORD;
cchCopy: DWORD;
71,7 → 45,7
begin
if cchSize = 0 then
begin
result := UD2_STATUS_INVALID_ARGS;
result := UD2_STATUS_ERROR_INVALID_ARGS;
Exit;
end;
81,38 → 55,21
begin
CopyMemory(lpDestination, @stSource[1], cchCopy*SizeOf(WideChar));
end;
ZeroMemory(lpDestination+cchCopy*SizeOf(WideChar), SizeOf(WideChar));
lpDestination[cchCopy] := #0;
 
if cchSource >= cchSize then
begin
result := UD2_STATUS_BUFFER_TOO_SMALL;
end
result := UD2_STATUS_ERROR_BUFFER_TOO_SMALL
else if stSource = '' then
result := UD2_STATUS_NOTAVAIL_UNSPECIFIED
else if UD2_IsMultiLineW(stSource) then
result := UD2_STATUS_OK_MULTILINE
else
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_SINGLELINE;
end;
end;
 
(*
function WriteStringListToPointerA(lpDestination: LPSTR; cchSize: DWORD;
slSource: TStrings): UD2_STATUSCODE;
function UD2_WriteStringListToPointerW(lpDestination: LPWSTR; cchSize: DWORD;
slSource: TStrings): UD2_STATUS;
var
stSource: AnsiString;
i: integer;
begin
stSource := '';
for i := 0 to slSource.Count-1 do
begin
if i > 0 then stSource := stSource + UD2_MULTIPLE_ITEMS_DELIMITER;
stSource := stSource + slSource.Strings[i];
end;
result := WritePascalStringToPointerA(lpDestination, cchSize, stSource);
end;
*)
 
function WriteStringListToPointerW(lpDestination: LPWSTR; cchSize: DWORD;
slSource: TStrings): UD2_STATUSCODE;
var
stSource: WideString;
i: integer;
begin
122,7 → 79,7
if i > 0 then stSource := stSource + UD2_MULTIPLE_ITEMS_DELIMITER;
stSource := stSource + slSource.Strings[i];
end;
result := WritePascalStringToPointerW(lpDestination, cchSize, stSource);
result := UD2_WritePascalStringToPointerW(lpDestination, cchSize, stSource);
end;
 
end.
/trunk/UserDetect2/UserDetect2.dpr
9,6 → 9,7
UD2_Obj in 'UD2_Obj.pas',
UD2_Utils in 'UD2_Utils.pas',
VTSCompat in 'vcl\VTSCompat.pas',
AlphaNumSort in 'vcl\AlphaNumSort.pas',
PatchU in 'vcl\PatchU.pas';
 
{$R WindowsXP.res}
/trunk/UserDetect2/UD2_Main.pas
10,6 → 10,9
// TODO: geticon funktion in ud2_obj.pas?
// TODO (idee): ein plugin kann mehrere methodnames haben?
// TODO: möglichkeit, Task Definition File neu zu laden, nach änderungen die man durchgeführt hat
// TODO (idee): lahme DLLs abschießen beim start (per GUI)
// TODO: splash screen wegen DLL load
// TODO: nt4 compat
 
interface
 
101,7 → 104,7
{$R *.dfm}
 
uses
ShellAPI, Clipbrd, UD2_Utils, UD2_TaskProperties;
ShellAPI, Clipbrd, Math, AlphaNumSort, UD2_Utils, UD2_TaskProperties;
 
type
TUD2ListViewEntry = class(TObject)
324,6 → 327,8
end;
 
procedure TUD2MainForm.LoadLoadedPluginList;
resourcestring
LNG_MS = '%dms';
var
i: integer;
pl: TUD2Plugin;
339,6 → 344,7
SubItems.Add(pl.PluginName);
SubItems.Add(pl.PluginVersion);
SubItems.Add(pl.IdentificationMethodName);
SubItems.Add(Format(LNG_MS, [Max(1,pl.time)])); // at least show 1ms, otherwise it would be unloggical
SubItems.Add(pl.PluginGUIDString);
end;
end;
483,11 → 489,11
ListView := Sender as TVTSListView;
if ListView.CurSortedColumn = 0 then
begin
Compare := CompareText(Item1.Caption, Item2.Caption);
Compare := AlphaNumCompare(Item1.Caption, Item2.Caption);
end
else
begin
Compare := CompareText(Item1.SubItems[ListView.CurSortedColumn-1],
Compare := AlphaNumCompare(Item1.SubItems[ListView.CurSortedColumn-1],
Item2.SubItems[ListView.CurSortedColumn-1]);
end;
if ListView.CurSortedDesc then Compare := -Compare;
/trunk/UserDetect2/Plugins/LAN_MAC.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/Plugins/GatewayIP.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/Plugins/GatewayMAC.dpr
18,7 → 18,7
result := PLUGIN_GUID;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
sl, sl2: TStringList;
i: integer;
38,7 → 38,7
sl2.add(mac);
end;
end;
result := WriteStringListToPointerW(lpIdentifier, cchSize, sl2);
result := UD2_WriteStringListToPointerW(lpIdentifier, cchSize, sl2);
finally
sl.Free;
sl2.Free;
45,7 → 45,7
end;
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
55,30 → 55,30
stPluginName := 'MAC-Adressen der Gateways'
else
stPluginName := 'Gateway MAC addresses';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'GatewayMAC';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/UserSID.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/UserDetect2/Plugins/DHCP_MAC.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/Plugins/ComputerName.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/Plugins/ExecuteAlways.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/UserDetect2/Plugins/LAN_IP.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/Plugins/LAN_MAC.dpr
18,7 → 18,7
result := PLUGIN_GUID;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
sl, sl2: TStringList;
i: integer;
29,7 → 29,7
try
if GetLocalMACAddressList(sl2) <> NO_ERROR then
begin
result := UD2_STATUS_OK; // we assume that we just don't have any data
result := UD2_STATUS_NOTAVAIL_API_CALL_FAILURE;
Exit;
end;
 
45,7 → 45,7
sl2.add(mac);
end;
end;
result := WriteStringListToPointerW(lpIdentifier, cchSize, sl2);
result := UD2_WriteStringListToPointerW(lpIdentifier, cchSize, sl2);
finally
sl.Free;
sl2.Free;
52,7 → 52,7
end;
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
62,30 → 62,30
stPluginName := 'MAC-Adressen'
else
stPluginName := 'MAC addresses';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'LAN_MAC';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/GatewayIP.dpr
18,7 → 18,7
result := PLUGIN_GUID;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
sl: TStringList;
begin
25,13 → 25,13
sl := TStringList.Create;
try
GetGatewayIPAddressList(sl);
result := WriteStringListToPointerW(lpIdentifier, cchSize, sl);
result := UD2_WriteStringListToPointerW(lpIdentifier, cchSize, sl);
finally
sl.Free;
end;
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
41,30 → 41,30
stPluginName := 'IP-Adressen der Gateways'
else
stPluginName := 'Gateway IP addresses';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'GatewayIP';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/DHCP_IP.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/Plugins/DHCP_MAC.dpr
18,7 → 18,7
result := PLUGIN_GUID;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
sl, sl2: TStringList;
i: integer;
38,7 → 38,7
sl2.add(mac);
end;
end;
result := WriteStringListToPointerW(lpIdentifier, cchSize, sl2);
result := UD2_WriteStringListToPointerW(lpIdentifier, cchSize, sl2);
finally
sl.Free;
sl2.Free;
45,7 → 45,7
end;
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
55,30 → 55,30
stPluginName := 'MAC-Adressen der DHCP-Server'
else
stPluginName := 'DHCP MAC addresses';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'DHCP_MAC';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/ComputerName.dpr
30,15 → 30,15
RaiseLastOSError;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentifier: WideString;
begin
stIdentifier := GetComputerName;
result := WritePascalStringToPointerW(lpIdentifier, cchSize, stIdentifier);
result := UD2_WritePascalStringToPointerW(lpIdentifier, cchSize, stIdentifier);
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
48,30 → 48,30
stPluginName := 'Computer-Name'
else
stPluginName := 'Computer name';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'ComputerName';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/LAN_IP.dpr
18,7 → 18,7
result := PLUGIN_GUID;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
sl: TStringList;
begin
25,13 → 25,13
sl := TStringList.Create;
try
GetLocalIPAddressList(sl);
result := WriteStringListToPointerW(lpIdentifier, cchSize, sl);
result := UD2_WriteStringListToPointerW(lpIdentifier, cchSize, sl);
finally
sl.Free;
end;
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
41,30 → 41,30
stPluginName := 'IP-Adressen'
else
stPluginName := 'IP addresses';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'LAN_IP';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/UserSID.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/Plugins/DHCP_IP.dpr
18,7 → 18,7
result := PLUGIN_GUID;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
sl: TStringList;
begin
25,13 → 25,13
sl := TStringList.Create;
try
GetDHCPIPAddressList(sl);
result := WriteStringListToPointerW(lpIdentifier, cchSize, sl);
result := UD2_WriteStringListToPointerW(lpIdentifier, cchSize, sl);
finally
sl.Free;
end;
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
41,30 → 41,30
stPluginName := 'IP-Adresse der DHCP-Server'
else
stPluginName := 'DHCP IP addresses';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'DHCP_IP';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/ExecuteAlways.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/Plugins/UserSID.dpr
18,15 → 18,15
result := PLUGIN_GUID;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentifier: WideString;
begin
stIdentifier := GetCurrentUserSid;
result := WritePascalStringToPointerW(lpIdentifier, cchSize, stIdentifier);
result := UD2_WritePascalStringToPointerW(lpIdentifier, cchSize, stIdentifier);
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
36,30 → 36,30
stPluginName := 'SID des Benutzers'
else
stPluginName := 'User Security Identifier';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'SID';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/ExecuteAlways.dpr
17,15 → 17,15
result := PLUGIN_GUID;
end;
 
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentifier: WideString;
begin
stIdentifier := 'Always';
result := WritePascalStringToPointerW(lpIdentifier, cchSize, stIdentifier);
result := UD2_WritePascalStringToPointerW(lpIdentifier, cchSize, stIdentifier);
end;
 
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
var
stPluginName: WideString;
primaryLangID: Byte;
35,30 → 35,30
stPluginName := 'Immer ausführen'
else
stPluginName := 'Execute always';
result := WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
result := UD2_WritePascalStringToPointerW(lpPluginName, cchSize, stPluginName);
end;
 
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
result := UD2_WritePascalStringToPointerW(lpPluginVendor, cchSize, 'ViaThinkSoft');
end;
 
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUSCODE; cdecl;
function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): UD2_STATUS; cdecl;
begin
result := WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
result := UD2_WritePascalStringToPointerW(lpPluginVersion, cchSize, '1.0');
end;
 
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUSCODE; cdecl;
function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): UD2_STATUS; cdecl;
var
stIdentificationMethodName: WideString;
begin
stIdentificationMethodName := 'Execute';
result := WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
result := UD2_WritePascalStringToPointerW(lpIdentificationMethodName, cchSize, stIdentificationMethodName);
end;
 
function CheckLicense(lpReserved: LPVOID): UD2_STATUSCODE; cdecl;
function CheckLicense(lpReserved: LPVOID): UD2_STATUS; cdecl;
begin
result := UD2_STATUS_OK;
result := UD2_STATUS_OK_LICENSED;
end;
 
exports
/trunk/UserDetect2/Plugins/GatewayMAC.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/devcpp_plugins/ud2_utils.h
4,6 → 4,8
#include <windows.h>
#include <assert.h>
 
#include "ud2_api.h"
 
// #define USE_OLE32
 
#ifdef USE_OLE32
54,18 → 56,17
}
#endif
 
UD2_STATUSCODE __WRITESTR_W(LPWSTR lpDest, DWORD cchDestSize, LPCWSTR lpSrc) {
if (wcslen(lpSrc) > cchDestSize-1) return UD2_STATUS_BUFFER_TOO_SMALL;
wcscpy(lpDest, lpSrc);
return UD2_STATUS_OK;
BOOL UD2_IsMultilineW(LPCWSTR lpSrc) {
return wcschr(lpSrc, UD2_MULTIPLE_ITEMS_DELIMITER) != NULL;
// return wcspbrk(lpSrc, L"\r\n") != NULL;
}
 
/*
UD2_STATUSCODE __WRITESTR_A(LPSTR lpDest, DWORD cchDestSize, LPCSTR lpSrc) {
if (strlen(lpSrc) > cchDestSize-1) return UD2_STATUS_BUFFER_TOO_SMALL;
strcpy(lpDest, lpSrc);
return UD2_STATUS_OK;
UD2_STATUS UD2_WriteStrW(LPWSTR lpDest, DWORD cchDestSize, LPCWSTR lpSrc) {
if (wcslen(lpSrc) > cchDestSize-1) return UD2_STATUS_ERROR_BUFFER_TOO_SMALL;
wcscpy(lpDest, lpSrc);
if (wcslen(lpSrc) == 0) return UD2_STATUS_NOTAVAIL_UNSPECIFIED;
if (UD2_IsMultilineW(lpSrc)) return UD2_STATUS_OK_MULTILINE;
return UD2_STATUS_OK_SINGLELINE;
}
*/
 
#endif
/trunk/UserDetect2/devcpp_plugins/ud2_status.h
0,0 → 1,72
#ifndef _UD2_STATUS_H_
#define _UD2_STATUS_H_
 
#include <stdio.h>
 
typedef DWORD UD2_STATUS;
typedef BYTE UD2_STATUSCAT; // 0x0..0xF; only 1 nibble!
typedef WORD UD2_STATUSAUTH; // 0x000..0xFFF; only 3 nibbles!
typedef WORD UD2_STATUSMSG;
 
const UD2_STATUSCAT UD2_STATUSCAT_SUCCESS = 0x8;
const UD2_STATUSCAT UD2_STATUSCAT_NOT_AVAIL = 0x9;
const UD2_STATUSCAT UD2_STATUSCAT_ERROR = 0xA;
 
const UD2_STATUSAUTH UD2_STATUSAUTH_GENERIC = 0x100;
 
const UD2_STATUS UD2_STATUS_OK_UNSPECIFIED = 0x81000000;
const UD2_STATUS UD2_STATUS_OK_SINGLELINE = 0x81000001;
const UD2_STATUS UD2_STATUS_OK_MULTILINE = 0x81000002;
const UD2_STATUS UD2_STATUS_OK_LICENSED = 0x81000003;
 
const UD2_STATUS UD2_STATUS_NOTAVAIL_UNSPECIFIED = 0x91000000;
const UD2_STATUS UD2_STATUS_NOTAVAIL_OS_NOT_SUPPORTED = 0x91000001;
const UD2_STATUS UD2_STATUS_NOTAVAIL_HW_NOT_SUPPORTED = 0x91000002;
const UD2_STATUS UD2_STATUS_NOTAVAIL_NO_ENTITIES = 0x91000003;
const UD2_STATUS UD2_STATUS_NOTAVAIL_API_CALL_FAILURE = 0x91000004;
 
const UD2_STATUS UD2_STATUS_ERROR_UNSPECIFIED = 0xA1000000;
const UD2_STATUS UD2_STATUS_ERROR_BUFFER_TOO_SMALL = 0xA1000001;
const UD2_STATUS UD2_STATUS_ERROR_INVALID_ARGS = 0xA1000002;
const UD2_STATUS UD2_STATUS_ERROR_PLUGIN_NOT_LICENSED = 0xA1000003;
 
UD2_STATUS UD2_STATUS_Construct(UD2_STATUSCAT cat, UD2_STATUSAUTH auth, UD2_STATUSMSG msg) {
return (cat << 28) + (auth << 16) + msg;
}
 
UD2_STATUSCAT UD2_STATUS_GetCategory(UD2_STATUS dwStatus) {
return (dwStatus & 0xF0000000) >> 28;
}
 
UD2_STATUSAUTH UD2_STATUS_GetAuthority(UD2_STATUS dwStatus) {
return (dwStatus & 0x0FFF0000) >> 16;
}
 
UD2_STATUSMSG UD2_STATUS_GetMessage(UD2_STATUS dwStatus) {
return dwStatus & 0x0000FFFF;
}
 
BOOL UD2_STATUS_Successful(UD2_STATUS dwStatus) {
return UD2_STATUS_GetCategory(dwStatus) == UD2_STATUSCAT_SUCCESS;
}
 
BOOL UD2_STATUS_NotAvail(UD2_STATUS dwStatus) {
return UD2_STATUS_GetCategory(dwStatus) == UD2_STATUSCAT_NOT_AVAIL;
}
 
BOOL UD2_STATUS_Failed(UD2_STATUS dwStatus) {
return UD2_STATUS_GetCategory(dwStatus) == UD2_STATUSCAT_ERROR;
}
 
int UD2_STATUS_FormatStatusCode(char* szStr, size_t cchLen, UD2_STATUS dwStatus) {
if (cchLen < 11) szStr = NULL;
return sprintf(szStr, "%01x %03x %04x", UD2_STATUS_GetCategory(dwStatus),
UD2_STATUS_GetAuthority(dwStatus),
UD2_STATUS_GetMessage(dwStatus));
}
 
BOOL UD2_STATUS_IsSpecific(UD2_STATUS dwStatus) {
return (dwStatus & 0x0000FFFF) != 0;
}
 
#endif
/trunk/UserDetect2/devcpp_plugins/ExamplePlugin.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/UserDetect2/devcpp_plugins/ExamplePlugin.layout
1,18 → 1,23
[Editor_0]
CursorCol=2
CursorRow=7
CursorRow=34
TopLine=1
LeftChar=1
[Editor_1]
CursorCol=1
CursorRow=1
TopLine=1
CursorCol=52
CursorRow=23
TopLine=10
LeftChar=1
[Editors]
Order=0,1,2
Focused=0
Order=0,1,2,3
Focused=3
[Editor_2]
CursorCol=1
CursorRow=1
TopLine=1
CursorCol=14
CursorRow=50
TopLine=36
LeftChar=1
[Editor_3]
CursorCol=2
CursorRow=55
TopLine=47
LeftChar=1
/trunk/UserDetect2/devcpp_plugins/ExamplePlugin.dev
29,7 → 29,7
SupportXPThemes=0
CompilerSet=3
CompilerSettings=0000000100000000000000000
UnitCount=3
UnitCount=4
 
[VersionInfo]
Major=1
80,3 → 80,13
OverrideBuildCmd=0
BuildCmd=
 
[Unit4]
FileName=ud2_status.h
CompileCpp=1
Folder=
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
 
/trunk/UserDetect2/devcpp_plugins/ud2_api.h
3,6 → 3,7
 
#include <windows.h>
 
#include "ud2_status.h"
#include "ud2_utils.h"
 
#define GUID_USERDETECT2_IDPLUGIN_V1 __GUID("{6C26245E-F79A-416C-8C73-BEA3EC18BB6E}")
9,18 → 10,6
 
const char UD2_MULTIPLE_ITEMS_DELIMITER = 0x10;
 
typedef DWORD UD2_STATUSCODE;
 
// We have chosen these numbers, to avoid that people use
// "return FALSE" ("return 0") to declare an error, and
// "return TRUE" ("return 1") to declare a successful operation.
const UD2_STATUSCODE UD2_STATUS_OK = 0x10000000;
const UD2_STATUSCODE UD2_STATUS_BUFFER_TOO_SMALL = 0x00001000;
const UD2_STATUSCODE UD2_STATUS_INVALID_ARGS = 0x00001001;
const UD2_STATUSCODE UD2_STATUS_NOT_LICENSED = 0x00001002;
 
// ---
 
#ifdef BUILDING_DLL
#define UD2_API extern "C" __cdecl __declspec(dllexport)
#else
28,12 → 17,12
#endif
 
UD2_API GUID PluginIdentifier();
UD2_API UD2_STATUSCODE PluginNameW(LPWSTR lpPluginName, DWORD cchSize, LANGID wLangID);
UD2_API UD2_STATUSCODE PluginVersionW(LPWSTR lpPluginVersion, DWORD cchSize, LANGID wLangID);
UD2_API UD2_STATUSCODE PluginVendorW(LPWSTR lpPluginVendor, DWORD cchSize, LANGID wLangID);
UD2_API UD2_STATUSCODE CheckLicense(LPVOID lpReserved);
UD2_API UD2_STATUSCODE IdentificationMethodNameW(LPWSTR lpIdentificationMethodName, DWORD cchSize);
UD2_API UD2_STATUSCODE IdentificationStringW(LPWSTR lpIdentifier, DWORD cchSize);
UD2_API UD2_STATUS PluginNameW(LPWSTR lpPluginName, DWORD cchSize, LANGID wLangID);
UD2_API UD2_STATUS PluginVersionW(LPWSTR lpPluginVersion, DWORD cchSize, LANGID wLangID);
UD2_API UD2_STATUS PluginVendorW(LPWSTR lpPluginVendor, DWORD cchSize, LANGID wLangID);
UD2_API UD2_STATUS CheckLicense(LPVOID lpReserved);
UD2_API UD2_STATUS IdentificationMethodNameW(LPWSTR lpIdentificationMethodName, DWORD cchSize);
UD2_API UD2_STATUS IdentificationStringW(LPWSTR lpIdentifier, DWORD cchSize);
 
#ifdef BUILDING_DLL
UD2_API GUID PluginInterfaceID() {
/trunk/UserDetect2/devcpp_plugins/ExamplePlugin.cpp
6,29 → 6,29
return __GUID("{7576BD8F-A0C4-436F-B953-B137CBFD9FC7}");
}
 
UD2_API DWORD PluginNameW(LPWSTR lpPluginName, DWORD cchSize, LANGID wLangID) {
UD2_API UD2_STATUS PluginNameW(LPWSTR lpPluginName, DWORD cchSize, LANGID wLangID) {
LPCWSTR str = L"Test-Plugin in C++";
return __WRITESTR_W(lpPluginName, cchSize, str);
return UD2_WriteStrW(lpPluginName, cchSize, str);
}
 
UD2_API UD2_STATUSCODE PluginVersionW(LPWSTR lpPluginVersion, DWORD cchSize, LANGID wLangID) {
UD2_API UD2_STATUS PluginVersionW(LPWSTR lpPluginVersion, DWORD cchSize, LANGID wLangID) {
LPCWSTR str = L"1.0";
return __WRITESTR_W(lpPluginVersion, cchSize, str);
return UD2_WriteStrW(lpPluginVersion, cchSize, str);
}
 
UD2_API UD2_STATUSCODE PluginVendorW(LPWSTR lpPluginVendor, DWORD cchSize, LANGID wLangID) {
UD2_API UD2_STATUS PluginVendorW(LPWSTR lpPluginVendor, DWORD cchSize, LANGID wLangID) {
LPCWSTR str = L"ViaThinkSoft";
return __WRITESTR_W(lpPluginVendor, cchSize, str);
return UD2_WriteStrW(lpPluginVendor, cchSize, str);
}
 
UD2_API UD2_STATUSCODE CheckLicense(LPVOID lpReserved) {
return UD2_STATUS_OK;
UD2_API UD2_STATUS CheckLicense(LPVOID lpReserved) {
return UD2_STATUS_OK_LICENSED;
}
 
UD2_API UD2_STATUSCODE IdentificationMethodNameW(LPWSTR lpIdentificationMethodName, DWORD cchSize) {
return __WRITESTR_W(lpIdentificationMethodName, cchSize, L"TEST");
UD2_API UD2_STATUS IdentificationMethodNameW(LPWSTR lpIdentificationMethodName, DWORD cchSize) {
return UD2_WriteStrW(lpIdentificationMethodName, cchSize, L"TEST");
}
 
UD2_API UD2_STATUSCODE IdentificationStringW(LPWSTR lpIdentifier, DWORD cchSize) {
return __WRITESTR_W(lpIdentifier, cchSize, L"Example");
UD2_API UD2_STATUS IdentificationStringW(LPWSTR lpIdentifier, DWORD cchSize) {
return UD2_WriteStrW(lpIdentifier, cchSize, L"Example");
}
/trunk/UserDetect2/vcl/AlphaNumSort.pas
0,0 → 1,122
unit AlphaNumSort;
 
(*
* The Alphanum Algorithm is an improved sorting algorithm for strings
* containing numbers. Instead of sorting numbers in ASCII order like
* a standard sort, this algorithm sorts numbers in numeric order.
*
* The Alphanum Algorithm is discussed at http://www.DaveKoelle.com
*
* Translated from Java to Delphi by Daniel Marschall, www.daniel-marschall.de
* Revision 2015-09-30
*
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*)
 
interface
 
uses
SysUtils;
 
function AlphaNumCompare(s1, s2: string): integer;
 
implementation
 
function isDigit(ch: char): boolean;
begin
result := (ord(ch) >= 48) and (ord(ch) <= 57);
end;
 
// Length of string is passed in for improved efficiency (only need to calculate it once)
function getChunk(s: string; slength, marker: integer): string;
var
chunk: string;
c: char;
begin
c := s[marker+1];
chunk := chunk + c;
Inc(marker);
if isDigit(c) then
begin
while marker < slength do
begin
c := s[marker+1];
if not isDigit(c) then break;
chunk := chunk + c;
Inc(marker);
end;
end
else
begin
while marker < slength do
begin
c := s[marker+1];
if (isDigit(c)) then break;
chunk := chunk + c;
Inc(marker);
end;
end;
result := chunk;
end;
 
function AlphaNumCompare(s1, s2: string): integer;
var
s1Length, s2Length, thisChunkLength: integer;
thisMarker, thatMarker, i: integer;
thisChunk, thatChunk: string;
begin
thisMarker := 0;
thatMarker := 0;
s1Length := Length(s1);
s2Length := Length(s2);
 
while (thisMarker < s1Length) and (thatMarker < s2Length) do
begin
thisChunk := getChunk(s1, s1Length, thisMarker);
Inc(thisMarker, Length(thisChunk));
 
thatChunk := getChunk(s2, s2Length, thatMarker);
Inc(thatMarker, Length(thatChunk));
 
// If both chunks contain numeric characters, sort them numerically
if isDigit(thisChunk[1]) and isDigit(thatChunk[1]) then
begin
// Simple chunk comparison by length.
thisChunkLength := Length(thisChunk);
result := thisChunkLength - Length(thatChunk);
// If equal, the first different number counts
if result = 0 then
begin
for i := 0 to thisChunkLength-1 do
begin
result := ord(thisChunk[i+1]) - ord(thatChunk[i+1]);
if result <> 0 then Exit;
end;
end;
end
else
begin
result := CompareText(thisChunk, thatChunk);
end;
 
if result <> 0 then Exit;
end;
 
result := s1Length - s2Length;
end;
 
end.
/trunk/UserDetect2/UD2_Main.dfm
3,7 → 3,7
Top = 177
Width = 784
Height = 440
ActiveControl = Memo1
ActiveControl = ListView2
Caption = 'ViaThinkSoft UserDetect2'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
22,9 → 22,9
Top = 0
Width = 768
Height = 402
ActivePage = TabSheet5
ActivePage = TabSheet4
Align = alClient
TabIndex = 4
TabIndex = 3
TabOrder = 0
object TasksTabSheet: TTabSheet
Caption = 'Tasks'
164,6 → 164,9
Width = 100
end
item
Caption = 'Load time'
end
item
Caption = 'GUID'
Width = 100
end>
/trunk/UserDetect2/Documentation.rtf
4,15 → 4,15
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f374\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f375\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f377\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f378\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f379\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f380\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f381\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f382\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f394\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f395\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
{\f397\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f398\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f399\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f400\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
{\f401\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f402\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f714\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f715\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
{\f717\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f718\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f721\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f722\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
{\f734\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\f735\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\f737\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\f738\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}
{\f741\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\f742\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\f744\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f745\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
{\f747\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f748\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f751\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f752\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f375\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f376\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f378\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f379\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f380\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f381\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f382\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f383\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f395\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f396\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
{\f398\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f399\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f400\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f401\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
{\f402\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f403\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f715\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f716\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
{\f718\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f719\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f722\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f723\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
{\f735\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\f736\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\f738\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\f739\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}
{\f742\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\f743\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\f745\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f746\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
{\f748\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f749\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f752\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f753\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
63,50 → 63,89
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\lin4320 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid846022938}{\list\listtemplateid132298292\listhybrid{\listlevel\levelnfc23
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid846022938}{\list\listtemplateid-306535956\listhybrid{\listlevel\levelnfc0
\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2
\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative
\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
\levelindent0{\leveltext\leveltemplateid67567631\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0
{\leveltext\leveltemplateid67567641\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567643\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480\lin6480 }{\listname ;}\listid1281301155}{\list\listtemplateid132298292\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\lin4320 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid1377975272}{\list\listtemplateid816618932\listhybrid{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}
\f10\fbias0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\lin5760 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid1377975272}
{\list\listtemplateid816618932\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\lin720 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0
\fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }
{\listname ;}\listid1468545555}{\list\listtemplateid-630935730\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}
\f3\fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\lin1440 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid1730224345}{\list\listtemplateid819635246\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid67567631\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567641\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567643\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567631\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid1468545555}
{\list\listtemplateid-1254869828\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
\fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-180\li6480\lin6480 }{\listname ;}\listid1652171673}{\list\listtemplateid-630935730\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0
\fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\lin2160 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid1730224345}{\list\listtemplateid607951628\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
\leveltemplateid67567631\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567641\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567643\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567631\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567641\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567643\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567631\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567641\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567643\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480\lin6480 }{\listname ;}\listid1772311604}{\list\listtemplateid1436039568\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567631\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace360\levelindent0{\leveltext\leveltemplateid67567641\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360
\levelindent0{\leveltext\leveltemplateid67567643\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567631\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567641\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567643\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567631\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567641\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567643\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480\lin6480 }{\listname ;}\listid2091078015}{\list\listtemplateid819635246\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0
\levelindent0{\leveltext\leveltemplateid67567643\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0
{\leveltext\leveltemplateid67567631\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567641\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567643\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567631\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567641\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67567643\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480\lin6480 }{\listname ;}\listid2130318317}}{\*\listoverridetable{\listoverride\listid2130318317\listoverridecount0\ls1}{\listoverride\listid601692740
\listoverridecount0\ls2}{\listoverride\listid1468545555\listoverridecount0\ls3}{\listoverride\listid1377975272\listoverridecount0\ls4}{\listoverride\listid846022938\listoverridecount0\ls5}{\listoverride\listid1730224345\listoverridecount0\ls6}}{\*\pgptbl
{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid156011\rsid203795\rsid206584\rsid288678\rsid460155\rsid538759\rsid668536\rsid674965\rsid938415\rsid1657439\rsid1929326\rsid2753010
\rsid3025658\rsid3163531\rsid3285525\rsid3569955\rsid3635325\rsid3895034\rsid4871690\rsid5064448\rsid5325168\rsid5733712\rsid6372815\rsid6442210\rsid6707673\rsid6709676\rsid6896162\rsid7146872\rsid7495966\rsid9121458\rsid9257259\rsid9307250\rsid9596859
\rsid9704937\rsid9711883\rsid10516537\rsid10644118\rsid10829644\rsid11426136\rsid11541424\rsid12134973\rsid12146773\rsid12258161\rsid12666715\rsid12719322\rsid12853255\rsid13119319\rsid13328561\rsid13852431\rsid13978329\rsid14159743\rsid14251116
\rsid14488370\rsid14512558\rsid14576865\rsid14754795\rsid15078789\rsid15082913\rsid15095912\rsid15153839\rsid15484970\rsid15940546\rsid16212651\rsid16262044\rsid16282930\rsid16384757\rsid16387594\rsid16413704}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0
\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Daniel Marschall}{\creatim\yr2015\mo9\dy22\hr19\min3}{\revtim\yr2015\mo9\dy28\min23}{\version58}{\edmins0}{\nofpages9}{\nofwords1926}{\nofchars12135}
{\nofcharsws14033}{\vern57439}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1134\gutter0\ltrsect
\listoverridecount0\ls2}{\listoverride\listid1468545555\listoverridecount0\ls3}{\listoverride\listid1377975272\listoverridecount0\ls4}{\listoverride\listid846022938\listoverridecount0\ls5}{\listoverride\listid1730224345\listoverridecount0\ls6}
{\listoverride\listid2091078015\listoverridecount0\ls7}{\listoverride\listid1281301155\listoverridecount0\ls8}{\listoverride\listid1772311604\listoverridecount0\ls9}{\listoverride\listid1652171673\listoverridecount0\ls10}}{\*\pgptbl {\pgp\ipgp0\itap0\li0
\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid150970\rsid156011\rsid203795\rsid206584\rsid288678\rsid460155\rsid538759\rsid668536\rsid674965\rsid938415\rsid1340899\rsid1657439\rsid1929326\rsid2576803
\rsid2753010\rsid2884605\rsid3022222\rsid3025658\rsid3028086\rsid3163531\rsid3285525\rsid3569955\rsid3635325\rsid3895034\rsid3943969\rsid3998625\rsid4476179\rsid4656946\rsid4871690\rsid5064448\rsid5114084\rsid5178738\rsid5325168\rsid5733712\rsid5907818
\rsid6372815\rsid6442210\rsid6707673\rsid6709676\rsid6776079\rsid6896162\rsid7105396\rsid7146872\rsid7495966\rsid7814608\rsid8269150\rsid8799422\rsid9121458\rsid9180311\rsid9257259\rsid9258736\rsid9307250\rsid9318354\rsid9373535\rsid9388365\rsid9596859
\rsid9704937\rsid9711883\rsid10516537\rsid10644118\rsid10829644\rsid11096861\rsid11404612\rsid11426136\rsid11541424\rsid11930278\rsid12134973\rsid12146773\rsid12258161\rsid12390765\rsid12666715\rsid12719322\rsid12853255\rsid13119319\rsid13328561
\rsid13381599\rsid13852431\rsid13966640\rsid13978329\rsid14159743\rsid14251116\rsid14488370\rsid14512558\rsid14576865\rsid14754795\rsid15078789\rsid15082545\rsid15082913\rsid15095912\rsid15153839\rsid15484970\rsid15888011\rsid15940546\rsid16212651
\rsid16262044\rsid16282930\rsid16384757\rsid16387594\rsid16413704}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Daniel Marschall}
{\creatim\yr2015\mo9\dy22\hr19\min3}{\revtim\yr2015\mo9\dy30\hr5\min42}{\version86}{\edmins0}{\nofpages12}{\nofwords2985}{\nofchars18812}{\nofcharsws21754}{\vern57439}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1134\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120
\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot9121458 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale150\rsidroot9121458 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s18\qc \li0\ri0\sb240\sa60\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid5325168 \rtlch\fcs1
114,7 → 153,7
\hich\af31502\dbch\af31501\loch\f31502 ViaThinkSoft UserDetect2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs40\lang1033\langfe1031\langnp1033\insrsid5325168
\par }\pard\plain \ltrpar\qr \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12134973 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 Daniel Marschall
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11541424 \hich\af31506\dbch\af31505\loch\f31506 28}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 September 2015}{
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af31506\dbch\af31505\loch\f31506 30}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 September 2015}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid4871690 \rtlch\fcs1 \ab\af0\afs32\alang1025 \ltrch\fcs0
\b\fs32\lang1031\langfe1031\kerning32\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9307250 \hich\af31502\dbch\af31501\loch\f31502 What is UserDetect2?
127,7 → 166,7
\lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 c}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 omputer}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506
name), so that a single executable file, e.g. shared over a network drive, a flash drive or external hard disk, can perform tasks for different work stations.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561
\hich\af31506\dbch\af31505\loch\f31506 The environment identif\hich\af31506\dbch\af31505\loch\f31506 ications can be extended by plugins.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561\charrsid9307250
\hich\af31506\dbch\af31505\loch\f31506 The environment ident\hich\af31506\dbch\af31505\loch\f31506 ifications can be extended by plugins.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561\charrsid9307250
\par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid12666715 \rtlch\fcs1 \ab\af0\afs32\alang1025 \ltrch\fcs0
\b\fs32\lang1031\langfe1031\kerning32\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid4871690 \hich\af31502\dbch\af31501\loch\f31502 Usage}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13119319 \hich\af31502\dbch\af31501\loch\f31502 example}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid4871690
136,10 → 175,10
You have an external harddisk which you use for a daily backup with }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15082913 \hich\af31506\dbch\af31505\loch\f31506 Microsoft }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 RoboCopy or any other backup tool.
\par \hich\af31506\dbch\af31505\loch\f31506 You use this external drive to perform backups for different computers.
\par \hich\af31506\dbch\af31505\loch\f31506 Additionally, you wa\hich\af31506\dbch\af31505\loch\f31506
nt to decide if the computer should be shutdown after the backup, or not. (Can be useful if you leave the computer alone when you go to bed, while the backup is performing)
\par \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 If you have 2 computers with the names \'93\loch\f31506 \hich\f31506 JohnPC\'94\loch\f31506 \hich\f31506 and \'93\loch\f31506 \hich\f31506 JohnLaptop\'94\loch\f31506 , then you would pr
\hich\af31506\dbch\af31505\loch\f31506 obably need 4 batch files:
\par \hich\af31506\dbch\af31505\loch\f31506 Additionally, you \hich\af31506\dbch\af31505\loch\f31506
want to decide if the computer should be shutdown after the backup, or not. (Can be useful if you leave the computer alone when you go to bed, while the backup is performing)
\par \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 If you have 2 computers with the names \'93\loch\f31506 \hich\f31506 JohnPC\'94\loch\f31506 \hich\f31506 and \'93\loch\f31506 \hich\f31506 JohnLaptop\'94\loch\f31506 , then you would
\hich\af31506\dbch\af31505\loch\f31506 probably need 4 batch files:
\par }\pard \ltrpar\ql \li720\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid12666715 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715
\hich\af31506\dbch\af31505\loch\f31506 E:\\JohnPC\\backup_no_shutdown.bat
\par \hich\af31506\dbch\af31505\loch\f31506 E:\\JohnPC\\backup_shutdown.bat
146,7 → 185,7
\par \hich\af31506\dbch\af31505\loch\f31506 E:\\JohnLaptop\\backup_no_shutdown.bat
\par \hich\af31506\dbch\af31505\loch\f31506 E:\\JohnLaptop\\backup_shutdown.bat
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506
If you accidently start the wrong batch file, the backups will be inconsistent, and there may b\hich\af31506\dbch\af31505\loch\f31506 e data loss.
If you accidently start the wrong batch file, the backups will be inconsistent, and there may\hich\af31506\dbch\af31505\loch\f31506 be data loss.
\par \hich\af31506\dbch\af31505\loch\f31506 But if you use UserDetect2, you could create following Task}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 Definition }{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 File:
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
161,8 → 200,8
\hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 JohnLaptop\\backup_no_shutdown.bat}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 [}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 Shu
\hich\af2\dbch\af31505\loch\f2 tdown}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 ]
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 [}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 Shutdown}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 ]
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 Description=Run backup and shutdown}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 ComputerName:JohnPC}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
\hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 JohnPC\\backup_shutdown.bat}{\rtlch\fcs1 \af2 \ltrch\fcs0
171,8 → 210,10
\hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 JohnLaptop\\backup_shutdown.bat}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715
\par \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 In this case, you would only need to run \'93\loch\f31506 E:\\\hich\f31506 UserDetect2.exe\'94\hich\af31506\dbch\af31505\loch\f31506
(maybe even use it as AutoPlay application) and then select if you want to perform a backup with or without shutdown. UserDetect2 will select the correct batch file for you.
\par \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 In this case, you would only need to run \'93\loch\f31506 E:\\\hich\f31506 UserDetect2.exe\'94\loch\f31506 (maybe even use it}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid8799422 \hich\af31506\dbch\af31505\loch\f31506 as AutoRun}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 application}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid8799422 \hich\af31506\dbch\af31505\loch\f31506 , if you are working with Windows Vista or previous versions of Windows}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715
\hich\af31506\dbch\af31505\loch\f31506 ) and then select if you want to perform a backup with or without shutdown. UserDetect2 will select the correct batch file for you.
\par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid12666715 \rtlch\fcs1 \ab\af0\afs32\alang1025 \ltrch\fcs0
\b\fs32\lang1031\langfe1031\kerning32\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af31502\dbch\af31501\loch\f31502 Command Line}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31502\dbch\af31501\loch\f31502 usage}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
180,10 → 221,10
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15484970 \hich\af31506\dbch\af31505\loch\f31506 Syntax:\tab \tab }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af2\dbch\af31505\loch\f2 UD2.exe [}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af2\dbch\af31505\loch\f2 TaskDefinitionFile}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af2\dbch\af31505\loch\f2 [TaskName]]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15484970
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16387594 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16387594 \hich\af31506\dbch\af31505\loch\f31506
Examples:
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16387594 {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid16387594\charrsid9388365
\hich\af31506\dbch\af31505\loch\f31506 Examples:
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155
\hich\af2\dbch\af31505\loch\f2 UD2.exe}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 without parameters
\hich\af2\dbch\af31505\loch\f2 UD2.exe}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 without parame\hich\af31506\dbch\af31505\loch\f31506 ters
\par }\pard \ltrpar\ql \li720\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid16387594 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715
\hich\af31506\dbch\af31505\loch\f31506 The GUI of UserDetect2 will be used.
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155
195,7 → 236,7
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155
\hich\af2\dbch\af31505\loch\f2 UD2.exe Foo.ini ExampleTask1
\par }\pard \ltrpar\ql \li720\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid16387594 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715
\hich\af31506\dbch\af31505\loch\f31506 The GUI will not be used. Instea\hich\af31506\dbch\af31505\loch\f31506 d, the task ExampleTask1 of the Task}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973
\hich\af31506\dbch\af31505\loch\f31506 The GUI will not be used. Instead, the task Exam\hich\af31506\dbch\af31505\loch\f31506 pleTask1 of the Task}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973
\hich\af31506\dbch\af31505\loch\f31506 Definition }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 File Foo.ini will be called immediately.
\par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid12666715 \rtlch\fcs1 \ab\af0\afs32\alang1025 \ltrch\fcs0
\b\fs32\lang1031\langfe1031\kerning32\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14159743 \hich\af31502\dbch\af31501\loch\f31502 Task Definition File (}{
222,24 → 263,24
\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid11426136
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
\hich\af2\dbch\af31505\loch\f2 [ExampleTask1]
\par \hich\af2\dbch\af31505\loch\f2 Description=Run Task #1
\par \hich\af2\dbch\af31505\loch\f2 Icon=%SystemRoot%\\syste\hich\af2\dbch\af31505\loch\f2 m32\\Shell32.dll,3
\par \hich\af2\dbch\af31505\loch\f2 Descript\hich\af2\dbch\af31505\loch\f2 ion=Run Task #1
\par \hich\af2\dbch\af31505\loch\f2 Icon=%SystemRoot%\\system32\\Shell32.dll,3
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3163531\charrsid3163531 \hich\af2\dbch\af31505\loch\f2 CloseAfterLaunching}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
\hich\af2\dbch\af31505\loch\f2 =true
\par \hich\af2\dbch\af31505\loch\f2 ComputerName:}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid7495966 \hich\af2\dbch\af31505\loch\f2 JohnPC}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 =calc.exe
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 MAC:}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid7495966 \hich\af2\dbch\af31505\loch\f2 66-55-44-33-22-11}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 =notepad}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 .exe
 
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af2\dbch\af31505\loch\f2 LAN_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 MAC:}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid7495966 \hich\af2\dbch\af31505\loch\f2 66-55-44-33-22-11}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 =notepad}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 .exe
\par \hich\af2\dbch\af31505\loch\f2 SID:S-1-5-21-3669290038-3293053376-393244323-1000=calc.exe}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715
\par
\par \hich\af2\dbch\af31505\loch\f2 [ExampleTask2}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 ]
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 Description=Run Task #2}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 ComputerName:}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid7495966 \hich\af2\dbch\af31505\loch\f2 JohnLaptop}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 =calc.exe
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 MAC:11-22-33-44-55-}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid7495966 \hich\af2\dbch\af31505\loch\f2 66}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 =notepad}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 .exe
 
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 ComputerName\hich\af2\dbch\af31505\loch\f2 :}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid7495966
\hich\af2\dbch\af31505\loch\f2 JohnLaptop}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 =calc.exe
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af2\dbch\af31505\loch\f2 LAN_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 MAC:11-22-33-44-55-}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid7495966 \hich\af2\dbch\af31505\loch\f2 66}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 =notepad}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912 \hich\af2\dbch\af31505\loch\f2 .exe
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12146773 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid15095912
\hich\af2\dbch\af31505\loch\f2 SID:S-1-5-21-3669290038-3293053376-393244323-100}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af2\dbch\af31505\loch\f2 1}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12146773 \hich\af2\dbch\af31505\loch\f2 =calc.exe}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid12146773
268,7 → 309,7
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 This is an optional field, to replace the icon of the task with a different icon. The syntax is:
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 Icon: <IconDLL>,<IconIndex>
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 For example, }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155
\hich\af2\dbch\af31505\loch\f2 Icon=%SystemRoot%\\\hich\af2\dbch\af31505\loch\f2 system32\\Shell32.dll,3
\hich\af2\dbch\af31505\loch\f2 Icon=%SystemRoot%\\sy\hich\af2\dbch\af31505\loch\f2 stem32\\Shell32.dll,3
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 Will use Icon #3 of the file Shell32.dll (environment variables like }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 %SystemRoot%}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506
are resolved).
279,13 → 320,12
\lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 (or }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 yes}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 1}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506
, then the GUI will close once the task is started. Otherw}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 ise, yo\hich\af31506\dbch\af31505\loch\f31506 u can write }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506
\hich\af31506\dbch\af31505\loch\f31506 (or }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 no}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255
\hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 0}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255
\hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 remove the field}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 .}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 The d\hich\af31506\dbch\af31505\loch\f31506 efault value is\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af2 \ltrch\fcs0
, then the GUI will close once the task is started. Otherw}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 ise, you can write }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 (or }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 no}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 0}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 remove the field}{\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 The default value is }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 .}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12666715
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid3163531\charrsid3163531 \hich\af31506\dbch\af31505\loch\f31506 Field }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\ul\lang1033\langfe1031\langnp1033\insrsid3163531\charrsid3163531
294,19 → 334,17
\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 If the value is }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 (or }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 yes}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 , then a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3163531 \hich\af31506\dbch\af31505\loch\f31506
warning dialog will be shown if a task is called, but no applic\hich\af31506\dbch\af31505\loch\f31506 ation could be star\hich\af31506\dbch\af31505\loch\f31506
ted, because no identification matches the current environment, or if no identification fields are added in the current task.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506
\hich\af31506\dbch\af31505\loch\f31506 Otherwise, \hich\af31506\dbch\af31505\loch\f31506 y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 ou can write }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506
\hich\af31506\dbch\af31505\loch\f31506 (or }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 no}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255
\hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 0}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255
\hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 remove the field}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155 .}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 The d\hich\af31506\dbch\af31505\loch\f31506 efault value is\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 .}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 ), then a}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3163531 \hich\af31506\dbch\af31505\loch\f31506 warning dia\hich\af31506\dbch\af31505\loch\f31506
log will be shown if a task is called, but no application could be started, because no identification matches the current environment, or if no identification fields are added in the current task.}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 Otherwise, y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 ou can write }{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 (or
}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 no}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 , or
}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 0}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155 \hich\af31506\dbch\af31505\loch\f31506 , or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 remove the
\hich\af31506\dbch\af31505\loch\f31506 field}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255
\hich\af31506\dbch\af31505\loch\f31506 The default value is }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 false}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255\charrsid460155
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16413704 \rtlch\fcs1 \ab\ai\af0\afs28\alang1025 \ltrch\fcs0
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3895034 \hich\af31502\dbch\af31501\loch\f31502 Identification fields}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704
315,34 → 353,45
Identification fields are located in the Task section, too. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 Each identification }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 field}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 has following syntax:
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155
\hich\af2\dbch\af31505\loch\f2 <PluginShortName>:<IdentificationString>=<Command> <Optional Parameters>
\hich\af2\dbch\af31505\loch\f2 <}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid2884605\charrsid2884605 \hich\af2\dbch\af31505\loch\f2 IdentificationMethodName}{\rtlch\fcs1 \af0 \ltrch\fcs0
\b\lang1033\langfe1031\langnp1033\insrsid2884605\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid460155 \hich\af2\dbch\af31505\loch\f2
>:<IdentificationString>=<Command> <Optional Parameters>
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16387594 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1657439 \hich\af31506\dbch\af31505\loch\f31506
Example}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16387594 \hich\af31506\dbch\af31505\loch\f31506 :}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16387594 {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid1657439\charrsid9388365
\hich\af31506\dbch\af31505\loch\f31506 Example}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid16387594\charrsid9388365 \hich\af31506\dbch\af31505\loch\f31506 :}{\rtlch\fcs1 \af0 \ltrch\fcs0
\i\lang1033\langfe1031\langnp1033\insrsid12666715\charrsid9388365
\par }\pard \ltrpar\ql \li720\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid16387594 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid16387594 \hich\af2\dbch\af31505\loch\f2
ComputerName:John=calc.exe
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 If the plugin }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506
with the MethodName }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \loch\af31506\dbch\af31505\hich\f31506 \'93\loch\f31506 Comput\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 erName\'94\loch\f31506 will }{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 returns}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506
the identification \'93\loch\f31506 \hich\f31506 John\'94\loch\f31506 \hich\f31506 , then the program \'93\loch\f31506 \hich\f31506 calc.exe\'94\loch\f31506 will be started.}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid16387594\charrsid16387594
with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2884605\charrsid2884605 \hich\af31506\dbch\af31505\loch\f31506 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2884605
\hich\af31506\dbch\af31505\loch\f31506 dentification method n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2884605\charrsid2884605 \hich\af31506\dbch\af31505\loch\f31506 ame}{\rtlch\fcs1 \af0 \ltrch\fcs0
\b\lang1033\langfe1031\langnp1033\insrsid2884605\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715 \loch\af31506\dbch\af31505\hich\f31506 \'93\loch\f31506 \hich\f31506
ComputerName\'94\loch\f31506 will }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 returns}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12666715
\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 the identification \'93\loch\f31506 \hich\f31506 John\'94\loch\f31506 \hich\f31506 , then the program \'93\loch\f31506 \hich\f31506 calc.exe\'94\loch\f31506 will be started.}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16387594\charrsid16387594
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16387594 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12258161 \hich\af31506\dbch\af31505\loch\f31506
The short name of the plugin\hich\af31506\dbch\af31505\loch\f31506 s\hich\af31506\dbch\af31505\loch\f31506 , as well as the identification string\hich\af31506\dbch\af31505\loch\f31506 s\hich\af31506\dbch\af31505\loch\f31506 can be seen in the GUI in the
\loch\af31506\dbch\af31505\hich\f31506 \'93\hich\af31506\dbch\af31505\loch\f31506 Identifications\loch\af31506\dbch\af31505\hich\f31506 \'94\hich\af31506\dbch\af31505\loch\f31506
The short name of the plugins, as well as the identification strings can be seen in the GUI in \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 the \'93\loch\f31506 \hich\f31506 Identifications\'94\loch\f31506
tab. The GUI can also create a Task Definition File (INI file) template for you.
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3163531 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12258161 \hich\af31506\dbch\af31505\loch\f31506
Alternative\hich\af31506\dbch\af31505\loch\f31506 ly to the }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 PluginShortName}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 , you can use the GUID of the plugin.\hich\af31506\dbch\af31505\loch\f31506 The syntax is }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid16282930 \{\hich\af2\dbch\af31505\loch\f2 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12258161
\hich\af31506\dbch\af31505\loch\f31506 .
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 Attention: }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12853255
\hich\af2\dbch\af31505\loch\f2 PluginShortName}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 and }{\rtlch\fcs1 \af2 \ltrch\fcs0
\b\f2\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 IdentificationString}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12258161
\hich\af31506\dbch\af31505\loch\f31506 are case sensitive! If you use a GUID instead of }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12853255 \hich\af2\dbch\af31505\loch\f2 PluginShortName}{\rtlch\fcs1 \af0
\ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 , either all digits have to be uppercase, or all digits have to be lowe\hich\af31506\dbch\af31505\loch\f31506 rcase, but not mixed.
 
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558 \hich\af31506\dbch\af31505\loch\f31506 Notes about the \hich\af31506\dbch\af31505\loch\f31506 command}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 launching}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558 \hich\af31506\dbch\af31505\loch\f31506 :
Alternatively to the }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9388365 \hich\af2\dbch\af31505\loch\f2 MethodName}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12258161
\hich\af31506\dbch\af31505\loch\f31506 , you can use the GUID of the plugin. The syntax is }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid16282930 \{\hich\af2\dbch\af31505\loch\f2
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 .
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 Attention:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid9388365
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\lang1033\langfe1031\langnp1033\insrsid2884605 \hich\af2\dbch\af31505\loch\f2 1.\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin720\itap0\pararsid3028086 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid2884605 \hich\af2\dbch\af31505\loch\f2 IdentificationMethodName}{\rtlch\fcs1 \af0
\ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 and }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12853255 \hich\af2\dbch\af31505\loch\f2
IdentificationString}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 are case sensitive! If you use a GUID instead of }{\rtlch\fcs1 \af2 \ltrch\fcs0
\b\f2\lang1033\langfe1031\langnp1033\insrsid2884605 \hich\af2\dbch\af31505\loch\f2 IdentificationMethodName}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid12258161 \hich\af31506\dbch\af31505\loch\f31506
, either all digits have to be uppercase, or all digits have to be lowercase, but not mixed.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid12258161
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \b\f31506\fs22\lang1033\langfe1031\langnp1033\insrsid9388365 \hich\af31506\dbch\af31505\loch\f31506 2.\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid9388365
\hich\af31506\dbch\af31505\loch\f31506 Although it is recommended }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid9388365\charrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 to name the DLL file equally to the }{\rtlch\fcs1
\af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 i\hich\af31506\dbch\af31505\loch\f31506 dentification method n\hich\af31506\dbch\af31505\loch\f31506 ame}{\rtlch\fcs1 \af0
\ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid9388365\charrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 , there is no guarantee th\hich\af31506\dbch\af31505\loch\f31506 at they match. \hich\af31506\dbch\af31505\loch\f31506 Only the }{
\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 i\hich\af31506\dbch\af31505\loch\f31506 dentification method n\hich\af31506\dbch\af31505\loch\f31506 ame
\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid9388365\charrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 will be used, not the name of the DLL file!
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3163531 {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid14512558\charrsid9388365
\hich\af31506\dbch\af31505\loch\f31506 Notes about the command}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid12258161\charrsid9388365 \hich\af31506\dbch\af31505\loch\f31506 launching}{\rtlch\fcs1 \af0 \ltrch\fcs0
\i\lang1033\langfe1031\langnp1033\insrsid14512558\charrsid9388365 \hich\af31506\dbch\af31505\loch\f31506 :
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid12258161 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin720\itap0\pararsid12258161 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12258161 \hich\af31506\dbch\af31505\loch\f31506 I\hich\af31506\dbch\af31505\loch\f31506
f multiple identifications are matching (even if the program is the same), the programs will be called anyway.
353,45 → 402,45
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid14512558 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558
\hich\af31506\dbch\af31505\loch\f31506 Relative paths are allowed.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558\charrsid14512558
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid14512558 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558
\hich\af31506\dbch\af31505\loch\f31506 A path\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3163531\charrsid3163531 \hich\af31506\dbch\af31505\loch\f31506 with white spaces (e.g. "C:\\
Program Files\\xyz.exe") must be enclosed in quotes.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3163531
\hich\af31506\dbch\af31505\loch\f31506 A path }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3163531\charrsid3163531 \hich\af31506\dbch\af31505\loch\f31506 with white spaces (e.g. "C:\\Program Files\\xyz.exe"
\hich\af31506\dbch\af31505\loch\f31506 ) must be enclosed in quotes.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3163531
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid14754795 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14754795
\hich\af31506\dbch\af31505\loch\f31506 Also non-executable files, like Word-Documents}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14754795
\hich\af31506\dbch\af31505\loch\f31506 can be executed.
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16413704 \rtlch\fcs1 \ab\ai\af0\afs28\alang1025 \ltrch\fcs0
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \loch\af31502\dbch\af31501\hich\f31502 \'93\loch\f31502 Run in same directory
\loch\af31502\dbch\af31501\hich\f31502 \'94\loch\f31502 compatibility prefix
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \loch\af31502\dbch\af31501\hich\f31502 \'93\loch\f31502 Run in }{\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af31502\dbch\af31501\loch\f31502 own}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31502\dbch\af31501\loch\f31502 \hich\f31502 directory\'94
\loch\f31502 compatibility prefix
\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16413704 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558 \hich\af31506\dbch\af31505\loch\f31506
Some applications or batch files require that they are called in the\hich\af31506\dbch\af31505\loch\f31506 ir ow\hich\af31506\dbch\af31505\loch\f31506 n \hich\af31506\dbch\af31505\loch\f31506 directory}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 (this is technically a bug), and will fail if the working directory is different.\hich\af31506\dbch\af31505\loch\f31506
In this case, you can use following special syntax:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 MAC:11-22-33-44-55-66\hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\b\f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 $RISD$}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 test\\example
\hich\af2\dbch\af31505\loch\f2 .bat
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 The prefi\hich\af31506\dbch\af31505\loch\f31506 x }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 $RISD\hich\af2\dbch\af31505\loch\f2 $}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506
stands for \loch\af31506\dbch\af31505\hich\f31506 \'93\hich\af31506\dbch\af31505\loch\f31506 Run-In-Same-Directory\loch\af31506\dbch\af31505\hich\f31506 \'94\hich\af31506\dbch\af31505\loch\f31506
. In this case, the working directory of example.bat will be test\\ , instead of the directory where UserDetect2.exe was started from.
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 Note:
Some applications or batch files require that they are called in their own directory}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 (this is technically a bug),
\hich\af31506\dbch\af31505\loch\f31506 and will fail if the working directory is different. In this case, you can use following special syntax:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid14512558
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af2\dbch\af31505\loch\f2 LAN_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2
MAC:11-22-33-44-55-66=}{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af2\dbch\af31505\loch\f2 $RIO}{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704
\hich\af2\dbch\af31505\loch\f2 D$}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 test\\example.bat
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 The prefix }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af2\dbch\af31505\loch\f2 $RIO}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 D$}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af31506\dbch\af31505\loch\f31506
\hich\f31506 stands for \'93\loch\f31506 Run-i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 n-}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1340899
\hich\af31506\dbch\af31505\loch\f31506 o\hich\af31506\dbch\af31505\loch\f31506 wn\hich\af31506\dbch\af31505\loch\f31506 -d}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506
irectory\'94\loch\f31506 . In this case, the working directory of example.bat w\hich\af31506\dbch\af31505\loch\f31506 ill be test\\ , instead of the directory where UserDetect2.exe was started from.
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid12853255\charrsid9388365 \hich\af31506\dbch\af31505\loch\f31506 Note:
\par }\pard \ltrpar\ql \li720\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid12853255 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704
\hich\af31506\dbch\af31505\loch\f31506 If yo\hich\af31506\dbch\af31505\loch\f31506 ur application or batch file is intolerant to \hich\af31506\dbch\af31505\loch\f31506 different working directories, please consider following}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12853255 \hich\af31506\dbch\af31505\loch\f31506 to solve this bug \loch\af31506\dbch\af31505\hich\f31506 \endash \hich\af31506\dbch\af31505\loch\f31506 i}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid15484970 \hich\af31506\dbch\af31505\loch\f31506 t would be in your interest}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 :
\hich\af31506\dbch\af31505\loch\f31506 If your application or batch file is intolerant to different working directories, please consider following}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12853255
\hich\af31506\dbch\af31505\loch\f31506 to solve this bug \hich\f31506 \endash \loch\f31506 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15484970 \hich\af31506\dbch\af31505\loch\f31506 t would be in your interest}{\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 :
\par \hich\af31506\dbch\af31505\loch\f31506 In Batch files (*.bat), use }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 %~dp0}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 to receive the directory name where the script is located in (incl\hich\af31506\dbch\af31505\loch\f31506 uding trailing\hich\af31506\dbch\af31505\loch\f31506
path delimiter).
\lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 to receive the directory name where the script is located in (including trailing path delimiter).
\par \hich\af31506\dbch\af31505\loch\f31506 In Delphi projects, use }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)))}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 to receive this path. You may want to pass this path into }{\rtlch\fcs1 \af2 \ltrch\fcs0
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 \hich\af31506\dbch\af31505\loch\f31506 to receive this path. You may want to pas\hich\af31506\dbch\af31505\loch\f31506 s this path into }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid16413704\charrsid16413704 \hich\af2\dbch\af31505\loch\f2 SetCurrentDir()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16413704 .
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid15940546 \rtlch\fcs1 \ab\ai\af0\afs28\alang1025 \ltrch\fcs0
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af31502\dbch\af31501\loch\f31502 Concatenations
\par }\pard\plain \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12666715 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af31506\dbch\af31505\loch\f31506 Multiple identification
\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 criterias can be merged with an \'93\loch\f31506 \hich\f31506 AND\'94\loch\f31506 \hich\f31506 condition. This is done with the expression \'93\loch\f31506 \hich\f31506 &&\'94}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6896162 .
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af31506\dbch\af31505\loch\f31506 Multiple identification }{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11096861 \hich\af31506\dbch\af31505\loch\f31506 criteria}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506
can be merged with an \'93\loch\f31506 \hich\f31506 AND\'94\loch\f31506 \hich\f31506 condition. This is done with the expression \'93\loch\f31506 \hich\f31506 &&\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6896162 .
\par
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid7146872 \hich\af31506\dbch\af31505\loch\f31506 Example\hich\af31506\dbch\af31505\loch\f31506 :}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid7146872\charrsid9388365 \hich\af31506\dbch\af31505\loch\f31506 Example:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid15940546\charrsid9388365
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15940546 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546
\par }\pard \ltrpar\ql \li720\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid6896162 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546\charrsid460155
\hich\af2\dbch\af31505\loch\f2 ComputerName:}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af2\dbch\af31505\loch\f2 ComputerB&&UserName:John}{\rtlch\fcs1 \af2 \ltrch\fcs0
399,27 → 448,77
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546
\par \hich\af31506\dbch\af31505\loch\f31506 Calc.exe will be called at ComputerB, but only when User John is logged in.
\par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid4871690 \rtlch\fcs1 \ab\af0\afs32\alang1025 \ltrch\fcs0
\b\fs32\lang1031\langfe1031\kerning32\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535 \hich\af31502\dbch\af31501\loch\f31502 Troubleshooting
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid3028086 \rtlch\fcs1 \ab\ai\af0\afs28\alang1025 \ltrch\fcs0
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31502\dbch\af31501\loch\f31502
Error message "The plugin "Plugins\\<Plugin1>.dll" and the plugin "Plugins\\<Plugin2>.dll" have the same\hich\af31502\dbch\af31501\loch\f31502 identification GUID. The latter will not be loaded.
\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9373535 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31506\dbch\af31505\loch\f31506
This error message can have 2 reasons:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 Reason 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid3028086
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31506\dbch\af31505\loch\f31506 You have the same plugin twice, with different file names. In this case, you s}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 hould delete on of these files.
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid7814608 \hich\af31506\dbch\af31505\loch\f31506 Solution}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086
\hich\af31506\dbch\af31505\loch\f31506 : }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31506\dbch\af31505\loch\f31506 You might want to keep the file with the highest
\hich\af31506\dbch\af31505\loch\f31506 version number and/or modification date.
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 Reason 2
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31506\dbch\af31505\loch\f31506
The plugin developer accidently used a GUID twice, or didn't change the GUID while using a code template. In this case you have to create a workaround.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid7814608 \hich\af31506\dbch\af31505\loch\f31506 Solution}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086
\hich\af31506\dbch\af31505\loch\f31506 : }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31506\dbch\af31505\loch\f31506 Create a new INI file with the name Plugins\\<Name>.ini whe
\hich\af31506\dbch\af31505\loch\f31506 re <Name> is the filename of one of the conflicting plugins. For example, if the DLL file is named Plugins\\Example.dll , the INI file would be named Plugins\\Example.ini . This INI file }{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid4656946 \hich\af31506\dbch\af31505\loch\f31506 should have following contents:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4656946 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9373535\charrsid4656946
\hich\af2\dbch\af31505\loch\f2 [Compatibility]
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9373535 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9373535\charrsid4656946
\hich\af2\dbch\af31505\loch\f2 OverrideGUID=\{936DA01F\hich\af2\dbch\af31505\loch\f2 -9ABD-4D9D-80C7-02AF85C822A8\}
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31506\dbch\af31505\loch\f31506 Where }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9373535\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 <GUID>}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31506\dbch\af31505\loch\f31506 is a GUID in the format }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid9373535\charrsid4476179 \{\hich\af2\dbch\af31505\loch\f2 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 .
\par \hich\af31506\dbch\af31505\loch\f31506 You }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid12390765 \hich\af31506\dbch\af31505\loch\f31506 can gener}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid4656946\charrsid9318354 \hich\af31506\dbch\af31505\loch\f31506 ate a new GUID at this website: }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9318354
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506 HYPERLINK \hich\af31506\dbch\af31505\loch\f31506 "\hich\af31506\dbch\af31505\loch\f31506 http://}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid9318354\charrsid12390765 \hich\af31506\dbch\af31505\loch\f31506 www.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9318354\charrsid12390765 \hich\af31506\dbch\af31505\loch\f31506
viathinksoft.de/~daniel-marschall/tools/uuid_mac_decoder/interprete_uuid.php?uuid=CREATE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9318354 \hich\af31506\dbch\af31505\loch\f31506 "\hich\af31506\dbch\af31505\loch\f31506 }
}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs17\ul\cf17\lang1033\langfe1031\langnp1033\insrsid9318354\charrsid8086032 \hich\af31506\dbch\af31505\loch\f31506 www.viathinksoft.de/~daniel-marschall/tools/uuid_mac_decoder/interprete_uuid.php?uuid=CREATE}}}
\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\lang1033\langfe1031\langnp1033\insrsid9373535\charrsid4476179
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535 \hich\af31506\dbch\af31505\loch\f31506 You have to copy the field "Your UUID" and add curly braces around it.
\par \hich\af31506\dbch\af31505\loch\f31506 Please also contact the plugin authors and inform him about the issue.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535\charrsid9373535
\par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid4871690 \rtlch\fcs1 \ab\af0\afs32\alang1025 \ltrch\fcs0
\b\fs32\lang1031\langfe1031\kerning32\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid4871690 \hich\af31502\dbch\af31501\loch\f31502 Plugin-Development
\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3028086 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086 \hich\af31506\dbch\af31505\loch\f31506
Plugins are DLL files which are copied in the folder \loch\af31506\dbch\af31505\hich\f31506 \'93\hich\af31506\dbch\af31505\loch\f31506 Plugins\loch\af31506\dbch\af31505\hich\f31506 \'94\hich\af31506\dbch\af31505\loch\f31506
. They are automatically loaded. Please name your DLL file identically to the \hich\af31506\dbch\af31505\loch\f31506 i\hich\af31506\dbch\af31505\loch\f31506 dentification method name you will use\hich\af31506\dbch\af31505\loch\f31506 (see }{\rtlch\fcs1
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 IdentificationMethodNameW}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3028086\charrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 )}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086\charrsid3028086
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16262044 \rtlch\fcs1 \ab\ai\af0\afs28\alang1025 \ltrch\fcs0
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16262044 \hich\af31502\dbch\af31501\loch\f31502 SDK Conten
\hich\af31502\dbch\af31501\loch\f31502 ts}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16262044\charrsid16262044
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16262044 \hich\af31502\dbch\af31501\loch\f31502 SDK Contents}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16262044\charrsid16262044
\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4871690 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815 \hich\af31506\dbch\af31505\loch\f31506 UserDetect}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13328561 \hich\af31506\dbch\af31505\loch\f31506 2 as well as the default plugins are developed in Delphi.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561
\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13328561 \hich\af31506\dbch\af31505\loch\f31506 However, plugins can be written in any programming language like C++.}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16262044 \hich\af31506\dbch\af31505\loch\f31506
The SDK provides header files for Delphi and C++.
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid16262044\charrsid15484970 \hich\af31506\dbch\af31505\loch\f31506 Delphi:
\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13328561 \hich\af31506\dbch\af31505\loch\f31506 However, plugins can be written in a}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid5114084 \hich\af31506\dbch\af31505\loch\f31506 ny programming language like C\hich\af31506\dbch\af31505\loch\f31506 ++}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13328561 .}
{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16262044 \hich\af31506\dbch\af31505\loch\f31506 The SDK pr
\hich\af31506\dbch\af31505\loch\f31506 ovides}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5114084 \hich\af31506\dbch\af31505\loch\f31506 header files for Delphi and C}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid16262044 .
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid16262044\charrsid15484970 \hich\af31506\dbch\af31505\loch\f31506 Delphi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid9180311
\hich\af31506\dbch\af31505\loch\f31506 units}{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid16262044\charrsid15484970 \hich\af31506\dbch\af31505\loch\f31506 :
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid16262044 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin720\itap0\pararsid16262044 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16262044 \hich\af31506\dbch\af31505\loch\f31506 UD2_PluginUtils.pas
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid16262044 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}\hich\af31506\dbch\af31505\loch\f31506 UD2_PluginIntf.pas
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16262044 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid16262044\charrsid15484970
\hich\af31506\dbch\af31505\loch\f31506 C++:
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16262044 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid5114084
\hich\af31506\dbch\af31505\loch\f31506 C}{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid9180311 \hich\af31506\dbch\af31505\loch\f31506 header files}{\rtlch\fcs1 \af0 \ltrch\fcs0
\ul\lang1033\langfe1031\langnp1033\insrsid16262044\charrsid15484970 \hich\af31506\dbch\af31505\loch\f31506 :
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid15078789 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin720\itap0\pararsid16262044 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 ud2_api}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid16262044 \hich\af31506\dbch\af31505\loch\f31506 .h
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid15078789 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15078789
\hich\af31506\dbch\af31505\loch\f31506 ud2_utils.h (included via ud2_api.h)
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid11404612 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11404612
\hich\af31506\dbch\af31505\loch\f31506 ud2_status.h}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af31506\dbch\af31505\loch\f31506 (included via ud2_api.h)}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid11404612
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid3025658 \rtlch\fcs1 \ab\ai\af0\afs28\alang1025 \ltrch\fcs0
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3025658 \hich\af31502\dbch\af31501\loch\f31502 Exported functions}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3025658\charrsid13328561
428,57 → 527,72
A plugin has to export following }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid668536 \hich\af31506\dbch\af31505\loch\f31506 methods, whose names are NOT decorated.
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13328561 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13978329
\hich\af31506\dbch\af31505\loch\f31506 In Delphi notation:
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12134973 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 function PluginInterfaceID(): TGUID; cdecl;
\par \hich\af2\dbch\af31505\loch\f2 function PluginIdentifier(): TGUID; cdecl;
\par \hich\af2\dbch\af31505\loch\f2 function PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; cdecl;
\par \hich\af2\dbch\af31505\loch\f2 function PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2
UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; cdecl;
\par \hich\af2\dbch\af31505\loch\f2 function PluginVendorW(lpPluginVendor: LPWSTR; cch\hich\af2\dbch\af31505\loch\f2 Size: DWORD; wLangID: LANGID): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795
\hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; cdecl;
\par \hich\af2\dbch\af31505\loch\f2 function CheckLicense(lpReserved: LPVOID): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; cdecl;
\par \hich\af2\dbch\af31505\loch\f2 function IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2
UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; cdecl;
\par \hich\af2\dbch\af31505\loch\f2 function IdentificationSt\hich\af2\dbch\af31505\loch\f2 ringW(lpIdentifier: LPWSTR; cchSize: DWORD): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795
\hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; cdecl;}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13328561
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13328561 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13978329
\hich\af31506\dbch\af31505\loch\f31506 In C-notation:
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12134973 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 __cdecl GUID PluginInterfaceID();}{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid12134973
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 __cdecl GUID PluginIdentifier();
\par \hich\af2\dbch\af31505\loch\f2 __cdecl }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2
PluginNameW(LPWSTR lpPluginName, DWORD cchSize, LANGID wLangID);
\par \hich\af2\dbch\af31505\loch\f2 __cdecl }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS\hich\af2\dbch\af31505\loch\f2 CODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2
PluginVersionW(LPWSTR lpPluginVersion, DWORD cchSize, LANGID wLangID);
\par \hich\af2\dbch\af31505\loch\f2 __cdecl }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2
PluginVendorW(LPWSTR lpPluginVendor, DWORD cchSize, LANGID wLangID);
\par \hich\af2\dbch\af31505\loch\f2 __cdecl }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2
CheckLicense(LPVOID lpReserved);
\par \hich\af2\dbch\af31505\loch\f2 __cdecl }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 Identific
\hich\af2\dbch\af31505\loch\f2 ationMethodNameW(LPWSTR lpIdentificationMethodName, DWORD cchSize);
\par \hich\af2\dbch\af31505\loch\f2 __cdecl }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2
IdentificationStringW(LPWSTR lpIdentifier, DWORD cchSize);
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12134973 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 PluginInterfaceID(): TGUID; }{\rtlch\fcs1 \af2 \ltrch\fcs0
\b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 PluginIdentifier(): TGUID; }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 PluginNameW(lpPluginName: LPWSTR; cchSize: DWORD; wLangID: LANGID): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 cdecl}{\rtlch\fcs1
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 PluginVersionW(lpPluginVersion: LPWSTR; cchSize: DWORD; wLangID: LANGID): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 cdecl}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 PluginVendorW(lpPluginVendor: LPWSTR; cchSize: DWORD; wLangID: LANGID): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 cdecl}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 CheckLicense(lpReserved: LPVOID): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 cdecl}{\rtlch\fcs1
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 IdentificationMethodNameW(lpIdentificationMethodName: LPWSTR; cchSize: DWORD): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 cdecl}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ;
\par \hich\af2\dbch\af31505\loch\f2 function IdentificationStringW(lpIdentifier: LPWSTR; cchSize: DWORD): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ; }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 cdecl}{\rtlch\fcs1
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13328561
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13328561 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid9318354
\hich\af31506\dbch\af31505\loch\f31506 In C }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 notation:
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12134973 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid7814608
\hich\af2\dbch\af31505\loch\f2 __cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 GUID Plug\hich\af2\dbch\af31505\loch\f2 inInterfaceID();}{\rtlch\fcs1 \af0
\ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid12134973
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid7814608 \hich\af2\dbch\af31505\loch\f2 __cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 GUID PluginIdentifier();
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid7814608 \hich\af2\dbch\af31505\loch\f2 __cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 PluginNameW(LPWSTR lpPluginName, DWORD cchSize, LANGID wLangID);
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid7814608 \hich\af2\dbch\af31505\loch\f2 __cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 PluginVersionW(LPWSTR lpPluginVersion, DWORD cchSize, LANGID wLangID);
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid7814608 \hich\af2\dbch\af31505\loch\f2 __cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 PluginVendorW(LPWSTR lpPluginVendor, DWORD cchSize, LANGID wLangID);
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid7814608 \hich\af2\dbch\af31505\loch\f2 __cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 CheckLicense(LPVOID lpReserved);
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid7814608 \hich\af2\dbch\af31505\loch\f2 __cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 IdentificationMethodNameW(LPWSTR lpIdentificationMethodName, DWORD cchSize);
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid7814608 \hich\af2\dbch\af31505\loch\f2 __cdecl}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid10644118\charrsid12134973
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid12134973 \hich\af2\dbch\af31505\loch\f2 Identifi\hich\af2\dbch\af31505\loch\f2 cationStringW(LPWSTR lpIdentifier, DWORD cchSize);
 
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4871690 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid13328561
\hich\af31506\dbch\af31505\loch\f31506 Method }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13328561\charrsid13328561 \hich\af2\dbch\af31505\loch\f2 PluginInterfaceID}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid13328561
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13978329 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561 \hich\af31506\dbch\af31505\loch\f31506
This method has to return the GUID }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13328561\charrsid6372815 \{\hich\af2\dbch\af31505\loch\f2 6C26245E-F79A-416C-8C73-BEA3EC18BB6E\}}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 which i\hich\af31506\dbch\af31505\loch\f31506 s stored in the constant }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 USERDETECT2_IDPLUGIN_V1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 .}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid13328561
\lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 which is stored in the constant }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid6372815 \hich\af2\dbch\af31505\loch\f2
USERDETECT2_IDPLUGIN_V1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13328561
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12134973 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid12134973
\hich\af31506\dbch\af31505\loch\f31506 Method }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12134973\charrsid13328561 \hich\af2\dbch\af31505\loch\f2 PluginIdentifier}{\rtlch\fcs1 \af0 \ltrch\fcs0
\ul\lang1033\langfe1031\langnp1033\insrsid12134973
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 This method has to return a GUID which is unique for this plugin.
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 This method has to return\hich\af31506\dbch\af31505\loch\f31506 a GUID which is unique for this plugin.
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13978329 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid13978329
\hich\af31506\dbch\af31505\loch\f31506 Method }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\ul\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid13978329 \hich\af2\dbch\af31505\loch\f2 IdentificationString}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\ul\lang1033\langfe1031\langnp1033\insrsid3569955 \hich\af2\dbch\af31505\loch\f2 W}{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid13978329
489,24 → 603,26
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid288678 \loch\af31506\dbch\af31505\hich\f31506 \'94\loch\f31506 \hich\f31506 . With this output, the task \'93}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid288678\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 UserName:John=calc.exe}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid288678 \loch\af31506\dbch\af31505\hich\f31506 \'94\loch\f31506
would be performed (calc.exe will be called).
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 Annotations:
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid11096861 \hich\af31506\dbch\af31505\loch\f31506 Annotations:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 1.\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid13978329 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458\charrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 Empty string = no
\hich\af31506\dbch\af31505\loch\f31506 identification could be performed, e.g. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506
the MAC-Plugin cannot work on a computer without network interfaces. In this case, the output of the plugin will be IGNORED. For ex}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815 \hich\af31506\dbch\af31505\loch\f31506
ample, for the MAC-plugin, the t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 ask \'93}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 MAC:=calc.exe}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458 \loch\af31506\dbch\af31505\hich\f31506 \'94\loch\f31506 will }{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815 \hich\af31506\dbch\af31505\loch\f31506 NOT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506
be executed, because th\hich\af31506\dbch\af31505\loch\f31506 e identifica}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16212651 \hich\af31506\dbch\af31505\loch\f31506 tion string (after the colon) cannot be}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 empty.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 2.\tab}\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506
Multiple outputs: Multiple identifications, e.g. multiple MAC addresses are separated with a linefeed (0x10). Each identification will be traded separately. For example, if the MAC-Plugin returns \'93}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 11-22-33-44-55-66<LF>66-55-44-33-22-11<NUL>}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815
ample, for the MAC-plugin, the t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 ask \'93}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899
\hich\af2\dbch\af31505\loch\f2 LAN_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 MAC:=calc.exe}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458
\loch\af31506\dbch\af31505\hich\f31506 \'94\loch\f31506 will }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815 \hich\af31506\dbch\af31505\loch\f31506 NOT}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 be executed, because th\hich\af31506\dbch\af31505\loch\f31506 e identifica}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid16212651
\hich\af31506\dbch\af31505\loch\f31506 tion string (after the colon) cannot be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 empty.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 2.\tab}\hich\af31506\dbch\af31505\loch\f31506
Multiple outputs: Multiple identifications, e.g. multiple MAC addresses are separated with a linefeed (0x10). Each identification will be traded separately. For example, if the MAC-Plugin return\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 s \'93}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 11-22-33-44-55-66<LF>66-55-44-33-22-11<NUL>}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815
\loch\af31506\dbch\af31505\hich\f31506 \'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9121458 \hich\af31506\dbch\af31505\loch\f31506 , the fo}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815
\hich\af31506\dbch\af31505\loch\f31506 llowing\hich\af31506\dbch\af31505\loch\f31506 tasks will be executed:
\par }\pard \ltrpar\ql \li1080\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1080\itap0\pararsid6372815 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid6372815
\hich\af2\dbch\af31505\loch\f2 MAC: 11-22-33-44-55-66=calc.exe}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid6372815\charrsid6372815
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 MAC:66-55-44-33-22-11=notepad.exe
\hich\af31506\dbch\af31505\loch\f31506 llowing tasks will be executed:
\par }\pard \ltrpar\ql \li1080\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1080\itap0\pararsid6372815 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af2\dbch\af31505\loch\f2
LAN_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 MAC: 11-22-33-44-55-66=calc.exe}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid6372815\charrsid6372815
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af2\dbch\af31505\loch\f2 LAN_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9121458\charrsid6372815 \hich\af2\dbch\af31505\loch\f2
MAC:66-55-44-33-22-11=notepad.exe
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13978329 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5733712\charrsid5733712
\hich\af31506\dbch\af31505\loch\f31506 The identification string must be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3569955 \hich\af31506\dbch\af31505\loch\f31506 a wide string (16}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid5733712 \hich\af31506\dbch\af31505\loch\f31506 bit).
521,14 → 637,15
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 Th}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid206584 \hich\af31506\dbch\af31505\loch\f31506 ese methods return}
{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 a human re}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506
adable name, vendor }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid206584 \hich\af31506\dbch\af31505\loch\f31506 or}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839
\hich\af31506\dbch\af31505\loch\f31506 version of the plugin. These strings }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 will be shown in the GUI.
\hich\af31506\dbch\af31505\loch\f31506 version of the plugin. These strings }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 will be shown in\hich\af31506\dbch\af31505\loch\f31506
the GUI.
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid6707673\charrsid6707673 \hich\af2\dbch\af31505\loch\f2 wLangID}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6707673 \hich\af31506\dbch\af31505\loch\f31506
is the 16-bit language ID according to the WinAPI.
is the 16-bit lang}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid7814608 \hich\af31506\dbch\af31505\loch\f31506 uage ID according to the WinAPI:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6707673
\par \tab \hich\af31506\dbch\af31505\loch\f31506 Lower 8 bit = Primary Language ID (e.g. }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid6707673\charrsid3285525 \hich\af2\dbch\af31505\loch\f2 LANG_ENGLISH}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid6707673 \hich\af31506\dbch\af31505\loch\f31506 )
\par \tab \hich\af31506\dbch\af31505\loch\f31506 Upper 8 bit = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6707673\charrsid6707673 \hich\af31506\dbch\af31505\loch\f31506 Sublanguag\hich\af31506\dbch\af31505\loch\f31506 e}{\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6707673 \hich\af31506\dbch\af31505\loch\f31506 ID (e.g. }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid6707673\charrsid3285525 \hich\af2\dbch\af31505\loch\f2
SUBLANG_ENGLISH_US}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6707673 \hich\af31506\dbch\af31505\loch\f31506 )
\par \tab \hich\af31506\dbch\af31505\loch\f31506 Upper 8 bit = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6707673\charrsid6707673 \hich\af31506\dbch\af31505\loch\f31506 Sublanguage}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid6707673 \hich\af31506\dbch\af31505\loch\f31506 ID (e.g. }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid6707673\charrsid3285525 \hich\af2\dbch\af31505\loch\f2 SUBLANG_ENGLISH_US}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6707673 \hich\af31506\dbch\af31505\loch\f31506 )
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3569955 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3569955\charrsid5733712
\hich\af31506\dbch\af31505\loch\f31506 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3569955 \hich\af31506\dbch\af31505\loch\f31506 plugin name }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid3569955\charrsid5733712 \hich\af31506\dbch\af31505\loch\f31506 must be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3569955 \hich\af31506\dbch\af31505\loch\f31506 a wide string (16 bit).}{
537,22 → 654,25
\hich\af31506\dbch\af31505\loch\f31506 Method }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\ul\lang1033\langfe1031\langnp1033\insrsid5064448 \hich\af2\dbch\af31505\loch\f2 CheckLicense}{\rtlch\fcs1 \af0 \ltrch\fcs0
\ul\lang1033\langfe1031\langnp1033\insrsid5064448\charrsid13978329
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3569955 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506
This method will be called before the plugin is loaded. The plugin has the ability to check if it may be used or not. For example, a plugin with a ti\hich\af31506\dbch\af31505\loch\f31506
me-limited license can check the computer clock, or a plugin for Beta-Testers can check if it is running on the intended computer only.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5064448
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506 The return value should be }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15153839\charrsid15153839
\hich\af2\dbch\af31505\loch\f2 STATUS_OK}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506 or }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid15153839\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 STATUS_NOT_LICENSED}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506
This method will be called before the plugin is loaded. The plugin has the ability to check if it may be used or not. For example, a plugin with a time-limited license can check the computer clock, or a plugin for Beta-Testers can check if it is running o
\hich\af31506\dbch\af31505\loch\f31506 n\hich\af31506\dbch\af31505\loch\f31506 the intended computer only.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5064448
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506 The return value should be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9373535
\hich\af31506\dbch\af31505\loch\f31506 either}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9373535
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_LICENSED }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506 or }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid7814608\charrsid7814608 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_ERROR_PLUGIN_NOT_LICENSED}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15153839 \hich\af31506\dbch\af31505\loch\f31506
, but other error codes can be returned, too.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5064448
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13978329 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid13978329
\hich\af31506\dbch\af31505\loch\f31506 Method }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\ul\lang1033\langfe1031\langnp1033\insrsid16384757\charrsid16384757 \hich\af2\dbch\af31505\loch\f2 Identif\hich\af2\dbch\af31505\loch\f2 ication}{\rtlch\fcs1 \af2 \ltrch\fcs0
\hich\af31506\dbch\af31505\loch\f31506 Method }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\ul\lang1033\langfe1031\langnp1033\insrsid16384757\charrsid16384757 \hich\af2\dbch\af31505\loch\f2 Identification}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\ul\lang1033\langfe1031\langnp1033\insrsid16384757 \hich\af2\dbch\af31505\loch\f2 M}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\ul\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid13978329 \hich\af2\dbch\af31505\loch\f2 ethodName}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\ul\lang1033\langfe1031\langnp1033\insrsid3569955 \hich\af2\dbch\af31505\loch\f2 W}{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid13978329
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 This method returns a short string of the identification method. This name will be used in the identifications lines in the }{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 Task Definition File}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506
\hich\f31506 . For example, the MAC-Addresses plugin will have the method name \'93\loch\f31506 \hich\f31506 MAC\'94\loch\f31506 \hich\f31506 , so that a task \'93}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 MAC:\hich\af2\dbch\af31505\loch\f2 11-22-33-44-55-66=calc.exe}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329
\loch\af31506\dbch\af31505\hich\f31506 \'94\loch\f31506 can be defined in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 Task Definition File}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid13978329 .
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \hich\af31506\dbch\af31505\loch\f31506 This method returns a short string of the identification method. This name will be used \hich\af31506\dbch\af31505\loch\f31506
in the identifications lines in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506 Task Definition File}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329
\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 . For example, the MAC-Addresses plugin will have the method name \'93}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899 \hich\af2\dbch\af31505\loch\f2 LA}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 N_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 MAC}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 \loch\af31506\dbch\af31505\hich\f31506 \'94\loch\f31506 \hich\f31506 , so that a task \'93}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1340899
\hich\af2\dbch\af31505\loch\f2 LAN_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13978329\charrsid6372815 \hich\af2\dbch\af31505\loch\f2 MAC:11-22-33-44-55-66=calc.exe}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid13978329 \loch\af31506\dbch\af31505\hich\f31506 \'94\loch\f31506 can be defined in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12134973 \hich\af31506\dbch\af31505\loch\f31506
Task Definition File}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13978329 .
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5733712 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5733712\charrsid5733712
\hich\af31506\dbch\af31505\loch\f31506 The identification }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3569955 \hich\af31506\dbch\af31505\loch\f31506 method name}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid5733712\charrsid5733712 \hich\af31506\dbch\af31505\loch\f31506 must be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3569955 \hich\af31506\dbch\af31505\loch\f31506 a wide string (16}{
560,109 → 680,404
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13978329 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5733712 \hich\af31506\dbch\af31505\loch\f31506
The string must not contain an equal-sign (=)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3569955 \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 or \'93\loch\f31506 \hich\f31506 &&\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12719322 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5733712
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3635325 \hich\af31506\dbch\af31505\loch\f31506 The output will be treated case sensitive.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3635325
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3635325 \hich\af31506\dbch\af31505\loch\f31506 The output will be treated case sensitive.
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid3025658 \rtlch\fcs1 \ab\ai\af0\afs28\alang1025 \ltrch\fcs0
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3025658 \hich\af31502\dbch\af31501\loch\f31502 Status codes
\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13978329 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 In Delphi-Notation}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 (PluginIntf.pas)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid15078789
 
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3025658 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid3025658
\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid13966640\charrsid13966640 \hich\af31506\dbch\af31505\loch\f31506
Structure of status codes (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid13966640\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af0 \ltrch\fcs0
\b\lang1033\langfe1031\langnp1033\insrsid13966640\charrsid13966640 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid150970\charrsid13966640
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13966640 \hich\af31506\dbch\af31505\loch\f31506 A status code has a size of 32 bits.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13966640\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af2\dbch\af31505\loch\f2
+-----------------------------------------------+
\par \hich\af2\dbch\af31505\loch\f2 | | | | | | | | |
\par \hich\af2\dbch\af31505\loch\f2 +-----+-----------------+-----------------------+
\par \hich\af2\dbch\af31505\loch\f2 |31 28|27 16|15 0|
\par \hich\af2\dbch\af31505\loch\f2 |Cat. |}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid5907818 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af2\dbch\af31505\loch\f2 Authority }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid5907818 \hich\af2\dbch\af31505\loch\f2 | \hich\af2\dbch\af31505\loch\f2 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af2\dbch\af31505\loch\f2 Message \hich\af2\dbch\af31505\loch\f2 |
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af2\dbch\af31505\loch\f2 +-----+-----------}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970 \hich\af2\dbch\af31505\loch\f2 ------+-----------------------+}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 Categ\hich\af31506\dbch\af31505\loch\f31506 ory}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9318354 \hich\af31506\dbch\af31505\loch\f31506 (1 nibble =}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 4 bits; bits 28..31)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5178738 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 0x0..0x7 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 are reserved
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 0x8 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 Success
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 0x9 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 Not available
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 0xA = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 Error
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 0xB..0xF }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 are reserved}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 Authority}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 (3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9318354 \hich\af31506\dbch\af31505\loch\f31506 nibbles =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\hich\af31506\dbch\af31505\loch\f31506 12 bits; bits 16..27)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5178738 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 0x000 .. 0x0FF = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 reserved
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 0x100 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 generic status codes (you }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15082545 \hich\af31506\dbch\af31505\loch\f31506 should}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 use them}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15082545 ,\hich\af31506\dbch\af31505\loch\f31506 if }{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9388365\charrsid9388365 \hich\af31506\dbch\af31505\loch\f31506 applicable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506
)
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 0x101 .. 0xEFF = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 by ViaThinkSoft assigned organizations (please see below)
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 0xF00 .. 0xFEF =}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12390765\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 experimental codes
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5178738 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 0xFF0 .. 0xFFF =}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid12390765\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 status c}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 odes for documentation purposes
}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 Message}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid9318354 \hich\af31506\dbch\af31505\loch\f31506 4 nibbles =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 16 bits; bits 0..15)}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4476179 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 0x0000}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid4476179
\hich\af31506\dbch\af31505\loch\f31506 a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 n unspecified status on c\hich\af31506\dbch\af31505\loch\f31506
ategory "C", issued by authority "A"
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179 \hich\af2\dbch\af31505\loch\f2 0x0001..}
{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 0xFFFF = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 the status on category "C", issued by authority "A".
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 Currently a\hich\af31506\dbch\af31505\loch\f31506 ssigned generic status codes
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid3943969\charrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 Note}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969\charrsid3943969
\hich\af31506\dbch\af31505\loch\f31506 : The following status codes are in hexadecimal notation. This notation \loch\af31506\dbch\af31505\hich\f31506 \'93\hich\af31506\dbch\af31505\loch\f31506 c aaa mmmm\loch\af31506\dbch\af31505\hich\f31506 \'94
\hich\af31506\dbch\af31505\loch\f31506 is a human friendly representation of an UD2_STATUS, which \hich\af31506\dbch\af31505\loch\f31506 should be used in message \hich\af31506\dbch\af31505\loch\f31506 dialogs for the user.}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid3943969
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3998625 {\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid3998625\charrsid3998625
\hich\af31506\dbch\af31505\loch\f31506 Category \loch\af31506\dbch\af31505\hich\f31506 \'93\hich\af31506\dbch\af31505\loch\f31506 Successful\loch\af31506\dbch\af31505\hich\f31506 \'94}{\rtlch\fcs1 \af0 \ltrch\fcs0
\ul\lang1033\langfe1031\langnp1033\insrsid3998625
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3998625 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 8}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 100 0000\hich\af31506\dbch\af31505\loch\f31506 = Unspecified success code}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_UNSPECIFIED}{\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid150970\charrsid3998625
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5178738 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 8}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 100 0001 = Success, one identifier returned}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_SINGLELINE}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 8}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506
100 0002 = Success, multiple identifiers returned}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_MULTILINE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3998625 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 8}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 100 0003 = The plugin is licensed}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_LICENSED}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3998625
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid3998625\charrsid3998625 \hich\af31506\dbch\af31505\loch\f31506 Category \loch\af31506\dbch\af31505\hich\f31506 \'93\hich\af31506\dbch\af31505\loch\f31506 Not available
\loch\af31506\dbch\af31505\hich\f31506 \'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3998625
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5178738 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 9}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 100 0000 = Not available, Unspecified}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_S\hich\af2\dbch\af31505\loch\f2 TATUS_NOTAVAIL_UNSPECIFIED}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 9}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506
100 0001 = Operating system not supported}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid11096861 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOTAVAIL_O\hich\af2\dbch\af31505\loch\f2 S_NOT_SUPPORTED}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 9}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506
100 0002 = Hardware not supported}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOTAVAIL_HW_NOT_SUPPORTED}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 9}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 10}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 0 0003 = No entities available, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 e.g. no net\hich\af31506\dbch\af31505\loch\f31506 work interfac}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 es for }{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid4476179 \hich\af31506\dbch\af31505\loch\f31506 identif\hich\af31506\dbch\af31505\loch\f31506 ying}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\hich\af31506\dbch\af31505\loch\f31506 MAC addresses (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_S\hich\af2\dbch\af31505\loch\f2 TATUS_NOTAVAIL_NO_ENTITIES}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3998625 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 9}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 100}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506
0004 = An API call has failed, possibly operating system not supported (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOTAVAIL_API_CALL_FAILURE}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3998625
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\lang1033\langfe1031\langnp1033\insrsid3998625\charrsid3998625 \hich\af31506\dbch\af31505\loch\f31506 Category \loch\af31506\dbch\af31505\hich\f31506 \'93\hich\af31506\dbch\af31505\loch\f31506 Failure
\loch\af31506\dbch\af31505\hich\f31506 \'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3998625\charrsid3998625
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5178738 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 A}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 100 0000 = Unspecified error}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_S\hich\af2\dbch\af31505\loch\f2 TATUS_ERROR_UNSPECIFIED}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 A}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506
100 0001 = Buffer too small}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 UD2_S\hich\af2\dbch\af31505\loch\f2 TATUS_ERROR_BU\hich\af2\dbch\af31505\loch\f2 FFER_TOO_SMALL}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 A}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506
100 0002 = Invalid arguments passed to function}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_S\hich\af2\dbch\af31505\loch\f2 TATUS_ERROR_INVALID_ARGS}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5178738 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 A}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 100 0003 = The plu\hich\af31506\dbch\af31505\loch\f31506 gin is not licensed}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_ERROR_P
\hich\af2\dbch\af31505\loch\f2 LUGIN_NOT_LICENSED}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5178738
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid15888011\charrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 Note}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15888011
\hich\af31506\dbch\af31505\loch\f31506 : \hich\af31506\dbch\af31505\loch\f31506 The status codes }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15888011\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506
0xFFFFFFFF, 0x00000000 and 0x00000001}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15888011 \hich\af31506\dbch\af31505\loch\f31506 are always illegal, to avoid confusion with other }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid15888011 \hich\af31506\dbch\af31505\loch\f31506 datat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3998625 \hich\af31506\dbch\af31505\loch\f31506 ype values}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid15888011 \hich\af31506\dbch\af31505\loch\f31506 like }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15888011\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 BOOL}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15888011 \hich\af31506\dbch\af31505\loch\f31506 or }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15888011\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 HRESULT}{\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15888011 .
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid5178738\charrsid5178738
\hich\af31506\dbch\af31505\loch\f31506 Acquirat\hich\af31506\dbch\af31505\loch\f31506 ion of an Authority ID}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2576803 \hich\af31506\dbch\af31505\loch\f31506 for status codes}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid5178738\charrsid5178738
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 To }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5178738\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 acquire}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15082545 \hich\af31506\dbch\af31505\loch\f31506 an own Authority }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 ID, please follow these steps:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 1.\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls10\adjustright\rin0\lin720\itap0\pararsid3028086 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 Registe}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 r a free OID from ViaThinkSoft}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9258736 \hich\af31506\dbch\af31505\loch\f31506
at this website:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086
\par }\pard \ltrpar\ql \li720\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid3028086 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9318354
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506 HYPERLINK \hich\af31506\dbch\af31505\loch\f31506 "\hich\af31506\dbch\af31505\loch\f31506 http://\hich\af31506\dbch\af31505\loch\f31506 www.viathinksoft.de/freeoid
\hich\af31506\dbch\af31505\loch\f31506 "\hich\af31506\dbch\af31505\loch\f31506 }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs17\ul\cf17\lang1033\langfe1031\langnp1033\insrsid9318354\charrsid8086032 \hich\af31506\dbch\af31505\loch\f31506
www.viathinksoft.de/freeoid}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid9258736\charrsid9258736 \hich\af31506\dbch\af31505\loch\f31506 Note: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 Although these OIDs are }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086 \hich\af31506\dbch\af31505\loch\f31506 mainly intended }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 for private non-commercial indiv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3028086 \hich\af31506\dbch\af31505\loch\f31506
iduals, you can also register these}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 as commercial \hich\af31506\dbch\af31505\loch\f31506 organization.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1031\langnp1033\insrsid7105396 \hich\af31506\dbch\af31505\loch\f31506 2.\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls10\adjustright\rin0\lin720\itap0\pararsid3028086 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid7105396 \hich\af31506\dbch\af31505\loch\f31506 The last arc in your OID added to}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6776079 \hich\af31506\dbch\af31505\loch\f31506 256 (}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 0x100}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6776079 \hich\af31506\dbch\af31505\loch\f31506 )}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 is your Authority ID.
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid11096861\charrsid11096861
\hich\af31506\dbch\af31505\loch\f31506 Example}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 :}{\rtlch\fcs1 \af0 \ltrch\fcs0
\i\lang1033\langfe1031\langnp1033\insrsid11096861\charrsid11096861
\par }\pard \ltrpar\ql \fi720\li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11096861 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969
\hich\af31506\dbch\af31505\loch\f31506 If y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11096861 \hich\af31506\dbch\af31505\loch\f31506 our OID is 1.3.6.1.4.1.37476.9000.99
\par \hich\af31506\dbch\af31505\loch\f31506 T\hich\af31506\dbch\af31505\loch\f31506 he}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 n the}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid11096861 \hich\af31506\dbch\af31505\loch\f31506 last arc }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 of }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid12390765 \hich\af31506\dbch\af31505\loch\f31506 this}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11096861 \hich\af31506\dbch\af31505\loch\f31506 OID \hich\af31506\dbch\af31505\loch\f31506
is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 99}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11096861
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3943969 \hich\af31506\dbch\af31505\loch\f31506 Calculate: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11096861 \hich\af31506\dbch\af31505\loch\f31506 99}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 +}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid11096861 \hich\af31506\dbch\af31505\loch\f31506
0x100 = 0x63 + 0x100 = 0x163
\par \hich\af31506\dbch\af31505\loch\f31506 S}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970 \hich\af31506\dbch\af31505\loch\f31506 o you can ass}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid5178738 \hich\af31506\dbch\af31505\loch\f31506 ign the status codes }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid5178738\charrsid5178738 \hich\af2\dbch\af31505\loch\f2 0x-0163----}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid150970 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970\charrsid150970
\hich\af31506\dbch\af31505\loch\f31506 Beside the usage as Authority Identifier for the status cod\hich\af31506\dbch\af31505\loch\f31506 es, you can use your OID for every other purpose. More inform}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid5178738 \hich\af31506\dbch\af31505\loch\f31506 ation about OIDs at oid-info.com}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid150970
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13978329 {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid5178738 \hich\af31506\dbch\af31505\loch\f31506
Relevant code part i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 n Delphi-Notation}{\rtlch\fcs1 \af0 \ltrch\fcs0
\b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 (PluginIntf.pas)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid3025658
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5178738\charrsid5178738 \hich\af31506\dbch\af31505\loch\f31506 Please use the functions specified below, to handle status codes.
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11404612 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 type
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE = DWORD;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid3025658 \hich\af2\dbch\af31505\loch\f2 = DWORD;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3025658
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11930278 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278
\hich\af2\dbch\af31505\loch\f2 UD2_STATUSCAT}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278 \hich\af2\dbch\af31505\loch\f2 = $0..$F;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUSAUTH = $000..$FFF;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUSMSG }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278 \hich\af2\dbch\af31505\loch\f2 = $0000..$FFFF;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid3025658
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11404612 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid3025658
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_UNSPECIFIED }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612
\hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $81000000;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_SINGLELINE }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $81000001;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_MULTILINE }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $81000002;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_LICENSED }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $81000003;
\par
\par \hich\af2\dbch\af31505\loch\f2 const
\par \hich\af2\dbch\af31505\loch\f2 // We have chosen these numbers, to avoid that people use
\par \hich\af2\dbch\af31505\loch\f2 // "return FALSE" ("return 0") to declare an error, and
\par \hich\af2\dbch\af31505\loch\f2 // "return TRUE" ("return 1") to declare a successful operation.
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK : UD2_STATUSCODE = $10000000;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_BUFFER_TOO_SMALL : UD2_STATUSCODE = $00001000;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_INVALID_ARGS : UD2_STATUSCODE = $00001001;
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3025658 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid3025658
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOT_LICENSED : UD2_STATUSCODE = $00001002;
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13978329 {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid15078789
\hich\af31506\dbch\af31505\loch\f31506 In C-notation}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 (u\hich\af31506\dbch\af31505\loch\f31506 d2_}{\rtlch\fcs1 \af0
\ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 api}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 .h)}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid5064448\charrsid15078789
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5064448 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3025658 \hich\af2\dbch\af31505\loch\f2
typedef DWORD UD2_STATUSCODE
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOTAVAIL_UNSPECIFIED }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $91000000;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOTAVAIL_OS_NOT_SUPPORTED }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $91000001;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOTAVAIL_HW_NOT_SUPPORTED }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $91000002;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOTAVAIL_NO_ENTITIES }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $91000003;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NOTAVAIL_API_CALL_FAIL\hich\af2\dbch\af31505\loch\f2 URE }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $91000004;
\par
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid5064448\charrsid5064448 \hich\af2\dbch\af31505\loch\f2 // We have chosen these numbers, to avoid that people use
\par \hich\af2\dbch\af31505\loch\f2 // "return FALSE" ("return 0") to declare an error, and
\par \hich\af2\dbch\af31505\loch\f2 // "return TRUE" ("return 1") to declare a successful operation.
\par \hich\af2\dbch\af31505\loch\f2 const }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid203795\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid203795 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9711883 \hich\af2\dbch\af31505\loch\f2 UD2_}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid5064448\charrsid5064448 \hich\af2\dbch\af31505\loch\f2 STATUS_OK \hich\af2\dbch\af31505\loch\f2 = 0x10000000;
\par \hich\af2\dbch\af31505\loch\f2 const }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid203795\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid203795 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9711883 \hich\af2\dbch\af31505\loch\f2 UD2_}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid5064448\charrsid5064448 \hich\af2\dbch\af31505\loch\f2 STATUS_BUFFER_TOO_SMALL = 0x00001000;
\par \hich\af2\dbch\af31505\loch\f2 const }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid203795\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid203795 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9711883 \hich\af2\dbch\af31505\loch\f2 UD2_}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid5064448\charrsid5064448 \hich\af2\dbch\af31505\loch\f2 STATUS_INVALID_ARGS = 0x00001001;
\par \hich\af2\dbch\af31505\loch\f2 const }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid203795\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid203795 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9711883 \hich\af2\dbch\af31505\loch\f2 UD2_}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid5064448\charrsid5064448 \hich\af2\dbch\af31505\loch\f2 STATUS_NOT_LICENSED = 0x00001002;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_ERROR_UNSPECIFIED }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $A1000000;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_ERROR_BUFFER_TOO_SMALL }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $A1000001;
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8269150 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_ERROR_INVALID_ARGS }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $A1000002;
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_ERROR_PLUGIN_NOT_\hich\af2\dbch\af31505\loch\f2 LICENSED }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 =}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 $A1000003;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 UD2_STATU}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid8269150 \hich\af2\dbch\af31505\loch\f2 S_Construct(cat: UD2_STATUSCAT;
\par }\pard \ltrpar\ql \fi720\li720\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 auth: UD2_STATUSAUTH; msg: UD2_STATUSMSG): UD2_STATUS;
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 UD2\hich\af2\dbch\af31505\loch\f2
_STATUS_GetCategory(dwStatus: UD2_STATUS): UD2_STATUSCAT;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_GetAuthority(dwStatus: UD2_STATUS): UD2_STATUSAUTH;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_GetMessage(dwStatus: UD2_STATUS): UD2_STATUSMSG;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_Successful(dwStatus: UD2_STATUS): boo\hich\af2\dbch\af31505\loch\f2 lean;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_NotAvail(dwStatus: UD2_STATUS): boolean;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_Failed(dwStatus: UD2_STATUS): boolean;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_FormatStatusCode(dwStatus: UD2_STATUS): string;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222 \hich\af2\dbch\af31505\loch\f2 IsSpecific}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid8269150\charrsid8269150 \hich\af2\dbch\af31505\loch\f2 (dwStatus: UD2_STATUS): boolean\hich\af2\dbch\af31505\loch\f2 ;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid8269150
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11404612 {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid5178738 \hich\af31506\dbch\af31505\loch\f31506
Relevant code part i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid9258736 \hich\af31506\dbch\af31505\loch\f31506 n C }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid3025658\charrsid15078789
\hich\af31506\dbch\af31505\loch\f31506 notation}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 (ud2_}{\rtlch\fcs1 \af0 \ltrch\fcs0
\b\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af31506\dbch\af31505\loch\f31506 status}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 .h}{\rtlch\fcs1 \af0
\ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af31506\dbch\af31505\loch\f31506 , included via ud2_api\hich\af31506\dbch\af31505\loch\f31506 .h}{\rtlch\fcs1 \af0 \ltrch\fcs0
\b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid5064448
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5178738\charrsid5178738 \hich\af31506\dbch\af31505\loch\f31506 Please use the functions specified below, to handle status codes.}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid5178738\charrsid5178738
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5064448 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222
\hich\af2\dbch\af31505\loch\f2 typedef}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612 \hich\af2\dbch\af31505\loch\f2 DWORD UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3025658
 
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11930278 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278
\hich\af2\dbch\af31505\loch\f2 typedef}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278 \hich\af2\dbch\af31505\loch\f2 BYTE UD2_STATUSCAT; }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid4476179 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278 \hich\af2\dbch\af31505\loch\f2 // 0x0..0xF; only 1 nibble!
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278 \hich\af2\dbch\af31505\loch\f2 typedef}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278
\hich\af2\dbch\af31505\loch\f2 WORD UD2_STATUSAUTH; // 0x000..0xFFF; only 3 nibbles!
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278 \hich\af2\dbch\af31505\loch\f2 typedef}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11930278\charrsid11930278
\hich\af2\dbch\af31505\loch\f2 WORD UD2_STATUSMSG;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11930278
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5064448 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3025658
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11404612 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222
\hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_OK_UNSPECIFIED = 0x81000000;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_OK_SINGLELINE = 0x81000001;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_OK_MULTILINE = 0x81000002;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_OK_LICENSED = 0x\hich\af2\dbch\af31505\loch\f2 81000003;
\par
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_NOTAVAIL_UNSPECIFIED = 0x91000000;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_NOTAVAIL_OS_NOT_SUPPORTED = 0x91000001;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_NOTAVAIL_HW_NOT_SUPPORTED = 0x91000002;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_NOTAVAIL_N\hich\af2\dbch\af31505\loch\f2 O_ENTITIES = 0x91000003;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_NOTAVAIL_API_CALL_FAILURE = 0x91000004;
\par
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_ERROR_UNSPECIFIED = 0xA1000000;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_ERROR_BUFFER_TOO_SMALL = 0xA1000001;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_ERROR_INVALID_ARGS = 0xA1000002;
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 const}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid11404612\charrsid11404612
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_ERROR_PLUGIN_NOT_LICENSED = 0xA1000003;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3022222 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222\charrsid3022222
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222\charrsid3022222
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS UD2_STATUS_Construct(UD2_STATUSCAT cat, UD2_STATUSAUTH auth,}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid150970
\par }\pard \ltrpar\ql \li720\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222\charrsid3022222
\hich\af2\dbch\af31505\loch\f2 UD2_STATUSMSG msg);
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222\charrsid3022222
\hich\af2\dbch\af31505\loch\f2 UD2_STATUSCAT UD2_STATUS_GetCategory(UD2_STATUS dwStatus);
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUSAUTH UD2_STATUS_GetAuthority(UD2_STATUS dwStatus);
\par \hich\af2\dbch\af31505\loch\f2 UD2_STATUSMSG UD2_STATUS_GetMessage(UD2_S\hich\af2\dbch\af31505\loch\f2 TATUS dwStatus);
\par \hich\af2\dbch\af31505\loch\f2 BOOL UD2_STATUS_Successful(UD2_STATUS dwStatus);
\par \hich\af2\dbch\af31505\loch\f2 BOOL UD2_STATUS_NotAvail(UD2_STATUS dwStatus);
\par \hich\af2\dbch\af31505\loch\f2 BOOL UD2_STATUS_Failed(UD2_STATUS dwStatus);
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid3022222\charrsid11096861
\hich\af2\dbch\af31505\loch\f2 int}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222\charrsid3022222 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_FormatStatusC}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid150970 \hich\af2\dbch\af31505\loch\f2 ode(}{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid150970\charrsid11096861 \hich\af2\dbch\af31505\loch\f2 char}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid150970 \hich\af2\dbch\af31505\loch\f2 * szStr, size_t cchLen,
\par }\pard \ltrpar\ql \fi720\li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222\charrsid3022222
\hich\af2\dbch\af31505\loch\f2 UD2_STATUS dwStatus);
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907818 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222\charrsid3022222
\hich\af2\dbch\af31505\loch\f2 BOOL UD2_STATUS_\hich\af2\dbch\af31505\loch\f2 IsSpecific(UD2_STATUS dwStatus);}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3022222
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid3025658 \rtlch\fcs1 \ab\ai\af0\afs28\alang1025 \ltrch\fcs0
\b\i\fs28\lang1031\langfe1031\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid3025658 \hich\af31502\dbch\af31501\loch\f31502 Helper methods
\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1929326 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506
The plugin SDK contains methods which help you writing the strings in the buffer, as well as checking for the buffer length. These functions also return the correct status codes.
The plugin SDK contains methods which help you writing the strings in the bu\hich\af31506\dbch\af31505\loch\f31506 ffer, as well as checking for the buffer length. These functions also return the correct status codes.
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 In C (ud2_utils}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15078789
\hich\af31506\dbch\af31505\loch\f31506 .h}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 , included via ud2_api}{\rtlch\fcs1 \af0 \ltrch\fcs0
\b\lang1033\langfe1031\langnp1033\insrsid15078789\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 .h}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 ):
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid203795\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid203795 \hich\af2\dbch\af31505\loch\f2 }{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af2\dbch\af31505\loch\f2 __WRITESTR_W(LPWST\hich\af2\dbch\af31505\loch\f2 R lpDest, DW}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid1929326 \hich\af2\dbch\af31505\loch\f2 ORD cchDestSize, LPCWSTR lpSrc)}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af2\dbch\af31505\loch\f2 ;}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid668536 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid668536\charrsid668536
\hich\af2\dbch\af31505\loch\f2 #define __}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid668536 \hich\af2\dbch\af31505\loch\f2 GUID(x) GUIDFromLPCWSTR(L ## x)\line }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid668536\charrsid668536 \hich\af2\dbch\af31505\loch\f2 GUID GUIDFromLPCWSTR(LPCWSTR lpcstrGUID)}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af2\dbch\af31505\loch\f2 ;}{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid668536\charrsid1929326
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid203795 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_WriteStrW}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af2\dbch\af31505\loch\f2
(LPWSTR lpDest, DW}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326 \hich\af2\dbch\af31505\loch\f2 ORD cchDestSize, LPCWSTR lpSrc)}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546
\hich\af2\dbch\af31505\loch\f2 ;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid668536 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid668536\charrsid12390765
\hich\af2\dbch\af31505\loch\f2 #define}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid668536\charrsid668536 \hich\af2\dbch\af31505\loch\f2 __}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid668536
\hich\af2\dbch\af31505\loch\f2 GUID(x) GUIDFromLPCWS\hich\af2\dbch\af31505\loch\f2 TR(L ## x)\line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid668536\charrsid668536 \hich\af2\dbch\af31505\loch\f2
GUID GUIDFromLPCWSTR(LPCWSTR lpcstrGUID)}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af2\dbch\af31505\loch\f2 ;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid668536\charrsid1929326
 
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1929326 {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15078789
\hich\af31506\dbch\af31505\loch\f31506 In Delphi (UD2_PluginUtils.pas):
\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af2\dbch\af31505\loch\f2 function WritePascalStringToPointerW(lpDestination: LPWSTR; cchSize: }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid203795\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af2\dbch\af31505\loch\f2 ;
\par \hich\af2\dbch\af31505\loch\f2 functio\hich\af2\dbch\af31505\loch\f2 n WriteStringListToPointerW(lpDestination: LPWSTR; cchSize: DWORD; slSo}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326 \hich\af2\dbch\af31505\loch\f2
urce: TStrings): }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid203795\charrsid203795 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326
\hich\af2\dbch\af31505\loch\f2 ;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15078789 \hich\af31506\dbch\af31505\loch\f31506 Explanation:
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4476179 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid4476179\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 function }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_WritePascalStringToPointerW(lpDesti}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid4476179\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 nation: LPWSTR;
\par }\pard \ltrpar\ql \fi720\li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4476179 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 cchSize: DWORD; }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid4476179\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 stSource: WideString): UD2_STATUS;}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid4476179\charrsid4476179
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4476179 {\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid13381599
\hich\af2\dbch\af31505\loch\f2 function}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599
\hich\af2\dbch\af31505\loch\f2 UD2_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af2\dbch\af31505\loch\f2 WriteStringListTo}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid4476179 \hich\af2\dbch\af31505\loch\f2 PointerW(lpDestination: LPWSTR;
\par }\pard \ltrpar\ql \fi720\li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4476179 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326
\hich\af2\dbch\af31505\loch\f2 cchSize: DWORD; slSo}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326 \hich\af2\dbch\af31505\loch\f2 urce: TStrings): }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326 \hich\af2\dbch\af31505\loch\f2 ;}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1929326 {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15078789
\hich\af31506\dbch\af31505\loch\f31506 Explanation:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid9596859 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506
The return value of these functions is an }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9596859\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 UD2_STATUSCODE}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid9596859 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 which is either }{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 STATUS_OK}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 or }{\rtlch\fcs1
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 STATUS_BUFFER_TOO_SMALL}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326 .}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid1929326 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 __WRITESTR_W()}{\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 and }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2
Write\hich\af2\dbch\af31505\loch\f2 StringListToPointerW()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 provide the same functionality.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid9596859 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 WriteStringListToPointerW()}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 is used for }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839
\hich\af2\dbch\af31505\loch\f2 IdentificationStringW()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506
, to return multiple identifications. The function will split each TStrings entry with }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9596859\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 UD2_MULTIPLE_ITEMS_DELIMITER}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9596859\charrsid9596859 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326
\hich\af31506\dbch\af31505\loch\f31506 (0x10).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326
The return value of these functions is an }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9596859
\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 which is either }{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid13381599
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f2\fs22\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 o\tab}}\pard \ltrpar\ql \fi-360\li1440\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl1\adjustright\rin0\lin1440\itap0\pararsid13381599 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 2_STATUS_ERROR_BUFFER_TOO_SMALL
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f2\fs22\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 o\tab}}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STA}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2
TUS_NOTAVAIL_UNSPECIFIED}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af31506\dbch\af31505\loch\f31506 (when no identifier is provided)
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f2\fs22\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 o\tab}}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_MULTILINE
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f2\fs22\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 o\tab}\hich\af2\dbch\af31505\loch\f2 UD2_STATUS_OK_SINGLELINE
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid13381599 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid13381599 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_WriteStrW}{\rtlch\fcs1
\af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 ()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 and
}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 UD2_}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid3028086\charrsid4476179
\hich\af2\dbch\af31505\loch\f2 WritePascalStringToPointerW}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 ()}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 provide the same functionality.}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid13381599 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid9596859 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid13381599 \hich\af2\dbch\af31505\loch\f2 UD2_}{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 WriteStringListToPointerW()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326
\hich\af31506\dbch\af31505\loch\f31506 is used for }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 IdentificationStringW()}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 , to return multiple identifications. The function will split each }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid1929326\charrsid13381599 \hich\af2\dbch\af31505\loch\f2 TStrings}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 entry with }{
\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid9596859\charrsid15153839 \hich\af2\dbch\af31505\loch\f2 UD2_MULTIPLE_ITEMS_DELIMITER}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9596859\charrsid9596859
\hich\af31506\dbch\af31505\loch\f31506 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid1929326 \hich\af31506\dbch\af31505\loch\f31506 (0x10).}{\rtlch\fcs1 \af0 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid5114084 \hich\af31506\dbch\af31505\loch\f31506 A pendant for C}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid12390765 \hich\af31506\dbch\af31505\loch\f31506 is currently not implemented.}{
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid15940546\charrsid668536 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid15940546 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546\charrsid668536 \hich\af2\dbch\af31505\loch\f2 __}{\rtlch\fcs1 \af2
\ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af2\dbch\af31505\loch\f2 GUID()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546\charrsid15940546 \hich\af31506\dbch\af31505\loch\f31506
will convert a string literal to a}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1033\langfe1031\langnp1033\insrsid15940546 \hich\af2\dbch\af31505\loch\f2 GUID}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546\charrsid538759
\hich\af31506\dbch\af31505\loch\f31506 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546\charrsid15940546 \hich\af31506\dbch\af31505\loch\f31506 This improves the readability of the source code}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid538759 \hich\af31506\dbch\af31505\loch\f31506 , since the GUID does not have to be written in a const struct expression. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546
\line \hich\af31506\dbch\af31505\loch\f31506 In Delphi, this helper method is not necessary, since the compiler is able to convert a G\hich\af31506\dbch\af31505\loch\f31506 UID-string to a GUID structure (record) at compile time.}{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15940546
\hich\af31506\dbch\af31505\loch\f31506 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546\charrsid15940546 \hich\af31506\dbch\af31505\loch\f31506 This improves th\hich\af31506\dbch\af31505\loch\f31506
e readability of the source code}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid538759 \hich\af31506\dbch\af31505\loch\f31506 , since the GUID does not have to be written in a }{\rtlch\fcs1 \af2 \ltrch\fcs0
\f2\lang1033\langfe1031\langnp1033\insrsid538759\charrsid4476179 \hich\af2\dbch\af31505\loch\f2 const struct}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid538759 \hich\af31506\dbch\af31505\loch\f31506 expression. }{\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid15940546 \line \hich\af31506\dbch\af31505\loch\f31506 In Delphi, this helper method is not necessary, since the compiler is able to convert a GUID-string to a GUID structure (record) at compile time.
}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid1929326\charrsid15940546
\par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\sl259\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid9307250 \rtlch\fcs1 \ab\af0\afs32\alang1025 \ltrch\fcs0
\b\fs32\lang1031\langfe1031\kerning32\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9307250 \hich\af31502\dbch\af31501\loch\f31502 Contact
\b\fs32\lang1031\langfe1031\kerning32\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9307250 \hich\af31502\dbch\af31501\loch\f31502 Co
\hich\af31502\dbch\af31501\loch\f31502 ntact
\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4871690 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9307250 \hich\af31506\dbch\af31505\loch\f31506 UserDetect2 is a project of ViaThinkSoft ( }
{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9307250 \hich\af31506\dbch\af31505\loch\f31506 HYPERLINK "http://www.viathinksoft.com" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5733712
{\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5200000068007400740070003a002f002f007700770077002e007600690061007400680069006e006b0073006f00660074002e0063006f006d002f000000795881f43b1d7f48af2c825dc485276300000000a5ab0001
002d006d001400}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs17\ul\cf17\lang1033\langfe1031\langnp1033\insrsid9307250\charrsid9257259 \hich\af31506\dbch\af31505\loch\f31506 www.\hich\af31506\dbch\af31505\loch\f31506 viathinksoft.com}}}\sectd \ltrsect
\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9307250 \hich\af31506\dbch\af31505\loch\f31506 ) and is released under the terms of GPLv3.
002d006d00140000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs17\ul\cf17\lang1033\langfe1031\langnp1033\insrsid9307250\charrsid9257259 \hich\af31506\dbch\af31505\loch\f31506 www.viathinksoft.com}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1
\af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9307250 \hich\af31506\dbch\af31505\loch\f31506 ) and is released under the terms\hich\af31506\dbch\af31505\loch\f31506 of GPLv3.
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815 \hich\af31506\dbch\af31505\loch\f31506 Project leader:
\par }\pard \ltrpar\ql \fi720\li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6372815 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9307250
\hich\af31506\dbch\af31505\loch\f31506 Daniel Marschall
669,14 → 1084,14
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815 \hich\af31506\dbch\af31505\loch\f31506 eMail:\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815
\hich\af31506\dbch\af31505\loch\f31506 HYPERLINK "mailto:info@daniel-marschall.de" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5733712 {\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b580000006d00610069006c0074006f003a0069006e0066006f004000640061006e00690065006c002d006d006100720073006300680061006c006c002e00640065000000795881f43b1d7f48af2c825dc48527630000
0000a5ab00010067004c007000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs17\ul\cf17\lang1033\langfe1031\langnp1033\insrsid6372815\charrsid9257259 \hich\af31506\dbch\af31505\loch\f31506 info@daniel-marschall.de}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj
{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815
\par \hich\af31506\dbch\af31505\loch\f31506 Web:\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815 \hich\af31506\dbch\af31505\loch\f31506 HYPERLINK "http://www.daniel-marschall.de" }{\rtlch\fcs1 \af0
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5733712 {\*\datafield
0000a5ab00010067004c00700001}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs17\ul\cf17\lang1033\langfe1031\langnp1033\insrsid6372815\charrsid9257259 \hich\af31506\dbch\af31505\loch\f31506 info@daniel-marschall.de}}}\sectd \ltrsect
\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815
\par \hich\af31506\dbch\af31505\loch\f31506 Web:\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815 \hich\af31506\dbch\af31505\loch\f31506 HYPERLINK "http://ww\hich\af31506\dbch\af31505\loch\f31506
w.daniel-marschall.de" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid5733712 {\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5800000068007400740070003a002f002f007700770077002e00640061006e00690065006c002d006d006100720073006300680061006c006c002e00640065002f000000795881f43b1d7f48af2c825dc48527630000
0000a5ab000100000000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs17\ul\cf17\lang1033\langfe1031\langnp1033\insrsid6372815\charrsid9257259 \hich\af31506\dbch\af31505\loch\f31506 www.daniel-marschall.de}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {
\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815
\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4871690 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9307250\charrsid10829644
0000a5ab00010000000000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs17\ul\cf17\lang1033\langfe1031\langnp1033\insrsid6372815\charrsid9257259 \hich\af31506\dbch\af31505\loch\f31506 www.daniel-marschall.de}}}\sectd \ltrsect
\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid6372815
\par }\pard \ltrpar\ql \li0\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8799422 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid8799422\charrsid8799422
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
816,8 → 1231,8
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e500000000000000000000000050d0
163473f9d001feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000b012
eb0632fbd001feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}
/trunk/UserDetect2/UD2_Obj.pas
10,7 → 10,7
Windows, SysUtils, Classes, IniFiles, Contnrs, Dialogs;
 
const
cchBufferSize = 2048;
cchBufferSize = 32768;
 
type
TUD2Plugin = class(TObject)
23,6 → 23,7
PluginVendor: WideString;
PluginVersion: WideString;
IdentificationMethodName: WideString;
Time: Cardinal;
function PluginGUIDString: string;
property DetectedIdentifications: TObjectList{<TUD2IdentificationEntry>}
read FDetectedIdentifications;
51,7 → 52,6
FIniFile: TMemIniFile;
FErrors: TStrings;
FIniFileName: string;
procedure HandleDLL(dllFile: string);
public
property IniFileName: string read FIniFileName;
property Errors: TStrings read FErrors;
75,19 → 75,61
uses
UD2_PluginIntf, UD2_Utils;
 
function UD2_ErrorLookup(ec: UD2_STATUSCODE): string;
type
TUD2PluginLoader = class(TThread)
protected
dllFile: string;
lngID: LANGID;
procedure Execute; override;
procedure HandleDLL;
public
pl: TUD2Plugin;
Errors: TStringList;
constructor Create(Suspended: boolean; DLL: string; alngid: LANGID);
destructor Destroy; override;
end;
 
function UD2_ErrorLookup(dwStatus: UD2_STATUS): string;
resourcestring
LNG_STATUS_OK = 'Operation completed sucessfully';
LNG_STATUS_BUFFER_TOO_SMALL = 'The provided buffer is too small!';
LNG_STATUS_INVALID_ARGS = 'The function received invalid arguments!';
LNG_STATUS_INVALID = 'Unexpected status code %s';
LNG_STATUS_NOT_LICENSED = 'The plugin is not licensed';
LNG_STATUS_OK_UNSPECIFIED = 'Unspecified generic success';
LNG_STATUS_OK_SINGLELINE = 'Operation successful; one identifier returned';
LNG_STATUS_OK_MULTILINE = 'Operation successful; multiple identifiers returned';
 
LNG_STATUS_NOTAVAIL_UNSPECIFIED = 'Unspecified generic "not available" status';
LNG_STATUS_NOTAVAIL_OS_NOT_SUPPORTED = 'Operating system not supported';
LNG_STATUS_NOTAVAIL_HW_NOT_SUPPORTED = 'Hardware not supported';
LNG_STATUS_NOTAVAIL_NO_ENTITIES = 'No entities to identify';
LNG_STATUS_NOTAVAIL_API_CALL_FAILURE = 'An API call failed';
 
LNG_STATUS_ERROR_UNSPECIFIED = 'Unspecified generic error';
LNG_STATUS_ERROR_BUFFER_TOO_SMALL = 'The provided buffer is too small!';
LNG_STATUS_ERROR_INVALID_ARGS = 'The function received invalid arguments!';
LNG_STATUS_ERROR_PLUGIN_NOT_LICENSED = 'The plugin is not licensed';
 
LNG_UNKNOWN_SUCCESS = 'Unknown "success" status code %s';
LNG_UNKNOWN_NOTAVAIL = 'Unknown "not available" status code %s';
LNG_UNKNOWN_FAILED = 'Unknown "failed" status code %s';
LNG_UNKNOWN_STATUS = 'Unknown status code with unexpected category: %s';
begin
if ec = UD2_STATUS_OK then result := LNG_STATUS_OK
else if ec = UD2_STATUS_BUFFER_TOO_SMALL then result := LNG_STATUS_BUFFER_TOO_SMALL
else if ec = UD2_STATUS_INVALID_ARGS then result := LNG_STATUS_INVALID_ARGS
else if ec = UD2_STATUS_NOT_LICENSED then result := LNG_STATUS_NOT_LICENSED
else result := Format(LNG_STATUS_INVALID, ['0x'+IntToHex(ec, 8)]);
if dwStatus = UD2_STATUS_OK_UNSPECIFIED then result := LNG_STATUS_OK_UNSPECIFIED
else if dwStatus = UD2_STATUS_OK_SINGLELINE then result := LNG_STATUS_OK_SINGLELINE
else if dwStatus = UD2_STATUS_OK_MULTILINE then result := LNG_STATUS_OK_MULTILINE
 
else if dwStatus = UD2_STATUS_NOTAVAIL_UNSPECIFIED then result := LNG_STATUS_NOTAVAIL_UNSPECIFIED
else if dwStatus = UD2_STATUS_NOTAVAIL_OS_NOT_SUPPORTED then result := LNG_STATUS_NOTAVAIL_OS_NOT_SUPPORTED
else if dwStatus = UD2_STATUS_NOTAVAIL_HW_NOT_SUPPORTED then result := LNG_STATUS_NOTAVAIL_HW_NOT_SUPPORTED
else if dwStatus = UD2_STATUS_NOTAVAIL_NO_ENTITIES then result := LNG_STATUS_NOTAVAIL_NO_ENTITIES
else if dwStatus = UD2_STATUS_NOTAVAIL_API_CALL_FAILURE then result := LNG_STATUS_NOTAVAIL_API_CALL_FAILURE
 
else if dwStatus = UD2_STATUS_ERROR_UNSPECIFIED then result := LNG_STATUS_ERROR_UNSPECIFIED
else if dwStatus = UD2_STATUS_ERROR_BUFFER_TOO_SMALL then result := LNG_STATUS_ERROR_BUFFER_TOO_SMALL
else if dwStatus = UD2_STATUS_ERROR_INVALID_ARGS then result := LNG_STATUS_ERROR_INVALID_ARGS
else if dwStatus = UD2_STATUS_ERROR_PLUGIN_NOT_LICENSED then result := LNG_STATUS_ERROR_PLUGIN_NOT_LICENSED
 
else if UD2_STATUS_Successful(dwStatus) then result := Format(LNG_UNKNOWN_SUCCESS, [UD2_STATUS_FormatStatusCode(dwStatus)])
else if UD2_STATUS_NotAvail(dwStatus) then result := Format(LNG_UNKNOWN_NOTAVAIL, [UD2_STATUS_FormatStatusCode(dwStatus)])
else if UD2_STATUS_Failed(dwStatus) then result := Format(LNG_UNKNOWN_FAILED, [UD2_STATUS_FormatStatusCode(dwStatus)])
else result := Format(LNG_UNKNOWN_STATUS, [UD2_STATUS_FormatStatusCode(dwStatus)]);
end;
 
{ TUD2Plugin }
140,237 → 182,70
 
{ TUD2 }
 
procedure TUD2.HandleDLL(dllFile: string);
 
procedure ReportError(AMsg: string);
begin
// MessageDlg(AMsg, mtError, [mbOk], 0);
Errors.Add(AMsg)
end;
 
var
sIdentifier: array[0..cchBufferSize-1] of WideChar;
sIdentifiers: TArrayOfString;
sPluginName: array[0..cchBufferSize-1] of WideChar;
sPluginVendor: array[0..cchBufferSize-1] of WideChar;
sPluginVersion: array[0..cchBufferSize-1] of WideChar;
sIdentificationMethodName: array[0..cchBufferSize-1] of WideChar;
sPluginConfigFile: string;
iniConfig: TINIFile;
sOverrideGUID: string;
pluginID: TGUID;
sPluginID: string;
pluginInterfaceID: TGUID;
dllHandle: cardinal;
fPluginInterfaceID: TFuncPluginInterfaceID;
fPluginIdentifier: TFuncPluginIdentifier;
fPluginNameW: TFuncPluginNameW;
fPluginVendorW: TFuncPluginVendorW;
fPluginVersionW: TFuncPluginVersionW;
fIdentificationMethodNameW: TFuncIdentificationMethodNameW;
fIdentificationStringW: TFuncIdentificationStringW;
fCheckLicense: TFuncCheckLicense;
statusCode: UD2_STATUSCODE;
pl: TUD2Plugin;
procedure TUD2.HandlePluginDir(APluginDir: string);
Var
SR: TSearchRec;
path: string;
x: TUD2PluginLoader;
tob: TObjectList;
i: integer;
lngID: LANGID;
sPluginID, v: string;
lngid: LANGID;
resourcestring
LNG_DLL_NOT_LOADED = 'Plugin DLL "%s" could not be loaded.';
LNG_METHOD_NOT_FOUND = 'Method "%s" not found in plugin "%s". The DLL is probably not a valid plugin DLL.';
LNG_INVALID_PLUGIN = 'The plugin "%s" is not a valid plugin for this program version.';
LNG_METHOD_FAILURE = 'Error "%s" at method "%s" of plugin "%s".';
LNG_PLUGINS_SAME_GUID = 'Attention: The plugin "%s" and the plugin "%s" have the same identification GUID. The latter will not be loaded.';
begin
tob := TObjectList.Create;
try
tob.OwnsObjects := false;
 
lngID := GetSystemDefaultLangID;
 
dllHandle := LoadLibrary(PChar(dllFile));
if dllHandle = 0 then
path := IncludeTrailingPathDelimiter(APluginDir);
if FindFirst(path + '*.dll', 0, SR) = 0 then
begin
ReportError(Format(LNG_DLL_NOT_LOADED, [dllFile]));
end;
try
@fPluginInterfaceID := GetProcAddress(dllHandle, mnPluginInterfaceID);
if not Assigned(fPluginInterfaceID) then
repeat
try
tob.Add(TUD2PluginLoader.Create(false, path+sr.Name, lngid));
except
on E: Exception do
begin
ReportError(Format(LNG_METHOD_NOT_FOUND, [mnPluginInterfaceID, dllFile]));
Exit;
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
pluginInterfaceID := fPluginInterfaceID();
if not IsEqualGUID(pluginInterfaceID, GUID_USERDETECT2_IDPLUGIN_V1) then
begin
ReportError(Format(LNG_INVALID_PLUGIN, [dllFile]));
Exit;
end;
 
@fIdentificationStringW := GetProcAddress(dllHandle, mnIdentificationStringW);
if not Assigned(fIdentificationStringW) then
begin
ReportError(Format(LNG_METHOD_NOT_FOUND, [mnIdentificationStringW, dllFile]));
Exit;
end;
 
@fPluginNameW := GetProcAddress(dllHandle, mnPluginNameW);
if not Assigned(fPluginNameW) then
begin
ReportError(Format(LNG_METHOD_NOT_FOUND, [mnPluginNameW, dllFile]));
Exit;
end;
 
@fPluginVendorW := GetProcAddress(dllHandle, mnPluginVendorW);
if not Assigned(fPluginVendorW) then
begin
ReportError(Format(LNG_METHOD_NOT_FOUND, [mnPluginVendorW, dllFile]));
Exit;
end;
 
@fPluginVersionW := GetProcAddress(dllHandle, mnPluginVersionW);
if not Assigned(fPluginVersionW) then
begin
ReportError(Format(LNG_METHOD_NOT_FOUND, [mnPluginVersionW, dllFile]));
Exit;
end;
 
@fCheckLicense := GetProcAddress(dllHandle, mnCheckLicense);
if not Assigned(fCheckLicense) then
begin
ReportError(Format(LNG_METHOD_NOT_FOUND, [mnCheckLicense, dllFile]));
Exit;
end;
 
@fIdentificationMethodNameW := GetProcAddress(dllHandle, mnIdentificationMethodNameW);
if not Assigned(fIdentificationMethodNameW) then
begin
ReportError(Format(LNG_METHOD_NOT_FOUND, [mnIdentificationMethodNameW, dllFile]));
Exit;
end;
 
sPluginID := '';
 
sPluginConfigFile := ChangeFileExt(dllFile, '.ini');
if FileExists(sPluginConfigFile) then
begin
iniConfig := TIniFile.Create(sPluginConfigFile);
try
sOverrideGUID := iniConfig.ReadString('Compatibility', 'OverrideGUID', '');
if sOverrideGUID <> '' then
begin
sPluginID := sOverrideGUID;
pluginID := StringToGUID(sPluginID);
end;
until FindNext(SR) <> 0;
finally
iniConfig.Free;
FindClose(SR);
end;
end;
 
if sPluginID = '' then
for i := 0 to tob.count-1 do
begin
@fPluginIdentifier := GetProcAddress(dllHandle, mnPluginIdentifier);
if not Assigned(fPluginIdentifier) then
x := tob.items[i] as TUD2PluginLoader;
x.WaitFor;
Errors.AddStrings(x.Errors);
if Assigned(x.pl) then
begin
ReportError(Format(LNG_METHOD_NOT_FOUND, [mnPluginIdentifier, dllFile]));
Exit;
end;
pluginID := fPluginIdentifier();
sPluginID := GUIDToString(pluginID);
end;
 
if (FGUIDLookup.Values[sPluginID] <> '') and (FGUIDLookup.Values[sPluginID] <> dllFile) then
sPluginID := GUIDToString(x.pl.PluginGUID);
v := FGUIDLookup.Values[sPluginID];
if (v <> '') and (v <> x.pl.PluginDLL) then
begin
ReportError(Format(LNG_PLUGINS_SAME_GUID, [FGUIDLookup.Values[sPluginID], dllFile]));
Exit;
Errors.Add(Format(LNG_PLUGINS_SAME_GUID, [v, x.pl.PluginDLL]));
x.pl.Free;
end
else
begin
FGUIDLookup.Values[GUIDToString(pluginID)] := dllFile;
FGUIDLookup.Values[sPluginID] := x.pl.PluginDLL;
LoadedPlugins.Add(x.pl);
end;
 
statusCode := fCheckLicense(nil);
if statusCode <> UD2_STATUS_OK then
begin
ReportError(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnCheckLicense, dllFile]));
Exit;
end;
 
statusCode := fPluginNameW(@sPluginName, cchBufferSize, lngID);
if statusCode <> UD2_STATUS_OK then
begin
ReportError(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnPluginNameW, dllFile]));
Exit;
x.Free;
end;
 
statusCode := fPluginVendorW(@sPluginVendor, cchBufferSize, lngID);
if statusCode <> UD2_STATUS_OK then
begin
ReportError(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnPluginVendorW, dllFile]));
Exit;
end;
 
statusCode := fPluginVersionW(@sPluginVersion, cchBufferSize, lngID);
if statusCode <> UD2_STATUS_OK then
begin
ReportError(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnPluginVersionW, dllFile]));
Exit;
end;
 
statusCode := fIdentificationMethodNameW(@sIdentificationMethodName, cchBufferSize);
if statusCode <> UD2_STATUS_OK then
begin
ReportError(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnIdentificationMethodNameW, dllFile]));
Exit;
end;
 
pl := TUD2Plugin.Create;
pl.PluginDLL := dllFile;
pl.PluginGUID := pluginID;
pl.PluginName := sPluginName;
pl.PluginVendor := sPluginVendor;
pl.PluginVersion := sPluginVersion;
pl.IdentificationMethodName := sIdentificationMethodName;
LoadedPlugins.Add(pl);
 
statusCode := fIdentificationStringW(@sIdentifier, cchBufferSize);
if statusCode <> UD2_STATUS_OK then
begin
ReportError(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnIdentificationStringW, dllFile]));
Exit;
end;
 
if sIdentifier = '' then Exit;
 
// Multiple identifiers (e.g. multiple MAC addresses are delimited via #10 )
SetLength(sIdentifiers, 0);
sIdentifiers := SplitString(UD2_MULTIPLE_ITEMS_DELIMITER, sIdentifier);
for i := Low(sIdentifiers) to High(sIdentifiers) do
begin
pl.AddIdentification(sIdentifiers[i]);
end;
finally
FreeLibrary(dllHandle);
tob.free;
end;
end;
 
procedure TUD2.HandlePluginDir(APluginDir: string);
Var
SR: TSearchRec;
path: string;
begin
path := IncludeTrailingPathDelimiter(APluginDir);
if FindFirst(path + '*.dll', 0, SR) = 0 then
begin
repeat
try
HandleDLL(path + sr.Name);
except
on E: Exception do
begin
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
 
destructor TUD2.Destroy;
begin
FIniFile.Free;
389,8 → 264,10
end;
 
function TUD2.GetTaskName(AShortTaskName: string): string;
resourcestring
LNG_NO_DESCRIPTION = '(%s)';
begin
result := FIniFile.ReadString(AShortTaskName, 'Description', '('+AShortTaskName+')');
result := FIniFile.ReadString(AShortTaskName, 'Description', Format(LNG_NO_DESCRIPTION, [AShortTaskName]));
end;
 
procedure TUD2.GetTaskListing(outSL: TStrings);
506,4 → 383,232
end;
end;
 
{ TUD2PluginLoader }
 
procedure TUD2PluginLoader.Execute;
begin
inherited;
 
HandleDLL;
end;
 
constructor TUD2PluginLoader.Create(Suspended: boolean; DLL: string; alngid: LANGID);
begin
inherited Create(Suspended);
dllfile := dll;
pl := nil;
Errors := TStringList.Create;
lngid := alngid;
end;
 
destructor TUD2PluginLoader.Destroy;
begin
Errors.Free;
inherited;
end;
 
procedure TUD2PluginLoader.HandleDLL;
var
sIdentifier: WideString;
sIdentifiers: TArrayOfString;
buf: array[0..cchBufferSize-1] of WideChar;
sPluginConfigFile: string;
iniConfig: TINIFile;
sOverrideGUID: string;
pluginIDfound: boolean;
pluginInterfaceID: TGUID;
dllHandle: cardinal;
fPluginInterfaceID: TFuncPluginInterfaceID;
fPluginIdentifier: TFuncPluginIdentifier;
fPluginNameW: TFuncPluginNameW;
fPluginVendorW: TFuncPluginVendorW;
fPluginVersionW: TFuncPluginVersionW;
fIdentificationMethodNameW: TFuncIdentificationMethodNameW;
fIdentificationStringW: TFuncIdentificationStringW;
fCheckLicense: TFuncCheckLicense;
statusCode: UD2_STATUS;
i: integer;
starttime, endtime, time: cardinal;
loadSuccessful: boolean;
resourcestring
LNG_DLL_NOT_LOADED = 'Plugin DLL "%s" could not be loaded.';
LNG_METHOD_NOT_FOUND = 'Method "%s" not found in plugin "%s". The DLL is probably not a valid plugin DLL.';
LNG_INVALID_PLUGIN = 'The plugin "%s" is not a valid plugin for this program version.';
LNG_METHOD_FAILURE = 'Error "%s" at method "%s" of plugin "%s".';
begin
loadSuccessful := false;
startTime := GetTickCount;
 
dllHandle := LoadLibrary(PChar(dllFile));
if dllHandle = 0 then
begin
Errors.Add(Format(LNG_DLL_NOT_LOADED, [dllFile]));
end;
try
@fPluginInterfaceID := GetProcAddress(dllHandle, mnPluginInterfaceID);
if not Assigned(fPluginInterfaceID) then
begin
Errors.Add(Format(LNG_METHOD_NOT_FOUND, [mnPluginInterfaceID, dllFile]));
Exit;
end;
pluginInterfaceID := fPluginInterfaceID();
if not IsEqualGUID(pluginInterfaceID, GUID_USERDETECT2_IDPLUGIN_V1) then
begin
Errors.Add(Format(LNG_INVALID_PLUGIN, [dllFile]));
Exit;
end;
 
@fIdentificationStringW := GetProcAddress(dllHandle, mnIdentificationStringW);
if not Assigned(fIdentificationStringW) then
begin
Errors.Add(Format(LNG_METHOD_NOT_FOUND, [mnIdentificationStringW, dllFile]));
Exit;
end;
 
@fPluginNameW := GetProcAddress(dllHandle, mnPluginNameW);
if not Assigned(fPluginNameW) then
begin
Errors.Add(Format(LNG_METHOD_NOT_FOUND, [mnPluginNameW, dllFile]));
Exit;
end;
 
@fPluginVendorW := GetProcAddress(dllHandle, mnPluginVendorW);
if not Assigned(fPluginVendorW) then
begin
Errors.Add(Format(LNG_METHOD_NOT_FOUND, [mnPluginVendorW, dllFile]));
Exit;
end;
 
@fPluginVersionW := GetProcAddress(dllHandle, mnPluginVersionW);
if not Assigned(fPluginVersionW) then
begin
Errors.Add(Format(LNG_METHOD_NOT_FOUND, [mnPluginVersionW, dllFile]));
Exit;
end;
 
@fCheckLicense := GetProcAddress(dllHandle, mnCheckLicense);
if not Assigned(fCheckLicense) then
begin
Errors.Add(Format(LNG_METHOD_NOT_FOUND, [mnCheckLicense, dllFile]));
Exit;
end;
 
@fIdentificationMethodNameW := GetProcAddress(dllHandle, mnIdentificationMethodNameW);
if not Assigned(fIdentificationMethodNameW) then
begin
Errors.Add(Format(LNG_METHOD_NOT_FOUND, [mnIdentificationMethodNameW, dllFile]));
Exit;
end;
 
pl := TUD2Plugin.Create;
pl.PluginDLL := dllFile;
 
pluginIDfound := false;
sPluginConfigFile := ChangeFileExt(dllFile, '.ini');
if FileExists(sPluginConfigFile) then
begin
iniConfig := TIniFile.Create(sPluginConfigFile);
try
sOverrideGUID := iniConfig.ReadString('Compatibility', 'OverrideGUID', '');
if sOverrideGUID <> '' then
begin
pl.PluginGUID := StringToGUID(sOverrideGUID);
pluginIDfound := true;
end;
finally
iniConfig.Free;
end;
end;
 
if not pluginIDfound then
begin
@fPluginIdentifier := GetProcAddress(dllHandle, mnPluginIdentifier);
if not Assigned(fPluginIdentifier) then
begin
Errors.Add(Format(LNG_METHOD_NOT_FOUND, [mnPluginIdentifier, dllFile]));
Exit;
end;
pl.PluginGUID := fPluginIdentifier();
end;
 
statusCode := fCheckLicense(nil);
if UD2_STATUS_Failed(statusCode) then
begin
Errors.Add(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnCheckLicense, dllFile]));
Exit;
end;
 
statusCode := fPluginNameW(@buf, cchBufferSize, lngID);
if UD2_STATUS_Successful(statusCode) then pl.PluginName := PWideChar(@buf)
else if UD2_STATUS_NotAvail(statusCode) then pl.PluginName := ''
else
begin
Errors.Add(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnPluginNameW, dllFile]));
Exit;
end;
 
statusCode := fPluginVendorW(@buf, cchBufferSize, lngID);
if UD2_STATUS_Successful(statusCode) then pl.PluginVendor := PWideChar(@buf)
else if UD2_STATUS_NotAvail(statusCode) then pl.PluginVendor := ''
else
begin
Errors.Add(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnPluginVendorW, dllFile]));
Exit;
end;
 
statusCode := fPluginVersionW(@buf, cchBufferSize, lngID);
if UD2_STATUS_Successful(statusCode) then pl.PluginVersion := PWideChar(@buf)
else if UD2_STATUS_NotAvail(statusCode) then pl.PluginVersion := ''
else
begin
Errors.Add(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnPluginVersionW, dllFile]));
Exit;
end;
 
statusCode := fIdentificationMethodNameW(@buf, cchBufferSize);
if UD2_STATUS_Successful(statusCode) then pl.IdentificationMethodName := PWideChar(@buf)
else if UD2_STATUS_NotAvail(statusCode) then pl.IdentificationMethodName := ''
else
begin
Errors.Add(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnIdentificationMethodNameW, dllFile]));
Exit;
end;
 
statusCode := fIdentificationStringW(@buf, cchBufferSize);
if UD2_STATUS_Successful(statusCode) then
begin
sIdentifier := PWideChar(@buf);
if statusCode = UD2_STATUS_OK_MULTILINE then
begin
// Multiple identifiers (e.g. multiple MAC addresses are delimited via #10 )
SetLength(sIdentifiers, 0);
sIdentifiers := SplitString(UD2_MULTIPLE_ITEMS_DELIMITER, sIdentifier);
for i := Low(sIdentifiers) to High(sIdentifiers) do
begin
pl.AddIdentification(sIdentifiers[i]);
end;
end
else
begin
pl.AddIdentification(sIdentifier);
end;
end
else if not UD2_STATUS_NotAvail(statusCode) then
begin
Errors.Add(Format(LNG_METHOD_FAILURE, [UD2_ErrorLookup(statusCode), mnIdentificationStringW, dllFile]));
Exit;
end;
 
endtime := GetTickCount;
time := endtime - starttime;
if endtime < starttime then time := High(Cardinal) - time;
pl.time := time;
 
loadSuccessful := true;
finally
if not loadSuccessful and Assigned(pl) then FreeAndNil(pl);
FreeLibrary(dllHandle);
end;
end;
 
end.