Thread: [Com0com-cvs] com0com/sys strutils.c,1.5,1.6 strutils.h,1.4,1.5
The virtual serial port driver for Windows.
Brought to you by:
vfrolov
From: Vyacheslav F. <vf...@us...> - 2010-05-27 11:06:31
|
Update of /cvsroot/com0com/com0com/sys In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv1713 Modified Files: strutils.c strutils.h Log Message: Added StrAppendPortParametersRegistryPath() and StrAppendParameterPortName() Index: strutils.h =================================================================== RCS file: /cvsroot/com0com/com0com/sys/strutils.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** strutils.h 3 Nov 2006 13:13:26 -0000 1.4 --- strutils.h 27 May 2010 11:06:23 -0000 1.5 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2004-2006 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2004-2010 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.5 2010/05/27 11:06:23 vfrolov + * Added StrAppendPortParametersRegistryPath() and StrAppendParameterPortName() + * * Revision 1.4 2006/11/03 13:13:26 vfrolov * CopyStrW() now gets size in characters (not in bytes) *************** *** 58,61 **** --- 61,72 ---- IN PDEVICE_OBJECT pDevObj, IN DEVICE_REGISTRY_PROPERTY deviceProperty); + VOID StrAppendPortParametersRegistryPath( + IN OUT PNTSTATUS pStatus, + IN OUT PUNICODE_STRING pDest, + IN PWCHAR pPhPortName); + VOID StrAppendParameterPortName( + IN OUT PNTSTATUS pStatus, + IN OUT PUNICODE_STRING pDest, + IN PWCHAR pPortParametersRegistryPath); #endif /* _C0C_STRUTILS_H_ */ Index: strutils.c =================================================================== RCS file: /cvsroot/com0com/com0com/sys/strutils.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** strutils.c 21 Sep 2009 08:26:12 -0000 1.5 --- strutils.c 27 May 2010 11:06:23 -0000 1.6 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2004-2009 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2004-2010 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.6 2010/05/27 11:06:23 vfrolov + * Added StrAppendPortParametersRegistryPath() and StrAppendParameterPortName() + * * Revision 1.5 2009/09/21 08:26:12 vfrolov * Fixed checking for overflow *************** *** 243,244 **** --- 246,296 ---- *pStatus = status; } + + VOID StrAppendPortParametersRegistryPath( + IN OUT PNTSTATUS pStatus, + IN OUT PUNICODE_STRING pDest, + IN PWCHAR pPhPortName) + { + StrAppendStr(pStatus, pDest, c0cGlobal.registryPath.Buffer, c0cGlobal.registryPath.Length); + StrAppendStr0(pStatus, pDest, L"\\Parameters\\"); + StrAppendStr0(pStatus, pDest, pPhPortName); + } + + VOID StrAppendParameterPortName( + IN OUT PNTSTATUS pStatus, + IN OUT PUNICODE_STRING pDest, + IN PWCHAR pPortParametersRegistryPath) + { + NTSTATUS status; + WCHAR portNameBuf[C0C_PORT_NAME_LEN + 1]; + UNICODE_STRING portNameTmp; + RTL_QUERY_REGISTRY_TABLE queryTable[2]; + + status = *pStatus; + + if (!NT_SUCCESS(status)) + return; + + RtlZeroMemory(queryTable, sizeof(queryTable)); + + portNameTmp.Length = 0; + portNameTmp.MaximumLength = sizeof(portNameBuf); + portNameTmp.Buffer = portNameBuf; + + queryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT | RTL_QUERY_REGISTRY_REQUIRED; + queryTable[0].Name = L"PortName"; + queryTable[0].EntryContext = &portNameTmp; + + status = RtlQueryRegistryValues( + RTL_REGISTRY_ABSOLUTE, + pPortParametersRegistryPath, + queryTable, + NULL, + NULL); + + StrAppendStr(&status, pDest, portNameTmp.Buffer, portNameTmp.Length); + + StrFreeBad(status, pDest); + + *pStatus = status; + } |