Compartir a través de


C6335

Actualización: noviembre 2007

C6335

Advertencia C6335: Controlador de información del proceso con pérdidas <nombre de identificador>

Esta advertencia indica que los identificadores de información de proceso devueltos por la familia de funciones CreateProcess se tienen que cerrar utilizando CloseHandle. De lo contrario se producirán pérdidas de identificadores.

Ejemplo

El código siguiente genera esta advertencia:

#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, como se muestra en el código siguiente:

#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 );
}

Vea también

Otros recursos

CreateProcess

CloseHandle