added LSL2 stored procedures
This commit is contained in:
111
LSL2/STPROC/FILE_SERVICES.txt
Normal file
111
LSL2/STPROC/FILE_SERVICES.txt
Normal file
@ -0,0 +1,111 @@
|
||||
Function File_Services(@Service, @Params)
|
||||
/************************************************************************************************
|
||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to
|
||||
be copied without written permission from SRP Computer Solutions, Inc.
|
||||
|
||||
Name : File_Services
|
||||
|
||||
Description : Service module input / output operations.
|
||||
|
||||
Notes : For more information visit https://docs.microsoft.com/en-us/windows/win32/api/fileapi/
|
||||
For a list of Windows error messages visit:
|
||||
https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-
|
||||
|
||||
Parameters :
|
||||
Service [in] -- Name of the service being requested
|
||||
Params [in/out] -- Service specific parameters
|
||||
Response [out] -- Response to be sent back to the requesting procedure
|
||||
|
||||
Metadata :
|
||||
|
||||
History : (Date, Initials, Notes)
|
||||
09/04/20 djs Original programmer
|
||||
09/21/20 djs Added CopyFile and GetFileSize services.
|
||||
|
||||
************************************************************************************************/
|
||||
#pragma precomp SRP_PreCompiler
|
||||
|
||||
$insert SERVICE_SETUP
|
||||
$insert LOGICAL
|
||||
$insert FILE_SERVICES_EQUATES
|
||||
|
||||
Declare function SRPWinAPI_CreateFile, SRPWinAPI_GetFileSize, SRPWinAPI_CopyFile
|
||||
Declare subroutine SRPWinAPI_CloseHandle
|
||||
|
||||
GoToService else
|
||||
Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
|
||||
end
|
||||
|
||||
Return Response or ""
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Service Parameter Options
|
||||
//-----------------------------------------------------------------------------
|
||||
Options DESIRED_ACCESS = GENERIC_READ$, GENERIC_WRITE$, GENERIC_EXECUTE$, GENERIC_ALL$
|
||||
Options SHARE_MODE = FILE_SHARE_NONE$, FILE_SHARE_DELETE$, FILE_SHARE_READ$, FILE_SHARE_WRITE$
|
||||
Options CREATION_DISPOSITION = CREATE_ALWAYS$, CREATE_NEW$, OPEN_ALWAYS$, OPEN_EXISTING$, TRUNCATE_EXISTING$
|
||||
Options FILE_ATTRIBUTES = FILE_ATTRIBUTE_ARCHIVE$, FILE_ATTRIBUTE_ENCRYPTED$, FILE_ATTRIBUTE_HIDDEN$, FILE_ATTRIBUTE_NORMAL$, FILE_ATTRIBUTE_OFFLINE$, FILE_ATTRIBUTE_READONLY$ FILE_ATTRIBUTE_SYSTEM$, FILE_ATTRIBUTE_TEMPORARY$
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// SERVICES
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
Service LockFile(FilePath, DesiredAccess = DESIRED_ACCESS, ShareMode = SHARE_MODE, CreationDisposition = CREATION_DISPOSITION, FileAttributes = FILE_ATTRIBUTES)
|
||||
|
||||
If FileAttributes EQ '' then FileAttribute = FILE_ATTRIBUTE_NORMAL$
|
||||
SecurityAttributes = 0 ; // Pointer to security structure - not utilized by this service module at this time
|
||||
TemplateFile = 0 ; // Handle to a template file - not utilized by this service module at this time
|
||||
FileHandle = SRPWinAPI_CreateFile(FilePath, DesiredAccess, ShareMode, SecurityAttributes, CreationDisposition, FileAttributes, TemplateFile)
|
||||
Response = FileHandle
|
||||
|
||||
End Service
|
||||
|
||||
|
||||
Service UnlockFile(FileHandle)
|
||||
|
||||
SRPWinAPI_CloseHandle(FileHandle)
|
||||
* Sleepery(30000)
|
||||
|
||||
End Service
|
||||
|
||||
|
||||
Service GetFileSize(FileHandle)
|
||||
|
||||
UnusedPointer = ''
|
||||
Response = SRPWinAPI_GetFileSize(FileHandle, UnusedPointer)
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service CopyFile(SourceFilepath, DestFilepath)
|
||||
|
||||
SourceFilepath := \00\
|
||||
DestFilepath := \00\
|
||||
Response = SRPWinAPI_CopyFile(GetPointer(SourceFilepath), GetPointer(DestFilepath), 0)
|
||||
|
||||
end service
|
||||
|
||||
Service CheckFileExtension(FilePath, ExpectedExtension)
|
||||
If ExpectedExtension NE '' then
|
||||
If ExpectedExtension[1,1] NE '.' then
|
||||
ExpectedExtension = '.' : ExpectedExtension
|
||||
end
|
||||
ExtensionLen = Len(ExpectedExtension)
|
||||
If FilePath NE '' then
|
||||
LastCharPos = Len(FilePath)
|
||||
CompareValue = FilePath[LastCharPos - (ExtensionLen - 1), ExtensionLen]
|
||||
If CompareValue EQ ExpectedExtension then
|
||||
Response = True$
|
||||
end else
|
||||
Response = False$
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', 'Error in FILE_SERVICES -> CheckFileExtension, File path not provided.')
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', 'Error in FILE_SERVICES -> CheckFileExtension, Comparison extension not provided.')
|
||||
end
|
||||
end service
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user