--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS TDI interface
+ * FILE: handle.c
+ * PURPOSE: TDI transport handle management
+ */
+
+#include "precomp.h"
+
+const PWCHAR TcpFileName = L"\\Device\\Tcp";
+
+NTSTATUS openTcpFile(PHANDLE tcpFile, ACCESS_MASK DesiredAccess)
+{
+ UNICODE_STRING fileName;
+ OBJECT_ATTRIBUTES objectAttributes;
+ IO_STATUS_BLOCK ioStatusBlock;
+ NTSTATUS status;
+
+ RtlInitUnicodeString( &fileName, TcpFileName );
+
+ InitializeObjectAttributes( &objectAttributes,
+ &fileName,
+ OBJ_CASE_INSENSITIVE,
+ NULL,
+ NULL );
+
+ status = NtOpenFile( tcpFile,
+ DesiredAccess | SYNCHRONIZE,
+ &objectAttributes,
+ &ioStatusBlock,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ FILE_SYNCHRONOUS_IO_NONALERT);
+
+ /* String does not need to be freed: it points to the constant
+ * string we provided */
+
+ if (!NT_SUCCESS(status))
+ *tcpFile = INVALID_HANDLE_VALUE;
+
+ return status;
+}
+
+VOID closeTcpFile( HANDLE h )
+{
+ ASSERT(h != INVALID_HANDLE_VALUE);
+
+ NtClose( h );
+}