sys: FspFileNodeOpen: refine main file vs stream sharing violations

This commit is contained in:
Bill Zissimopoulos
2016-10-05 14:55:37 -07:00
parent c6967c737a
commit 27b841faf8
2 changed files with 113 additions and 8 deletions

View File

@ -486,6 +486,16 @@ static void stream_create_share_dotest(ULONG Flags, PWSTR Prefix)
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0:foo",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Handle2 = CreateFileW(FilePath,
FILE_READ_DATA, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
FILE_WRITE_DATA, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
DELETE, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
@ -505,6 +515,16 @@ static void stream_create_share_dotest(ULONG Flags, PWSTR Prefix)
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0:foo",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Handle2 = CreateFileW(FilePath,
FILE_READ_DATA, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
FILE_WRITE_DATA, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
DELETE, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
@ -524,6 +544,16 @@ static void stream_create_share_dotest(ULONG Flags, PWSTR Prefix)
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0:foo",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Handle2 = CreateFileW(FilePath,
FILE_READ_DATA, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE == Handle2);
ASSERT(ERROR_SHARING_VIOLATION == GetLastError());
Handle2 = CreateFileW(FilePath,
FILE_WRITE_DATA, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE == Handle2);
ASSERT(ERROR_SHARING_VIOLATION == GetLastError());
Handle2 = CreateFileW(FilePath,
DELETE, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE == Handle2);
@ -543,6 +573,16 @@ static void stream_create_share_dotest(ULONG Flags, PWSTR Prefix)
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0:foo",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Handle2 = CreateFileW(FilePath,
FILE_READ_DATA, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE == Handle2);
ASSERT(ERROR_SHARING_VIOLATION == GetLastError());
Handle2 = CreateFileW(FilePath,
FILE_WRITE_DATA, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE == Handle2);
ASSERT(ERROR_SHARING_VIOLATION == GetLastError());
Handle2 = CreateFileW(FilePath,
DELETE, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE == Handle2);
@ -564,6 +604,16 @@ static void stream_create_share_dotest(ULONG Flags, PWSTR Prefix)
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Handle2 = CreateFileW(FilePath,
FILE_READ_DATA, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
FILE_WRITE_DATA, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
DELETE, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
@ -583,6 +633,16 @@ static void stream_create_share_dotest(ULONG Flags, PWSTR Prefix)
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Handle2 = CreateFileW(FilePath,
FILE_READ_DATA, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
FILE_WRITE_DATA, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
DELETE, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
@ -602,6 +662,16 @@ static void stream_create_share_dotest(ULONG Flags, PWSTR Prefix)
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Handle2 = CreateFileW(FilePath,
FILE_READ_DATA, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
FILE_WRITE_DATA, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
DELETE, FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE == Handle2);
@ -621,6 +691,16 @@ static void stream_create_share_dotest(ULONG Flags, PWSTR Prefix)
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\file0",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Handle2 = CreateFileW(FilePath,
FILE_READ_DATA, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
FILE_WRITE_DATA, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle2);
CloseHandle(Handle2);
Handle2 = CreateFileW(FilePath,
DELETE, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT(INVALID_HANDLE_VALUE == Handle2);