update for HEAD-2003021201
[reactos.git] / apps / tests / lock / lock.c
1
2 #include <windows.h>
3 #include <stdio.h>
4
5 HANDLE  hFile;
6
7 BOOL Slock(DWORD start,DWORD len)
8 {
9
10   OVERLAPPED    overl;
11   BOOL  stat;
12   overl.Offset  = start;
13   overl.OffsetHigh      = 0;
14   overl.hEvent = 0;
15
16
17   stat = LockFileEx(hFile,LOCKFILE_FAIL_IMMEDIATELY,0,len,0,&overl) ;
18   printf("Slock %i-%i %s\n",start,start+len,stat!=0 ? "OK" : "FAILED");
19                 return stat;
20
21 }
22
23 BOOL Xlock(DWORD start,DWORD len)
24 {
25
26   OVERLAPPED    overl;
27   BOOL  stat;
28
29   overl.Offset  = start;
30   overl.OffsetHigh      = 0;
31   overl.hEvent = 0;
32
33   stat =  LockFileEx(hFile,LOCKFILE_EXCLUSIVE_LOCK|LOCKFILE_FAIL_IMMEDIATELY,0,len,0,&overl);
34
35   printf("Xlock %i-%i %s\n",start,start+len,stat!=0 ? "OK" : "FAILED");
36   return stat;
37
38
39 }
40
41 BOOL unlock(DWORD start,DWORD len)
42 {
43
44   OVERLAPPED    overl;
45   BOOL  stat;
46   overl.Offset  = start;
47   overl.OffsetHigh      = 0;
48   overl.hEvent = 0;
49
50   stat = UnlockFileEx(hFile,0,len,0,&overl) ;
51   printf("unlock %i-%i %s\n",start,start+len,stat!=0 ? "OK" : "FAILED");
52   return stat;
53
54 }
55
56
57 BOOL mkfile()
58 {
59    hFile = CreateFile("C:\\lock.test",
60                       GENERIC_READ|GENERIC_WRITE,
61                       FILE_SHARE_READ|FILE_SHARE_WRITE,
62                       NULL,
63                       OPEN_ALWAYS,
64                       FILE_ATTRIBUTE_NORMAL,
65                       NULL);
66
67    printf("mkfile %s\n",(hFile == INVALID_HANDLE_VALUE) ? "FAILED" : "OK");
68    return !(hFile == INVALID_HANDLE_VALUE);
69
70
71 }
72
73 void main(void)
74 {
75   DWORD ass;
76
77   printf("enter main\n");
78
79   mkfile();
80
81   Slock(8,10);
82   Slock(10,5);
83   Slock(10,5);
84   Slock(15,5);
85   Slock(5,10);
86   Slock(0,100);
87   Xlock(30,10);
88   Xlock(30,1);
89   unlock(30,1);
90   unlock(30,10);
91   Xlock(30,5);
92   Slock(35,5);
93   unlock(50,5);
94   unlock(0,100);
95   unlock(10,5);
96
97   if (WriteFile(hFile,"ass",4,&ass,NULL) == 0) printf("write 1 failed\n");
98   else printf("write 1 success\n");
99         
100   CloseHandle(hFile);
101   mkfile();
102   Slock(0,100);
103
104   if (WriteFile(hFile,"ass",4,&ass,NULL) == 0) printf("write 2 failed\n");
105   else printf("write 2 success\n");
106
107
108   CloseHandle(hFile);
109   Sleep(10000);
110
111
112 }