This commit is contained in:
Иван Александрович Кислицын 2023-09-14 19:21:09 +03:00
parent 47c7461ebf
commit aa745dc403
10 changed files with 1766 additions and 0 deletions

89
.gitignore vendored Normal file
View File

@ -0,0 +1,89 @@
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

8
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

2
.idea/lab1.iml generated Normal file
View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<module classpath="CMake" type="CPP_MODULE" version="4" />

4
.idea/misc.xml generated Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
</project>

8
.idea/modules.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/lab1.iml" filepath="$PROJECT_DIR$/.idea/lab1.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

6
CMakeLists.txt Normal file
View File

@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.26)
project(lab1 C)
set(CMAKE_C_STANDARD 17)
add_executable(lab1 main.c)

186
main.c Normal file
View File

@ -0,0 +1,186 @@
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
DWORD mydrives = 100;
char lpBuffer[100];
void GetLogicalDriveStringsMy(){
printf("\nGetLogicalDriveStrings\n");
DWORD test;
int i;
test = GetLogicalDriveStrings(mydrives, (LPWSTR)lpBuffer);
if (test != 0) {
printf("The logical drives of this machine are:\n");
for(i=0;i<100;i++) printf("%c", lpBuffer[i]);
printf("\n");
} else printf("GetLogicalDriveStrings() is failed lor!!! Error code: %d\n", GetLastError());
}
void GetVolumeInformationMy(){
printf("\nGetVolumeInformation\n");
BOOL boolRValue;
TCHAR wszVolumeName[MAX_PATH + 1];
DWORD dwVolumeSerialNumber;
DWORD dwFileSystemFlags;
TCHAR wszSystemName[MAX_PATH + 1];
boolRValue = GetVolumeInformation(
"G:\\", //default to volume for current working directory
wszVolumeName,
MAX_PATH,
&dwVolumeSerialNumber,
NULL, //component max length
&dwFileSystemFlags,
wszSystemName,
MAX_PATH
);
printf("Volume name: %s\n", wszVolumeName);
printf("Volume serial number: %lu\n", dwVolumeSerialNumber);
printf("File system type: %s\n", wszSystemName);
printf("File system characteristics:\n");
if(dwFileSystemFlags & FILE_SUPPORTS_ENCRYPTION){
printf("The file system supports encryption.\n");
} else {
printf("The file system does not support encryption.\n");
}
if(dwFileSystemFlags & FILE_PERSISTENT_ACLS){
printf("The volume preserves and enforces ACLs.\n");
} else {
printf("The volume does not preserve and enforce ACLs.\n");
}
if(dwFileSystemFlags & FILE_SUPPORTS_USN_JOURNAL){
printf("The volume supports update sequence number journals.\n");
} else {
printf("The volume does not support update sequence number journals.\n");
}
if(dwFileSystemFlags & FILE_SUPPORTS_EXTENDED_ATTRIBUTES){
printf("The volume supports extended attributes.\n");
} else {
printf("The volume does not support extended attributes.\n");
}
}
void GetFileSizeMy(){
printf("\nGetFileSize\n");
HANDLE hFile;
TCHAR *szFileName = _TEXT("C:\\Users\\kail_\\CLionProjects\\lab1\\myFile.txt");
LARGE_INTEGER structLargeInt;
hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, (DWORD) NULL, NULL);
if(hFile == INVALID_HANDLE_VALUE) {
printf("Error no. %lu\n", GetLastError());
exit(EXIT_FAILURE);
}
else {
GetFileSizeEx(hFile, &structLargeInt);
printf("Size: %lld bytes.\n", structLargeInt.QuadPart);
}
}
void FindNextFileMy(){
printf("\nFindNextFile\n");
WIN32_FIND_DATA structWin32;
HANDLE hSearch = FindFirstFile(_T("C:\\*"), &structWin32);
printf("FirstFile\n");
_tprintf(_T("%s\n"), structWin32.cFileName);
printf("\nNextFiles\n");
while (FindNextFile(hSearch, &structWin32)) {
_tprintf(_T("%s\n"), structWin32.cFileName);
}
if (GetLastError() == ERROR_NO_MORE_FILES) {
printf("No more files...\n");
}
FindClose(hSearch);
}
void GetWindowsDirectoryMy() {
printf("\nGetWindowsDirectory\n");
GetWindowsDirectory(lpBuffer, MAX_PATH);
printf("Windows Directory\n%s", lpBuffer);
}
void CompareFileTimeMy() {
printf("\n\nCompareFileTime\n");
TCHAR *szFirstName = _TEXT("C:\\Users\\kail_\\CLionProjects\\lab1\\myFile.txt");
TCHAR *szSecondName = _TEXT("C:\\Users\\kail_\\CLionProjects\\lab1\\move\\mySecondFile.txt");
HANDLE hFileFirst;
HANDLE hFileSecond;
hFileFirst = CreateFile(szFirstName, GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, (DWORD) NULL, NULL);
hFileSecond = CreateFile(szSecondName, GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, (DWORD) NULL, NULL);
struct _FILETIME *first;
struct _FILETIME *second;
GetFileTime(hFileFirst, first, NULL, NULL);
GetFileTime(hFileSecond, second, NULL, NULL);
int result = CompareFileTime(first, second);
switch (result) {
case -1: printf("First Older"); break;
case 0: printf("Same"); break;
case 1: printf("Second Older"); break;
}
}
void SetLocalTimeMy() {
printf("\n\nSetLocalTime\n");
SYSTEMTIME time;
GetLocalTime(&time);
printf("Current Time: %02d.%02d.%d %02d:%02d\n", time.wDay, time.wMonth, time.wYear, time.wHour, time.wMinute);
time.wDay = 11;
time.wMonth = 6;
printf("New Time: %02d.%02d.%d %02d:%02d\n", time.wDay, time.wMonth, time.wYear, time.wHour, time.wMinute);
SetLocalTime(&time);
GetLocalTime(&time);
printf("New Current Time: %02d.%02d.%d %02d:%02d", time.wDay, time.wMonth, time.wYear, time.wHour, time.wMinute);
}
void SetFileAttributesMy(){
printf("\n\nCopyFile\n");
char *szSecondName = "C:\\Users\\kail_\\CLionProjects\\lab1\\copy\\myCopyFile.txt";
SetFileAttributes(szSecondName, 2);
}
void CreateFileMy(){
printf("\n\nCreateFile\n");
char *szSecondName = "C:\\Users\\kail_\\CLionProjects\\lab1\\newFile.txt";
CreateFile(szSecondName, GENERIC_READ, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL);
}
void CopyFileMy() {
printf("\n\nCopyFile\n");
char *szFirstName = "C:\\Users\\kail_\\CLionProjects\\lab1\\myFile.txt";
char *szSecondName = "C:\\Users\\kail_\\CLionProjects\\lab1\\copy\\myCopyFile.txt";
BOOL exist = FALSE;
CopyFile(szFirstName, szSecondName, exist);
}
void MoveFileMy() {
printf("\n\nMoveFile\n");
char *szFirstName = "C:\\Users\\kail_\\CLionProjects\\lab1\\mySecondFile.txt";
char *szSecondName = "C:\\Users\\kail_\\CLionProjects\\lab1\\move\\mySecondFile.txt";
MoveFile(szFirstName, szSecondName);
}
int main() {
// GetLogicalDriveStrings+, GetVolumeInformation+, GetFileSize+, FindNextFile+,
// GetWindowsDirectory+, CompareFileTime+, SetLocalTime+, SetFileAttributes,
// CreateFile+, CopyFile+, MoveFile+
CopyFileMy();
MoveFileMy();
GetLogicalDriveStringsMy();
GetVolumeInformationMy();
GetFileSizeMy();
FindNextFileMy();
GetWindowsDirectoryMy();
CompareFileTimeMy();
SetLocalTimeMy();
CreateFileMy();
SetFileAttributesMy();
return 0;
}

1457
myFile.txt Normal file

File diff suppressed because it is too large Load Diff

0
mySecondFile.txt Normal file
View File