.


:




:

































 

 

 

 





, . Windows 64- 32- ; Win64 .

, ( , 23 ) . , 3 , , . Win64 .

, , , . , .

:

. , , , .

, , . , , MapViewOfFile, .

:

, , :

1. . , GENERIC_READ.

2. , CreateFileMapping ( 3), SetFilePointer SetEndOfFile.

3. CreateFileMapping OpenFileMapping.

4. MapViewOfFile.

5. . UnmapViewOfFile MapViewOfFile.

6. , UnmapViewOfFile, CloseHandle CloseHandle .

:

atou ( 2.4) ASCII- Unicode, . , /. 5.3 , , .

, , , . , /, , . , , , NTFS , , . Web- , .

Windows NT NTFS.

, , .

. , . , , , , , . , 192 60 . , .

5.3 Asc2UnMM. , 2.4.

5.3. Asc2UnMM:

/* 5. Asc2UnMM.c: , . */

#include "EvryThng.h"

 

BOOL Asc2Un(LPCTSTR fin, LPCTSTR fOut, BOOL bFaillfExists) {

HANDLE hIn, hOut, hInMap, hOutMap;

LPSTR pIn, pInFile;

LPWSTR pOut, pOutFile;

DWORD FsLow, dwOut;

/* . */

hIn = CreateFile(fIn, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

hInMap = CreateFileMapping(hIn, NULL, PAGE_READONLY, 0, 0, NULL);

pInFile = MapViewOfFile(hInMap, FILE_MAP_READ, 0, 0, 0);

dwOut = bFailIfExists? CREATE NEW: CREATE ALWAYS;

hOut = CreateFile(fOut, GENERIC_READ | GENERIC_WRITE, 0, NULL, dwOut, FILE_ATTRIBUTE_NORMAL, NULL);

FsLow = GetFileSize (hIn, NULL); /* . */

hOutMap = CreateFileMapping(hOut, NULL, PAGE_READWRITE, 0, 2* FsLow, NULL);

pOutFile = MapViewOfFile(hOutMap, FILE_MAP_WRITE, 0, 0, (SIZE_T)(2 * FsLow));

/* ASCII Unicode. */

pIn = pInFile;

pOut = pOutFile;

while (pIn < pInFile + FsLow) {

*pOut = (WCHAR) *pIn;

pIn++;

pOut++;

}

UnmapViewOfFile(pOutFile);

UnmapViewOfFile(pInFile);

CloseHandle(hOutMap);

CloseHandle(hInMap);

CloseHandle(hIn);

CloseHandle(hOut);

return TRUE;

}

:

, . , , .

5.4 . , sortFL, 5.1 , 8- , . 5.5 .

<stdlib.h> qsort, . , , , KeyCompare 5.2.

. , , , , qsort. - / . , .

5.4. sortFL:

/* 5. sortFL. . .*/

/* : sortFL */

#include "EvryThng.h"

 

typedef struct _RECORD {

TCHAR Key[KEY_SIZE];

TCHAR Data[DATALEN];

} RECORD;

 

#define RECSIZE sizeof(RECORD)

 

int _tmain(int argc, LPTSTR argv[]) {

HANDLE hFile = INVALID_HANDLE_VALUE, hMap = NULL;

LPVOID pFile = NULL;

DWORD FsLow, Result = 2;

TCHAR TempFile[MAX_PATH];

LPTSTR pTFile;

/* , , . */

/* -, . */

_stprintf(TempFile, _T("%s%s"), argv[1], _(".tmp"));

CopyFile(argv[1], TempFile, TRUE);

Result = 1; /* . */

/* . */

hFile = CreateFile(TempFile, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

FsLow = GetFileSize(hFile, NULL);

hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, FsLow + TSIZE, NULL);

pFile = MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0 /* FsLow + TSIZE */, 0);

qsort(pFile, FsLow / RECSIZE, RECSIZE, KeyCompare);

/* KeyCompare 5.2. */

/* . */

pTFile = (LPTSTR)pFile;

pTFile[FsLow/TSIZE] = '\0';

_tprintf(_T("%s"), pFile);

UnmapViewOfFile(pFile);

CloseHandle(hMap);

CloseHandle(hFile);

DeleteFile(TempFile);

return 0;

}

, , . , , . , Web- , 5.4, , .





:


: 2015-09-20; !; : 698 |


:

:

- - , .
==> ...

1630 - | 1593 -


© 2015-2024 lektsii.org - -

: 0.021 .