Отображение только первой буквы файла C - PullRequest
0 голосов
/ 24 января 2019

как я могу отобразить только первую букву моего файла ??
Я пробовал эти значения для параметров:

1, // maximum object size (high-order DWORD) 
1, // maximum object size (low-order DWORD)

(я не знаю разницы между ними). ​​

- это 1 правильный параметр для сопоставления только из 1 буквы?

#define FILENAME "c:\gibrish.bin" 
#include <Windows.h>
#include <stdio.h>
int main()
{
  HANDLE hFile;
  LPCSTR pFileName = FILENAME;
  hFile = CreateFileA(pFileName, // file name 
                      FILE_MAP_ALL_ACCESS, // access type 
                      0, // other processes can't share
                      NULL, // security
                      OPEN_EXISTING, // open only if file exists
                      FILE_ATTRIBUTE_NORMAL, NULL);
  HANDLE hMapFile;

  ////////mapping here
  hMapFile = CreateFileMappingA(hFile, // file handle
                                NULL, // default security
                                FILE_MAP_ALL_ACCESS, // read access 
                                1, // maximum object size (high-order DWORD) 
                                1, // maximum object size (low-order DWORD)
                                   // 0 means map the whole file 
                                "gibrishFile"); // name of mapping object, in case we 
                                                // want to share it


  return 0;
}

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Нет параметров FILE_MAP_ALL_ACCESS в CreateFileMappingA msdn doc .Возвращаемое значение всегда будет неудачным, с GetLastError() return 87 (ERROR_INVALID_PARAMETER).И папка, к которой вы обращаетесь - «C:\\». Если у вас недостаточно прав, CreateFileA вернет INVALID_HANDLE_VALUE и получит ошибку 5 (ERROR_ACCESS_DENIED).

CreateFileMappingA используется для создания пространства для отображения, но не фактического размера, который вы хотите отобразить.А затем используйте отображение MapViewOfFile() в адресное пространство вызывающего процесса.И размер, который вы хотите отобразить, должен <= размер, который вы создаете. </p>

0 голосов
/ 24 января 2019

как я могу сопоставить только первую букву моего файла ??Я пробовал эти значения для параметров:

1, // maximum object size (high-order DWORD) 
1, // maximum object size (low-order DWORD)

эти два параметра образуют (огромное) число, если число, которое вы хотите дать, равно 1 или любому другому меньше 2 ^ 32 high-order DWORD должно быть 0. Если вы задаете 1 и 1, это означает, что число равно 1 * (2 ^ 32) + 1 = 4294967296, это несовместимо только с первой буквой

С https://docs.microsoft.com/en-us/windows/desktop/winprog/windows-data-types:

DWORD 32-разрядное целое число без знака.Диапазон от 0 до 4294967295 десятичный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...