diff --git a/src/xpdev/xpmap.c b/src/xpdev/xpmap.c index 12f4b038ad0c81f28bf0de46d39ba992d1d5083b..6708d0cc9b52c9329444e53bbb2ed582272b4fae 100644 --- a/src/xpdev/xpmap.c +++ b/src/xpdev/xpmap.c @@ -95,10 +95,11 @@ void xpunmap(struct xpmapping *map) struct xpmapping* xpmap(const char *filename, enum xpmap_type type) { - HFILE fd; + HANDLE fd; HANDLE md; OFSTRUCT of; - UINT oflags; + DWORD caccess; + DWORD cshare; DWORD mprot; DWORD maccess; DWORD size; @@ -107,28 +108,31 @@ struct xpmapping* xpmap(const char *filename, enum xpmap_type type) switch(type) { case XPMAP_READ: - oflags=OF_READ|OF_SHARE_DENY_NONE; + caccess = GENERIC_READ; + cshare = FILE_SHARE_READ | FILE_SHARE_WRITE; mprot=PAGE_READONLY; maccess=FILE_MAP_READ; break; case XPMAP_WRITE: - oflags=OF_READWRITE|OF_SHARE_DENY_NONE; + caccess = GENERIC_READ | GENERIC_WRITE; + cshare = FILE_SHARE_READ | FILE_SHARE_WRITE; mprot=PAGE_READWRITE; maccess=FILE_MAP_WRITE; break; case XPMAP_COPY: - oflags=OF_READ|OF_SHARE_DENY_NONE; + caccess = GENERIC_READ; + cshare = FILE_SHARE_READ | FILE_SHARE_WRITE; mprot=PAGE_WRITECOPY; maccess=FILE_MAP_COPY; break; } - fd=OpenFile(filename, &of, oflags); - if(fd == HFILE_ERROR) + fd=CreateFile(filename, caccess, cshare, NULL, OPEN_EXISTING, 0, NULL); + if(fd == INVALID_HANDLE_VALUE) return NULL; - if((size=GetFileSize((HANDLE)fd, NULL))==INVALID_FILE_SIZE) + if((size=GetFileSize(fd, NULL))==INVALID_FILE_SIZE) return NULL; - md=CreateFileMapping((HANDLE)fd, NULL, mprot, 0, size, NULL); + md=CreateFileMapping(fd, NULL, mprot, 0, size, NULL); if(md==NULL) return NULL; addr=MapViewOfFile(md, maccess, 0, 0, size); @@ -139,7 +143,7 @@ struct xpmapping* xpmap(const char *filename, enum xpmap_type type) return NULL; } ret->addr=addr; - ret->fd=(HANDLE)fd; + ret->fd=fd; ret->md=md; ret->size=size; return ret;