O L E G
18-06-2012, 13:42
Столкнулся с такой проблемой.
При снятия аттрибута функция на файл ссылается
А при блокировки файла функция по тому же пути не ссылается!
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
TCHAR* envVarStrings[] =
{
// ващи пути которые будут указанны в работе
TEXT("%TEMP%"),
TEXT("%SystemDrive%")
};
#define ENV_VAR_STRING_COUNT (sizeof(envVarStrings)/sizeof(TCHAR*))
#define INFO_BUFFER_SIZE 32767
void printError( TCHAR* msg );
using namespace std;
int main()
{
DWORD i;
TCHAR infoBuf[INFO_BUFFER_SIZE];
DWORD bufCharCount = INFO_BUFFER_SIZE;
HANDLE hAppend;
DWORD dwBytesRead=10, dwBytesWritten=10, dwPos=0;
system ("attrib -r -s -h %SystemDrive%\\boot.ini"); // работает путь
hAppend = CreateFile(TEXT("%SystemDrive%\\boot.ini"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); // не работате путь, но если указать C: то работает
int k=0;
while(k!=1)
UnlockFile(hAppend, dwPos, 0, dwBytesRead, 0);
return 0;
}
void printError( TCHAR* msg )
{
DWORD eNum;
TCHAR sysMsg[256];
TCHAR* p;
eNum = GetLastError( );
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, eNum,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
sysMsg, 256, NULL );
// Trim the end of the line and terminate it with a null
p = sysMsg;
while( ( *p > 31 ) || ( *p == 9 ) )
++p;
do { *p-- = 0; } while( ( p >= sysMsg ) &&
( ( *p == '.' ) || ( *p < 33 ) ) );
// Display the message
_tprintf( TEXT("\n\t%s failed with error %d (%s)"), msg, eNum, sysMsg );
}
}
При снятия аттрибута функция на файл ссылается
А при блокировки файла функция по тому же пути не ссылается!
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
TCHAR* envVarStrings[] =
{
// ващи пути которые будут указанны в работе
TEXT("%TEMP%"),
TEXT("%SystemDrive%")
};
#define ENV_VAR_STRING_COUNT (sizeof(envVarStrings)/sizeof(TCHAR*))
#define INFO_BUFFER_SIZE 32767
void printError( TCHAR* msg );
using namespace std;
int main()
{
DWORD i;
TCHAR infoBuf[INFO_BUFFER_SIZE];
DWORD bufCharCount = INFO_BUFFER_SIZE;
HANDLE hAppend;
DWORD dwBytesRead=10, dwBytesWritten=10, dwPos=0;
system ("attrib -r -s -h %SystemDrive%\\boot.ini"); // работает путь
hAppend = CreateFile(TEXT("%SystemDrive%\\boot.ini"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); // не работате путь, но если указать C: то работает
int k=0;
while(k!=1)
UnlockFile(hAppend, dwPos, 0, dwBytesRead, 0);
return 0;
}
void printError( TCHAR* msg )
{
DWORD eNum;
TCHAR sysMsg[256];
TCHAR* p;
eNum = GetLastError( );
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, eNum,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
sysMsg, 256, NULL );
// Trim the end of the line and terminate it with a null
p = sysMsg;
while( ( *p > 31 ) || ( *p == 9 ) )
++p;
do { *p-- = 0; } while( ( p >= sysMsg ) &&
( ( *p == '.' ) || ( *p < 33 ) ) );
// Display the message
_tprintf( TEXT("\n\t%s failed with error %d (%s)"), msg, eNum, sysMsg );
}
}