mrcnn
07-02-2014, 10:03
Если открывать оптический диск как поток вывода (т.е. структура файловой системы значения не имеет), то на каком уровне привилегий это должно осуществляться? Необходимо ли это писать как драйвер с привилегиями SYSTEM?
HANDLE hDev = CreateFile(TEXT("\\\\.\\D:"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDev == INVALID_HANDLE_VALUE)
{
printf("Could not open file (error %d)\n", GetLastError());
return 0;
}
Этот код создает хэндл.
Однако при попытке считать данные
if( FALSE == ReadFile(hDev, ReadBuffer, BUFFER_SIZE-2, &dwBytesRead, NULL) )
{
printf("Could not read from file (error %d)\n", GetLastError());
CloseHandle(hDev);
return 0;
}
if (dwBytesRead > 0)
{
ReadBuffer[dwBytesRead+1]='\0'; // NULL character
_tprintf(TEXT("Text read (%d bytes): \n"), dwBytesRead);
printf("%s\n", ReadBuffer);
}
else
{
printf("exit\n");
}
появляется ошибка 87. ( ERROR_INVALID_PARAMETER http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx)
Если я пытаюсь открывать жесткий диск кодом
HANDLE hDev = CreateFile(TEXT("\\\\.\\PhysicalDrive0"),
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
то ошибка номер 5 ( ERROR_ACCESS_DENIED5 (0x5) Access is denied. http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
В чем я ошибаюсь?
HANDLE hDev = CreateFile(TEXT("\\\\.\\D:"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDev == INVALID_HANDLE_VALUE)
{
printf("Could not open file (error %d)\n", GetLastError());
return 0;
}
Этот код создает хэндл.
Однако при попытке считать данные
if( FALSE == ReadFile(hDev, ReadBuffer, BUFFER_SIZE-2, &dwBytesRead, NULL) )
{
printf("Could not read from file (error %d)\n", GetLastError());
CloseHandle(hDev);
return 0;
}
if (dwBytesRead > 0)
{
ReadBuffer[dwBytesRead+1]='\0'; // NULL character
_tprintf(TEXT("Text read (%d bytes): \n"), dwBytesRead);
printf("%s\n", ReadBuffer);
}
else
{
printf("exit\n");
}
появляется ошибка 87. ( ERROR_INVALID_PARAMETER http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx)
Если я пытаюсь открывать жесткий диск кодом
HANDLE hDev = CreateFile(TEXT("\\\\.\\PhysicalDrive0"),
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
то ошибка номер 5 ( ERROR_ACCESS_DENIED5 (0x5) Access is denied. http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
В чем я ошибаюсь?