1 /* 2 * PROJECT: ReactOS kernel-mode tests 3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory 4 * PURPOSE: Read/Write operations test declarations 5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> 6 */ 7 8 #ifndef _KMTEST_IOREADFILE_H_ 9 #define _KMTEST_IOREADFILE_H_ 10 11 #define TEST_FILE_SIZE 17 12 13 #define KEY_SUCCEED 0x00 14 #define KEY_SUCCESS_WAIT1 0x01 15 16 #define KEY_INFO_EXISTS 0x41 17 18 #define KEY_FAIL_MISALIGNED 0x81 19 #define KEY_FAIL_OVERFLOW 0x82 20 #define KEY_FAIL_PARTIAL 0x83 21 #define KEY_FAIL_BUSY 0x84 22 #define KEY_FAIL_VERIFY_REQUIRED 0x85 23 24 #define KEY_FAIL_UNSUCCESSFUL 0xc1 25 #define KEY_FAIL_NOT_IMPLEMENTED 0xc2 26 #define KEY_FAIL_ACCESS_VIOLATION 0xc3 27 #define KEY_FAIL_IN_PAGE_ERROR 0xc4 28 #define KEY_FAIL_EOF 0xc5 29 #define KEY_FAIL_ACCESS_DENIED 0xc6 30 #define KEY_FAIL_MISALIGNED_ERROR 0xc7 31 #define KEY_RESULT_MASK 0xff 32 33 #define KEY_NEXT(key) ( (key) == KEY_FAIL_MISALIGNED_ERROR ? 0xff : \ 34 (key) == KEY_FAIL_VERIFY_REQUIRED ? KEY_FAIL_UNSUCCESSFUL : \ 35 (key) == KEY_INFO_EXISTS ? KEY_FAIL_MISALIGNED : \ 36 (key) == KEY_SUCCESS_WAIT1 ? KEY_INFO_EXISTS : \ 37 (key) + 1 ) 38 #define KEY_ERROR(key) (((key) & 0xc0) == 0xc0) 39 static 40 NTSTATUS TestGetReturnStatus(_In_ ULONG LockKey)41TestGetReturnStatus( 42 _In_ ULONG LockKey) 43 { 44 switch (LockKey & KEY_RESULT_MASK) 45 { 46 case KEY_SUCCEED: 47 return STATUS_SUCCESS; 48 case KEY_SUCCESS_WAIT1: 49 return STATUS_WAIT_1; 50 51 case KEY_INFO_EXISTS: 52 return STATUS_OBJECT_NAME_EXISTS; 53 54 case KEY_FAIL_MISALIGNED: 55 return STATUS_DATATYPE_MISALIGNMENT; 56 case KEY_FAIL_OVERFLOW: 57 return STATUS_BUFFER_OVERFLOW; 58 case KEY_FAIL_PARTIAL: 59 return STATUS_PARTIAL_COPY; 60 case KEY_FAIL_BUSY: 61 return STATUS_DEVICE_BUSY; 62 case KEY_FAIL_VERIFY_REQUIRED: 63 return STATUS_VERIFY_REQUIRED; 64 65 case KEY_FAIL_UNSUCCESSFUL: 66 return STATUS_UNSUCCESSFUL; 67 case KEY_FAIL_NOT_IMPLEMENTED: 68 return STATUS_NOT_IMPLEMENTED; 69 case KEY_FAIL_ACCESS_VIOLATION: 70 return STATUS_ACCESS_VIOLATION; 71 case KEY_FAIL_IN_PAGE_ERROR: 72 return STATUS_IN_PAGE_ERROR; 73 case KEY_FAIL_EOF: 74 return STATUS_END_OF_FILE; 75 case KEY_FAIL_ACCESS_DENIED: 76 return STATUS_ACCESS_DENIED; 77 case KEY_FAIL_MISALIGNED_ERROR: 78 return STATUS_DATATYPE_MISALIGNMENT_ERROR; 79 default: 80 ok(0, "Key = %lx\n", LockKey); 81 return STATUS_INVALID_PARAMETER; 82 } 83 } 84 85 #define KEY_USE_FASTIO 0x100 86 #define KEY_RETURN_PENDING 0x200 87 88 #define KEY_DATA(c) (((c) & 0xff) << 24) 89 #define KEY_GET_DATA(key) ((key) >> 24) 90 91 #endif /* !defined _KMTEST_IOREADFILE_H_ */ 92