ΠΠ°ΠΊ ΠΈ ΠΈΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΡ Π² UNIX, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π‘, ΡΠΏΠΎΡΠΎΠ±Π½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ fseek ΠΈΠ»ΠΈ, Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΉ fsetpos ΠΈ fgetpos), Π½ΠΎ ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΆΠ΅ ΠΏΠΎΡΠΎΠ»ΠΊΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘, Π²ΡΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π½ΡΡΡΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ. ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, Visual C++ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π·Π°ΡΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
Π Π΅Π·ΡΠΌΠΈΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄ β ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π°Π΄ΠΎ, ΡΠΎ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π‘.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Windows
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ 1.2 ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ° ΠΆΠ΅ Π·Π°Π΄Π°ΡΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π½ΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Windows API, Π° Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΡ, ΡΡΠΈΠ»Ρ ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ, ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 1.2. cpW: ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Windows, ΠΏΠ΅ΡΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ/* ΠΠ»Π°Π²Π° 1. ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² cp. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ Windows. */
/* cpW ΡΠ°ΠΉΠ»1 ΡΠ°ΠΉΠ»2: ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»1 Π² ΡΠ°ΠΉΠ»2. */
#include <windows.h>
#include <stdio.h>
#define BUF_SIZE 256
int main (int argc, LPTSTR argv []) {
HANDLE hIn, hOut;
DWORD nIn, nOut;
CHAR Buffer [BUF_SIZE];
if (argc != 3) {
printf ("ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅: cpW ΡΠ°ΠΉΠ»1 ΡΠ°ΠΉΠ»2\n");
return 1;
}
hIn = CreateFile(argv [1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hIn == INVALID_HANDLE_VALUE) {
printf("ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ». ΠΡΠΈΠ±ΠΊΠ°: %Ρ \n", GetLastError());
return 2;
}
hOut = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hOut == INVALID_HANDLE_VALUE) {
printf("ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ». ΠΡΠΈΠ±ΠΊΠ°: %x\n", GetLastError());
return 3;
}
while (ReadFile(hIn, Buffer, BUF_SIZE, &nIn, NULL) && nIn > 0) {
WriteFile(hOut, Buffer, nIn, &nOut, NULL);
if (nIn != nOut) {
printf ("ΠΠ΅ΡΡΡΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ: %x\n", GetLastError());
return 4;
}
}
CloseHandle(hIn);
CloseHandle(hOut);
return 0;
}
ΠΡΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠ΅Π΄Π΅ Windows, ΠΊ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ Π² Π³Π»Π°Π²Π΅ 2.
1. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΉΠ» <windows.h>, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ Windows.[10]
2. ΠΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Windows ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ° Handle, ΠΏΡΠΈΡΠ΅ΠΌ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΎΠ±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ CloseHandle.
3. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π·Π°ΠΊΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ°Π½Π΅Π΅ ΠΎΡΠΊΡΡΡΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ, Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² Π½ΠΈΡ ΠΎΡΠΏΠ°Π»Π°, ΡΡΠΎΠ±Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΡΡΡΡ. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ Π½ΠΈΠΌ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ ΠΠ‘, ΠΈ Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°, ΡΡΡΠ»Π°ΡΡΠ΅Π³ΠΎΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎ ΠΠ‘ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ. (ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ.)
4. Windows ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΡΠ»Π°Π³ΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½Π΅ΡΠ΅Π΄ΠΊΠΎ ΠΏΠΎΡΡΠ½ΡΡΡΠΈΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈΠΌΠ΅Π½Π° INVALID_HANDLE_VALUE ΠΈ GENERIC_READ.
5. Π€ΡΠ½ΠΊΡΠΈΠΈ ReadFile ΠΈ WriteFile Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π±ΡΠ»Π΅Π²ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π±Π°ΠΉΡΠΎΠ², Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΈΠΊΠ»ΠΎΠ².[11] ΠΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π±Π°ΠΉΡΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΠΎΠΏΡΡΠΊΡ ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π° ΠΈ Π½Π΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
6. Π€ΡΠ½ΠΊΡΠΈΡ GetLastError ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΠΏΠ° DWORD. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ 1.2 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ Windows ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
7. Windows NT ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π·Π°ΡΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π² Π³Π»Π°Π²Π΅ 15. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π·Π°ΡΠΈΡΠ° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ.
8. Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ CreateFile, ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π±ΠΎΠ³Π°ΡΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Windows
ΠΠ»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΡ Π² Windows ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (convenience functions), ΠΊΠΎΡΠΎΡΡΠ΅, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ Π² ΡΠ΅Π±Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΡ ΡΡ Π·Π°Π΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ (ΡΠΌ. ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ CopyFile Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 1.3). ΠΠΎΠΌΠΈΠΌΠΎ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΡΡΠΎ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ Π½Π°Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ Π±ΡΡΠ΅ΡΠ΅, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π² Π΄Π²ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΡΡ ΡΠ°Π²Π½ΡΠΌ 256.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°1.3.cpCF: ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Windows/* ΠΠ»Π°Π²Π° 1. ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² cp. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Windows CopyFile. */
/* cpCF ΡΠ°ΠΉΠ»1 ΡΠ°ΠΉΠ»2: ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»1 Π² ΡΠ°ΠΉΠ»2. */
#include <windows.h>
#include <stdio.h>
int main (int argc, LPTSTR argv []) {
if (argc != 3) {
printf ("ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅: cpCF ΡΠ°ΠΉΠ»1 ΡΠ°ΠΉΠ»2\n");
return 1;
}
if (!CopyFile(argv[1], argv[2], FALSE)) {
printf("ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ CopyFile: %x\n", GetLastError());
return 2;
}
return 0;
}
Π Π΅Π·ΡΠΌΠ΅
ΠΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΡΡΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΎΡΠ»ΠΈΡΠΈΠΉ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘, Π° Ρ Π΄ΡΡΠ³ΠΎΠΉ β Windows. ΠΡΠ»ΠΈΡΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π. ΠΡΠΈΠΌΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Windows, Π½Π°Π³Π»ΡΠ΄Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΡΡΠΈΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΡΡΡΠ΅ Π² Windows, Π½ΠΎ Π΄Π°ΡΡ Π»ΠΈΡΡ ΠΎΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Windows ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ.
Π¦Π΅Π»Π΅Π²ΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² Π½Π΅ΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ NT5 (Windows XP, 2000 ΠΈ Server 2003). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΊ ΡΠ°Π½Π½ΠΈΠΌ Π²Π΅ΡΡΠΈΡΠΌ NT ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ Windows 9x (95, 98 ΠΈ Me).
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π³Π»Π°Π²Π°Ρ
ΠΠ»Π°Π²Ρ 2 ΠΈ 3 ΠΏΠΎΡΠ²ΡΡΠ΅Π½Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ½ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ASCII ΠΈ Unicode, ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π΅ΡΡΡΠ°. Π ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π³Π»Π°Π²Π°Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ ΠΈ Π·Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠ½ΠΈΠ³ΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
ΠΠΎΠ»Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΡ Π½ΠΈΠΆΠ΅ ΠΊΠ½ΠΈΠ³Π°Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ.
Win32ΠΠ²ΡΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Windows ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Ρ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ Π·ΡΠ΅Π½ΠΈΡ, ΡΠ²Π»ΡΡΡΡΡ [5] ΠΈ [31]. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ½ΠΈΠ³, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ»ΠΈΡΡ ΠΈ Π½Π΅ ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ, Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΡΠΉ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΡ ΠΎΠ΄Π° Windows 95 ΠΈΠ»ΠΈ Windows NT.
ΠΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Microsoft Visual C++ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ Π³ΠΈΠΏΠ΅ΡΡΠ΅ΠΊΡΡΠΎΠ²Π°Ρ ΡΠΏΡΠ°Π²ΠΎΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π½ΠΎ ΡΡ ΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΠΏΠΎΡΠ΅ΡΠΈΠ² Π΄ΠΎΠΌΠ°ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft β http://www.microsoft.com, Π³Π΄Π΅ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ°ΡΡΠΈ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌ Windows. ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΡΠ°Π·Π΄Π΅Π»Π° MSDN (Microsoft Developer's Network) ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄ΠΈΡΠ΅ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π»ΡΠ±ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅ΠΉ Π²Π°Ρ ΡΠ΅ΠΌΠ΅. ΠΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ², ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Win64Win64 ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ½ΠΈΠ³Π°Ρ , Π½ΠΎ ΠΎΠ±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Windows NT ΠΈ ΠΈΡΡΠΎΡΠΈΡ Π΅Π΅ ΡΠ°Π·Π²ΠΈΡΠΈΡΠ§ΠΈΡΠ°ΡΠ΅Π»ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΎ ΡΠ΅Π»ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Windows NT ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, Π»Π΅ΠΆΠ°ΡΠΈΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π΅ Π΅Π΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΊΠ½ΠΈΠ³Π° [38]. Π ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΊΠΈ, Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠ°ΠΌΡΡΡ, ΡΠ΄ΡΠΎ ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°. ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ API, Π° ΡΠ°ΠΊΠΆΠ΅ Windows 9x ΠΈ Π‘Π Π² Π½Π΅ΠΉ Π½Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ Π² ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ ΠΊΠ½ΠΈΠ³Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π½Π΅Π΅ Π²ΡΡΠ΅Π΄ΡΠΈΠΌ ΠΊΠ½ΠΈΠ³Π°ΠΌ [9] ΠΈ [37], Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π²Π°ΠΆΠ½ΡΠΉ ΡΠ΅ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ²ΠΎΠ»ΡΡΠΈΠΈ NT.