C6335C6335

Advertencia C6335: controlador de información del proceso pérdida <handlename >warning C6335: leaking process information handle <handlename>

Esta advertencia indica que los identificadores de información de proceso devueltos por la familia de funciones CreateProcess deben cerrarse mediante CloseHandle.This warning indicates that the process information handles returned by the CreateProcess family of functions need to be closed using CloseHandle. Si no lo hace, se producirán pérdidas de identificador.Failure to do so will cause handle leaks.

EjemploExample

El código siguiente genera esta advertencia:The following code generates this warning:

#include <windows.h>
#include <stdio.h>

void f( )
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    // Start the child process.
    if( !CreateProcess( "C:\\WINDOWS\\system32\\calc.exe",
                        NULL,
                        NULL,
                        NULL,
                        FALSE,
                        0,
                        NULL,
                        NULL,
                        &si,    // Pointer to STARTUPINFO structure.
                        &pi ) ) // Pointer to PROCESS_INFORMATION
  {
    puts("Error");
    return;
  }
    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );
    CloseHandle( pi.hProcess );
}

Para corregir esta advertencia, llame a CloseHandle (pi.``hThread) para cerrar el identificador de subproceso tal como se muestra en el código siguiente:To correct this warning, call CloseHandle (pi.``hThread) to close thread handle as shown in the following code:

#include <windows.h>
#include <stdio.h>

void f( )
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    // Start the child process.
    if( !CreateProcess( "C:\\WINDOWS\\system32\\calc.exe",
                        NULL,
                        NULL,
                        NULL,
                        FALSE,
                        0,
                        NULL,
                        NULL,
                        &si,    // Pointer to STARTUPINFO structure.
                        &pi ) ) // Pointer to PROCESS_INFORMATION
    {
      puts("Error");
      return;
    }

    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
}

Para obtener más información, consulte función CreateProcess y función CloseHandle.For more information, see CreateProcess Function and CloseHandle Function.