-Added file locking test application. (Thanks to Gunnar Andr� Dalsnes)

svn path=/trunk/; revision=4063
This commit is contained in:
Hartmut Birr 2003-01-25 15:46:52 +00:00
parent 2f26431f71
commit 1fb967f911
3 changed files with 135 additions and 1 deletions

View file

@ -13,7 +13,8 @@ include $(PATH_TO_TOP)/rules.mak
# pteb regtest sectest shm simple thread vmtest winhello
TEST_APPS = alive apc args atomtest bench consume copymove count dump_shared_data \
event file gditest hello isotest lpc mstest mutex nptest \
pteb regtest sectest shm simple thread tokentest vmtest winhello dibtest
pteb regtest sectest shm simple thread tokentest vmtest winhello dibtest \
lock
TEST_MISC =

View file

@ -0,0 +1,21 @@
# $Id: Makefile,v 1.1 2003/01/25 15:46:52 hbirr Exp $
PATH_TO_TOP = ../../..
TARGET_NORC = yes
TARGET_TYPE = program
TARGET_APPTYPE = console
TARGET_NAME = lock
TARGET_SDKLIBS = kernel32.a user32.a
TARGET_OBJECTS = $(TARGET_NAME).o
include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk
# EOF

View file

@ -0,0 +1,112 @@
#include <windows.h>
#include <stdio.h>
HANDLE hFile;
BOOL Slock(DWORD start,DWORD len)
{
OVERLAPPED overl;
BOOL stat;
overl.Offset = start;
overl.OffsetHigh = 0;
overl.hEvent = 0;
stat = LockFileEx(hFile,LOCKFILE_FAIL_IMMEDIATELY,0,len,0,&overl) ;
printf("Slock %i-%i %s\n",start,start+len,stat!=0 ? "OK" : "FAILED");
return stat;
}
BOOL Xlock(DWORD start,DWORD len)
{
OVERLAPPED overl;
BOOL stat;
overl.Offset = start;
overl.OffsetHigh = 0;
overl.hEvent = 0;
stat = LockFileEx(hFile,LOCKFILE_EXCLUSIVE_LOCK|LOCKFILE_FAIL_IMMEDIATELY,0,len,0,&overl);
printf("Xlock %i-%i %s\n",start,start+len,stat!=0 ? "OK" : "FAILED");
return stat;
}
BOOL unlock(DWORD start,DWORD len)
{
OVERLAPPED overl;
BOOL stat;
overl.Offset = start;
overl.OffsetHigh = 0;
overl.hEvent = 0;
stat = UnlockFileEx(hFile,0,len,0,&overl) ;
printf("unlock %i-%i %s\n",start,start+len,stat!=0 ? "OK" : "FAILED");
return stat;
}
BOOL mkfile()
{
hFile = CreateFile("C:\\lock.test",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
printf("mkfile %s\n",(hFile == INVALID_HANDLE_VALUE) ? "FAILED" : "OK");
return !(hFile == INVALID_HANDLE_VALUE);
}
void main(void)
{
DWORD ass;
printf("enter main\n");
mkfile();
Slock(8,10);
Slock(10,5);
Slock(10,5);
Slock(15,5);
Slock(5,10);
Slock(0,100);
Xlock(30,10);
Xlock(30,1);
unlock(30,1);
unlock(30,10);
Xlock(30,5);
Slock(35,5);
unlock(50,5);
unlock(0,100);
unlock(10,5);
if (WriteFile(hFile,"ass",4,&ass,NULL) == 0) printf("write 1 failed\n");
else printf("write 1 success\n");
CloseHandle(hFile);
mkfile();
Slock(0,100);
if (WriteFile(hFile,"ass",4,&ass,NULL) == 0) printf("write 2 failed\n");
else printf("write 2 success\n");
CloseHandle(hFile);
Sleep(10000);
}