Reactos

[WS2_32_APITEST] Add additional testcases. CORE-13067

+22
+22
modules/rostests/apitests/ws2_32/open_osfhandle.c
··· 6 6 */ 7 7 8 8 #include "ws2_32.h" 9 + #include <ndk/iofuncs.h> 10 + #include <ndk/obfuncs.h> 9 11 #include <io.h> 10 12 #include <fcntl.h> 11 13 14 + #define WINVER_WIN8 0x0602 12 15 13 16 static void run_open_osfhandle(void) 14 17 { 15 18 DWORD type; 16 19 int handle, err; 20 + FILE_FS_DEVICE_INFORMATION DeviceInfo; 21 + IO_STATUS_BLOCK StatusBlock; 22 + NTSTATUS Status; 23 + 17 24 SOCKET fd = WSASocketA(AF_INET, SOCK_STREAM, 0, NULL, 0, 0); 18 25 ok (fd != INVALID_SOCKET, "Invalid socket\n"); 19 26 if (fd == INVALID_SOCKET) ··· 21 28 22 29 type = GetFileType((HANDLE)fd); 23 30 ok(type == FILE_TYPE_PIPE, "Expected type FILE_TYPE_PIPE, was: %lu\n", type); 31 + 32 + Status = NtQueryVolumeInformationFile((HANDLE)fd, &StatusBlock, &DeviceInfo, sizeof(DeviceInfo), FileFsDeviceInformation); 33 + ok(Status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got 0x%lx\n", Status); 34 + if (Status == STATUS_SUCCESS) 35 + { 36 + RTL_OSVERSIONINFOEXW rtlinfo = { sizeof(rtlinfo), 0 }; 37 + ULONG Characteristics; 38 + DWORD dwWinVersion; 39 + ok(DeviceInfo.DeviceType == FILE_DEVICE_NAMED_PIPE, "Expected FILE_DEVICE_NAMED_PIPE, got: 0x%lx\n", DeviceInfo.DeviceType); 40 + 41 + RtlGetVersion((PRTL_OSVERSIONINFOW)&rtlinfo); 42 + dwWinVersion = (rtlinfo.dwMajorVersion << 8) | rtlinfo.dwMinorVersion; 43 + Characteristics = dwWinVersion >= WINVER_WIN8 ? 0x20000 : 0; 44 + ok(DeviceInfo.Characteristics == Characteristics, "Expected 0x%lx, got: 0x%lx\n", Characteristics, DeviceInfo.Characteristics); 45 + } 24 46 25 47 handle = _open_osfhandle(fd, _O_BINARY | _O_RDWR); 26 48 err = *_errno();