¿Por qué fopen no puede abrir un archivo que existe?

Estoy en Windows XP usando Visual Studio 6 (sí, sé que es viejo) creando / manteniendo una DLL de C ++. Me encontré con un problema con fopen al no abrir un archivo existente, siempre devuelve NULL.

He intentado:

Verificando errno y _doserrno estableciendo ambos a cero y luego verificándolos nuevamente, ambos permanecen en cero, y por lo tanto GetLastError () no informa errores. Sé que fopen no necesita configurar errno cuando encuentra un error de acuerdo con un estándar C.Codificar la ruta del archivo, que no es relativa.Intenté en otra máquina de desarrolladores que dio el mismo resultado.

Lo realmente extraño es que CreateFile funciona y el archivo se puede leer con ReadFile. Creemos que esto funciona en una versión de lanzamiento, sin embargo, también estamos viendo un comportamiento muy extraño en otras áreas de la aplicación y no estamos seguros de si esto está relacionado.

El código está debajo, no veo nada extraño, me parece bastante estándar. El archivo fuente no ha cambiado en menos de medio año.

HRESULT CDataHandler::LoadFile( CStdString szFilePath )
{
    //Code
    FILE* pFile;
    if ( NULL == ( pFile = fopen( szFilePath.c_str(), "rb") ) )
    {
        return S_FALSE;
    }
    //More code
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta