186 lines
6.1 KiB
C
186 lines
6.1 KiB
C
#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;
|
|
} |