18 #define MAX_INSTANCES 5 20 #define OUT_QUOTA 4096 22 #define MakeServer(ServerHandle, PipePath, ServerSynchronous) \ 23 NpCreatePipeEx(ServerHandle, \ 28 FILE_SHARE_READ | FILE_SHARE_WRITE, \ 32 SYNCHRONIZE | GENERIC_READ | GENERIC_WRITE, \ 34 (ServerSynchronous) ? FILE_SYNCHRONOUS_IO_NONALERT \ 38 #define CheckServer(ServerHandle, State) \ 39 NpCheckServerPipe(ServerHandle, \ 40 BYTE_STREAM, QUEUE, BYTE_STREAM, DUPLEX, \ 43 OUT_QUOTA, OUT_QUOTA, \ 46 #define CheckClient(ClientHandle, State) \ 47 NpCheckClientPipe(ClientHandle, \ 48 BYTE_STREAM, QUEUE, BYTE_STREAM, DUPLEX, \ 51 OUT_QUOTA, OUT_QUOTA, \ 54 #define CheckServerQuota(ServerHandle, InQ, OutQ) \ 55 NpCheckServerPipe(ServerHandle, \ 56 BYTE_STREAM, QUEUE, BYTE_STREAM, DUPLEX, \ 59 OUT_QUOTA, OUT_QUOTA - (OutQ), \ 60 FILE_PIPE_CONNECTED_STATE) 62 #define CheckClientQuota(ClientHandle, InQ, OutQ) \ 63 NpCheckClientPipe(ClientHandle, \ 64 BYTE_STREAM, QUEUE, BYTE_STREAM, DUPLEX, \ 67 OUT_QUOTA, OUT_QUOTA - (OutQ), \ 68 FILE_PIPE_CONNECTED_STATE) 70 #define CheckPipeContext(Context, ExpectedStatus, ExpectedBytes) do \ 72 ok_bool_true(Okay, "CheckPipeContext"); \ 73 ok_eq_hex((Context)->ReadWrite.Status, ExpectedStatus); \ 74 ok_eq_ulongptr((Context)->ReadWrite.BytesTransferred, ExpectedBytes); \ 92 Context->Connect.ClientHandle = ClientHandle;
134 Context->Connect.PipePath = PipePath;
135 Context->Connect.ClientSynchronous = ClientSynchronous;
147 Context->Listen.ServerHandle = ServerHandle;
215 DefaultTimeout.
QuadPart = -50 * 1000 * 10;
236 ClientHandle = ConnectContext.
Connect.ClientHandle;
381 ClientHandle = ConnectContext.
Connect.ClientHandle;
412 ClientHandle = ConnectContext.
Connect.ClientHandle;
443 ClientHandle = ConnectContext.
Connect.ClientHandle;
474 ClientHandle = ConnectContext.
Connect.ClientHandle;
506 ClientHandle = ConnectContext.
Connect.ClientHandle;
539 ClientHandle = ConnectContext.
Connect.ClientHandle;
static BOOLEAN CheckWritePipe(IN PTHREAD_CONTEXT Context, IN HANDLE PipeHandle, IN const VOID *Buffer, IN ULONG BufferSize, IN ULONG MilliSeconds)
PKTHREAD KmtStartThread(IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext OPTIONAL)
#define STATUS_PIPE_DISCONNECTED
#define CheckPipeContext(Context, ExpectedStatus, ExpectedBytes)
#define CheckClient(ClientHandle, State)
#define FILE_PIPE_CLOSING_STATE
IN BOOLEAN OUT PSTR Buffer
#define CheckServer(ServerHandle, State)
static KSTART_ROUTINE TestReadWrite
BOOLEAN TriggerWork(IN PTHREAD_CONTEXT Context, IN ULONG MilliSeconds)
VOID StartWorkerThread(OUT PTHREAD_CONTEXT Context)
#define ReadBuffer(BaseIoAddress, Buffer, Count)
#define ok_eq_ulongptr(value, expected)
#define DEVICE_NAMED_PIPE
VOID FinishWorkerThread(IN PTHREAD_CONTEXT Context)
struct _THREAD_CONTEXT::@1599::@1602 Listen
#define STATUS_PIPE_CLOSING
#define CheckServerQuota(ServerHandle, InQ, OutQ)
#define FILE_PIPE_CONNECTED_STATE
struct _THREAD_CONTEXT::@1599::@1601 Connect
#define ok_bool_false(value, desc)
struct _THREAD_CONTEXT::@1599::@1603 ReadWrite
static BOOLEAN CheckReadPipe(IN PTHREAD_CONTEXT Context, IN HANDLE PipeHandle, OUT PVOID Buffer, IN ULONG BufferSize, IN ULONG MilliSeconds)
#define ok_bool_true(value, desc)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define NpCheckServerPipe(h, rm, cm, npt, npc, mi, ci, iq, rsa, oq, wqa, nps)
BOOLEAN ClientSynchronous
static VOID ReadPipe(IN OUT PTHREAD_CONTEXT Context)
static BOOLEAN CheckListenPipe(IN PTHREAD_CONTEXT Context, IN HANDLE ServerHandle, IN ULONG MilliSeconds)
NTSTATUS NpReadPipe(IN HANDLE PipeHandle, OUT PVOID Buffer, IN ULONG BufferSize, OUT PULONG_PTR BytesRead)
static BOOLEAN CheckConnectPipe(IN PTHREAD_CONTEXT Context, IN PCWSTR PipePath, IN BOOLEAN ClientSynchronous, IN ULONG MilliSeconds)
NTSTATUS NpWritePipe(IN HANDLE PipeHandle, IN const VOID *Buffer, IN ULONG BufferSize, OUT PULONG_PTR BytesWritten)
#define STATUS_PIPE_LISTENING
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define NpDisconnectPipe(ServerHandle)
#define STATUS_PIPE_BROKEN
#define CheckClientQuota(ClientHandle, InQ, OutQ)
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
START_TEST(NpfsReadWrite)
static VOID ListenPipe(IN OUT PTHREAD_CONTEXT Context)
VOID KmtFinishThread(IN PKTHREAD Thread OPTIONAL, IN PKEVENT Event OPTIONAL)
#define MakeServer(ServerHandle, PipePath, ServerSynchronous)
#define NpCheckClientPipe(h, rm, cm, npt, npc, mi, ci, iq, rsa, oq, wqa, nps)
BOOLEAN WaitForWork(IN PTHREAD_CONTEXT Context, IN ULONG MilliSeconds)
#define NpQueryPipe(h, es)
#define FILE_PIPE_DISCONNECTED_STATE
struct _READ_WRITE_TEST_CONTEXT * PREAD_WRITE_TEST_CONTEXT
BOOLEAN ServerSynchronous
static VOID WritePipe(IN OUT PTHREAD_CONTEXT Context)
#define FILE_SYNCHRONOUS_IO_NONALERT
struct tagContext Context
#define ok_eq_hex(value, expected)
#define ok_eq_uint(value, expected)
static VOID ConnectPipe(IN OUT PTHREAD_CONTEXT Context)
#define FILE_PIPE_LISTENING_STATE
#define WriteBuffer(BaseIoAddress, Buffer, Count)
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
struct _READ_WRITE_TEST_CONTEXT READ_WRITE_TEST_CONTEXT
NTSTATUS NpOpenPipeEx(OUT PHANDLE ClientHandle, IN PCWSTR PipePath, IN ACCESS_MASK DesiredAccess, IN ULONG ShareAccess, IN ULONG Disposition, IN ULONG CreateOptions)
#define NpListenPipe(ServerHandle)