You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.0 KiB
104 lines
2.0 KiB
/************************************************************************
|
|
regtool.cpp
|
|
-- general registry configuration function
|
|
|
|
History: Date Author Comment
|
|
8/14/00 Casper Wrote it.
|
|
|
|
*************************************************************************/
|
|
|
|
|
|
#include "stdafx.h"
|
|
#include <tchar.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include <msports.h>
|
|
#include "moxacfg.h"
|
|
#include "mxdebug.h"
|
|
|
|
|
|
ULONG MxGetVenDevId(LPTSTR data)
|
|
{
|
|
ULONG n1=0, n2 = 0;
|
|
TCHAR tmp[5];
|
|
|
|
if (_tcsncmp(data, TEXT("PCI\\"), 4) != 0)
|
|
return (n1);
|
|
|
|
data += 4;
|
|
while (*data) {
|
|
if (_tcsncmp(data, TEXT("VEN_") ,4) == 0) {
|
|
data += 4;
|
|
lstrcpyn(tmp, data, 5);
|
|
if(_stscanf(tmp, TEXT("%4X"), &n1)!=1){
|
|
n1 = 0;
|
|
}
|
|
n1 <<= 16;
|
|
data += 5;
|
|
if (_tcsncmp(data, TEXT("DEV_"),4) == 0) {
|
|
data += 4;
|
|
lstrcpyn(tmp, data, 5);
|
|
if(_stscanf(tmp, TEXT("%4X"), &n2)!=1){
|
|
n2 = 0;
|
|
}
|
|
n1 += n2;
|
|
}
|
|
return (n1);
|
|
}
|
|
data++;
|
|
}
|
|
return (n1);
|
|
}
|
|
|
|
int GetFreePort(void)
|
|
{
|
|
DWORD maxport;
|
|
LPBYTE combuf;
|
|
HCOMDB hcomdb;
|
|
int port, i;
|
|
|
|
port = 0;
|
|
|
|
if(ComDBOpen(&hcomdb) != ERROR_SUCCESS){
|
|
Mx_Debug_Out(TEXT("ComDBOpen fail\n"));
|
|
return port;
|
|
}
|
|
|
|
ComDBGetCurrentPortUsage (hcomdb,
|
|
NULL, 0, CDB_REPORT_BYTES, &maxport);
|
|
|
|
combuf = new BYTE[maxport];
|
|
|
|
if(combuf)
|
|
{
|
|
// init buffer
|
|
ZeroMemory(combuf, maxport);
|
|
|
|
ComDBGetCurrentPortUsage (hcomdb,
|
|
combuf, maxport, CDB_REPORT_BYTES, &maxport);
|
|
|
|
|
|
if(maxport > MAXPORTS)
|
|
maxport = MAXPORTS;
|
|
|
|
for(i=0; i<(int)maxport; i++){
|
|
if(combuf[i]==0){
|
|
port = i+1;
|
|
break;
|
|
}else
|
|
continue;
|
|
}
|
|
|
|
delete[] combuf;
|
|
}
|
|
|
|
BOOL bret;
|
|
if(port!=0)
|
|
ComDBClaimPort (hcomdb, port, TRUE, &bret);
|
|
|
|
ComDBClose(hcomdb);
|
|
|
|
return port;
|
|
}
|
|
|
|
|