mirror of
https://github.com/reactos/reactos.git
synced 2024-09-12 05:43:24 +00:00
![Hermès Bélusca-Maïto](/assets/img/avatar_default.png)
The idea then would be to have the following behaviour (when specifying the following options in the kernel command line): /DEBUGPORT=COMi --> load KDCOM.DLL and use COMi port (i == 1,2,3,4) if possible. /DEBUGPORT=FOO --> load KDFOO.DLL (useful for KDUSB.DLL, KD1394.DLL, KDBAZIS.DLL for VirtualKD, etc...) /DEBUGPORT=ROSDBG:[COMi|SCREEN|FILE|GDB|...] --> load KDROSDBG.DLL which contains the ROS kernel debugger, and use COMi or SCREEN or... as output port. svn path=/branches/kd++/; revision=58883
55 lines
1.5 KiB
C
55 lines
1.5 KiB
C
/*
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
* PROJECT: ReactOS TDI interface
|
|
* FILE: handle.c
|
|
* PURPOSE: TDI transport handle management
|
|
*/
|
|
|
|
#include "iphlpapi_private.h"
|
|
|
|
const PWCHAR TcpFileName = L"\\Device\\Tcp";
|
|
|
|
NTSTATUS openTcpFile(PHANDLE tcpFile)
|
|
{
|
|
UNICODE_STRING fileName;
|
|
OBJECT_ATTRIBUTES objectAttributes;
|
|
IO_STATUS_BLOCK ioStatusBlock;
|
|
NTSTATUS status;
|
|
|
|
RtlInitUnicodeString( &fileName, TcpFileName );
|
|
|
|
InitializeObjectAttributes( &objectAttributes,
|
|
&fileName,
|
|
OBJ_CASE_INSENSITIVE,
|
|
NULL,
|
|
NULL );
|
|
|
|
status = ZwCreateFile( tcpFile,
|
|
SYNCHRONIZE | GENERIC_EXECUTE |
|
|
GENERIC_READ | GENERIC_WRITE,
|
|
&objectAttributes,
|
|
&ioStatusBlock,
|
|
NULL,
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
|
FILE_OPEN_IF,
|
|
FILE_SYNCHRONOUS_IO_NONALERT,
|
|
0,
|
|
0 );
|
|
|
|
/* 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 );
|
|
}
|