· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Проблема с Pipe. Почему не работает:

Посл.отвђт Сообщенiе


Дата: Окт 23, 2003 14:51:31

Проблема с Pipe. Почему не работает ниже приведенный код? Все вроде бы проходит нормально до ReadFile.
ReadFile не читает или не заполняет буфер :(?


Дата: Окт 23, 2003 14:52:01

OutputProc PROC
uses edi
arg @@hDlg:DWORD,@@uMsg:DWORD,@@wParam:DWORD,@@lParam:DWORD
.if @@uMsg==WM_INITDIALOG
call RtlZeroMemory,offset buffer,1024
mov [sat.nLength],size SECURITY_ATTRIBUTES
mov [sat.lpSecurityDescriptor],NULL
mov [sat.bInheritHandle],1
call CreatePipe, offset hRead, offset hWrite, NULL ,NULL
.if eax==NULL
call MessageBoxA, hwnd, offset CreatePipeError, \
offset AppName, MB_ICONERROR+ MB_OK
.else
mov [startupinfo.cb],size STARTUPINFO
;mov [startupinfo.lpReserved],0
;mov [startupinfo.lpDesktop],0
;mov [startupinfo.lpTitle],0
call GetStartupInfoA, offset startupinfo
mov eax, [hWrite]
mov [startupinfo.hStdOutput],eax
mov [startupinfo.hStdError],eax
mov [startupinfo.dwFlags], STARTF_USESHOWWINDOW+\
STARTF_USESTDHANDLES
mov startupinfo.wShowWindow,SW_HIDE
call GetCurrentDirectoryA, length WorkBuff,offset WorkBuff
call lstrcat, offset WorkBuff, offset make_utilite
call CreateProcessA, NULL, offset WorkBuff, NULL,\
NULL, 1, NULL, NULL, NULL, offset startupinfo, offset pinfo
.if eax==NULL
call MessageBoxA ,hwnd,offset CreateProcessError,\
offset AppName,MB_ICONERROR+MB_OK
.else
call CloseHandle,hWrite
.while TRUE
call ReadFile, hRead, offset buffer, 1023, offset byt,0
.if eax==NULL
.break
.endif
call SetDlgItemTextA,@@hDlg,IDC_EDIT2,offset buffer
;call SendMessageA,hwndedit,EM_SETSEL,-1,0
;call SendMessageA,hwndedit,EM_REPLACESEL,\
;0,offset buffer
.endw
.endif
call CloseHandle,hRead
.endif

.elseif @@uMsg==WM_ACTIVATE
call SendDlgItemMessageA,@@hDlg,IDC_EDIT2,EM_SETSEL,-1,0
.elseif @@uMsg==WM_CLOSE
call EndDialog,@@hDlg,NULL
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
OutputProc endp


Дата: Окт 23, 2003 22:16:18

hkwn
call CreatePipe, offset hRead, offset hWrite, NULL ,NULL
Вы не используете параметр lpPipeAttributes. AFAIK, если его не использовать, потом возникают проблемы с наследованием пайпа в новом прцессе. Поменяйте на:
mov [sat.nLength],size SECURITY_ATTRIBUTES
mov [sat.lpSecurityDescriptor],NULL
mov [sat.bInheritHandle],1
call CreatePipe,offset hRead,offset hWrite,offset sat,NULL


Дата: Окт 28, 2003 08:53:33

Спасибо Quantum, Я сам лоханулся: не правильно определил типы неоторых полей в структуре startupinfo :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.056