Buenas, estoi intentando hacer una Shell Remota en C ya que nunca hice una en este lenguaje y me pica la curiosidad

el caso es que no me sale...
El código que tengo es este:
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
PHANDLE leer;
PHANDLE escribir;
SECURITY_ATTRIBUTES sa;
STARTUPINFO si;
PROCESS_INFORMATION pi;
DWORD bytes;
CreatePipe(leer,escribir,&sa,0);
si.cb = 68;
si.dwFlags = 257;
si.hStdError = escribir;
si.hStdOutput = escribir;
CreateProcessA(0,"cmd.exe /c ping 127.0.0.1", &sa, &sa, 1, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi);
Sleep(100);
CloseHandle(escribir);
char buffer[1024];
char total[1024];
int ret = ReadFile(leer,buffer,250,&bytes,0);
lstrcat(total,buffer);
while(ret != 0)
{
ret = ReadFile(leer,buffer,250,&bytes,0);
lstrcat(total,buffer);
}
MessageBoxA(0,total,0,0);
return 0;
}
Alguien sabe que hago mal?
salu2!