3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS net command
8 * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org)
13 BOOL
myCreateProcessStartGetSzie(CHAR
*cmdline
, LONG
*size
)
17 HANDLE hChildStdoutRd
;
18 HANDLE hChildStdoutWr
;
19 SECURITY_ATTRIBUTES saAttr
;
21 saAttr
.nLength
= sizeof(SECURITY_ATTRIBUTES
);
22 saAttr
.bInheritHandle
= TRUE
;
23 saAttr
.lpSecurityDescriptor
= NULL
;
25 if (! CreatePipe(&hChildStdoutRd
, &hChildStdoutWr
, &saAttr
, 0))
30 if (! CreatePipe(&hChildStdinRd
, &hChildStdinWr
, &saAttr
, 0))
35 myCreateProcess(hChildStdoutWr
, hChildStdinRd
,"rpcclient -c \"service enum\"");
36 *size
= ReadPipeSize(hChildStdoutWr
, hChildStdoutRd
);
40 BOOL
myCreateProcessStart(CHAR
*cmdline
, CHAR
*srvlst
, LONG size
)
44 HANDLE hChildStdoutRd
;
45 HANDLE hChildStdoutWr
;
46 SECURITY_ATTRIBUTES saAttr
;
48 saAttr
.nLength
= sizeof(SECURITY_ATTRIBUTES
);
49 saAttr
.bInheritHandle
= TRUE
;
50 saAttr
.lpSecurityDescriptor
= NULL
;
52 if (! CreatePipe(&hChildStdoutRd
, &hChildStdoutWr
, &saAttr
, 0))
57 if (! CreatePipe(&hChildStdinRd
, &hChildStdinWr
, &saAttr
, 0))
62 myCreateProcess(hChildStdoutWr
, hChildStdinRd
,"rpcclient -c \"service enum\"");
64 return ReadPipe(hChildStdoutWr
, hChildStdoutRd
, srvlst
, size
);
67 BOOL
myCreateProcess(HANDLE hStdoutWr
, HANDLE hStdinRd
, CHAR
*cmdline
)
69 PROCESS_INFORMATION piProcInfo
;
70 STARTUPINFO siStartInfo
;
73 ZeroMemory( &piProcInfo
, sizeof(PROCESS_INFORMATION
) );
74 ZeroMemory( &siStartInfo
, sizeof(STARTUPINFO
) );
75 siStartInfo
.cb
= sizeof(STARTUPINFO
);
76 siStartInfo
.hStdError
= hStdoutWr
;
77 siStartInfo
.hStdOutput
= hStdoutWr
;
78 siStartInfo
.hStdInput
= hStdinRd
;
79 siStartInfo
.dwFlags
|= STARTF_USESTDHANDLES
;
80 status
= CreateProcess(NULL
, cmdline
, NULL
, NULL
,
81 TRUE
, 0, NULL
, NULL
, &siStartInfo
, &piProcInfo
);
85 CloseHandle(piProcInfo
.hProcess
);
86 CloseHandle(piProcInfo
.hThread
);
92 LONG
ReadPipeSize(HANDLE hStdoutWr
, HANDLE hStdoutRd
)
97 if (!CloseHandle(hStdoutWr
))
105 if( !ReadFile( hStdoutRd
, chBuf
, 1, (LPDWORD
)&dwRead
, NULL
) || dwRead
== 0)
117 LONG
ReadPipe(HANDLE hStdoutWr
, HANDLE hStdoutRd
, CHAR
*srvlst
, LONG size
)
124 if (!CloseHandle(hStdoutWr
))
132 if( !ReadFile( hStdoutRd
, chBuf
, 1, (LPDWORD
)&dwRead
, NULL
) || dwRead
== 0)
138 srvlst
[pos
++] = chBuf
[0] ;
144 INT
row_scanner_service(CHAR
*buffer
, LONG
* pos
, LONG size
,
145 CHAR
*name
,CHAR
*save
)
161 for (t
=start_pos
;t
<size
;t
++)
166 if (buffer
[t
-1]==0x09)
170 if (buffer
[t
-1]==0x0d)
182 for (t
=start_pos
;t
<row_size
;t
++)
197 for (t
=get_semi
+1;t
<row_size
;t
++)
199 if (!isspace(buffer
[t
]))
206 /* : not found next row*/
211 if (_strnicmp(name
,&buffer
[t
],strlen(&buffer
[t
]))==0)
216 for (t
=start_pos
;t
<get_semi
;t
++)
218 if (!isspace(buffer
[t
]))
224 memcpy(save
,&buffer
[t
],get_semi
-t
);