FarStandardFunctions содержит указатели на стандартные функции, используемые в Far.exe
struct FarStandardFunctions
{
size_t StructSize;
FARSTDATOI atoi;
FARSTDATOI64 atoi64;
FARSTDITOA itoa;
FARSTDITOA64 itoa64;
FARSTDSPRINTF sprintf;
FARSTDSSCANF sscanf;
FARSTDQSORT qsort;
FARSTDBSEARCH bsearch;
FARSTDSNPRINTF snprintf;
FARSTDLOCALISLOWER LIsLower;
FARSTDLOCALISUPPER LIsUpper;
FARSTDLOCALISALPHA LIsAlpha;
FARSTDLOCALISALPHANUM LIsAlphanum;
FARSTDLOCALUPPER LUpper;
FARSTDLOCALLOWER LLower;
FARSTDLOCALUPPERBUF LUpperBuf;
FARSTDLOCALLOWERBUF LLowerBuf;
FARSTDLOCALSTRUPR LStrupr;
FARSTDLOCALSTRLWR LStrlwr;
FARSTDLOCALSTRICMP LStricmp;
FARSTDLOCALSTRNICMP LStrnicmp;
FARSTDUNQUOTE Unquote;
FARSTDLTRIM LTrim;
FARSTDRTRIM RTrim;
FARSTDTRIM Trim;
FARSTDTRUNCSTR TruncStr;
FARSTDTRUNCPATHSTR TruncPathStr;
FARSTDQUOTESPACEONLY QuoteSpaceOnly;
FARSTDPOINTTONAME PointToName;
FARSTDGETPATHROOT GetPathRoot;
FARSTDADDENDSLASH AddEndSlash;
FARSTDCOPYTOCLIPBOARD CopyToClipboard;
FARSTDPASTEFROMCLIPBOARD PasteFromClipboard;
FARSTDINPUTRECORDTOKEYNAME FarInputRecordToName;
FARSTDKEYNAMETOINPUTRECORD FarNameToInputRecord;
FARSTDXLAT XLat;
FARSTDGETFILEOWNER GetFileOwner;
FARSTDGETNUMBEROFLINKS GetNumberOfLinks;
FARSTDRECURSIVESEARCH FarRecurseSearch;
FARSTDMKTEMP MkTemp;
FARSTDPROCESSNAME ProcessName;
FARSTDMKLINK MkLink;
FARCONVERTPATH ConvertPath;
FARGETREPARSEPOINTINFO GetReparsePointInfo;
FARGETCURRENTDIRECTORY GetCurrentDirectory;
FARFORMATFILESIZE FormatFileSize;
FARSTDFARCLOCK FarClock;
};
FarStandardFunctions. Если в будущем будут добавлены новые поля, это поле позволит определить это.Сохраните содержимое структуры в локальное пространство плагина:
static struct PluginStartupInfo Info;
static struct FarStandardFunctions FSF;
void WINAPI SetStartupInfoW(struct PluginStartupInfo *psInfo)
{
Info=*psInfo;
FSF=*psInfo->FSF;
Info.FSF=&FSF; // скорректируем адрес в локальной структуре
...
}