LockFile é bem-sucedido, mas o ReadFile falha

5

Eu sei que parece uma questão de programação, mas na verdade não é. Fique comigo por favor:

Eu tenho um cliente que está passando por um problema estranho que não consigo explicar: um programa usa um arquivo em uma unidade SMB compartilhada (servidor Windows 2008R2) aberto no modo compartilhado.

Antes de executar uma atualização dentro do arquivo, o programa bloqueará poções específicas usando LockFile , leia os dados, escreva as alterações necessárias nessas partes e depois as desbloqueie.

Isso é feito para garantir que várias instâncias do mesmo programa possam sobrescrever as alterações umas das outras.

No caso de meu cliente, esse programa (que se comportou perfeitamente durante anos em todos os outros locais) consegue bloquear o arquivo, mas a chamada subsequente para ReadFile no mesmo identificador falha e GetlastError retorna erro 64 The specified network name is no longer available

Assim, minha pergunta:

Existe alguma configuração no cliente ou servidor SMB do Windows que poderia causar algo assim?

Parece um bloqueio otimista para mim, mas o Windows não faz bloqueios otimistas por padrão (ele faz bloqueios oportunistas ).

Minha primeira suspeita é que esse problema é causado pelo software antivírus (Kaspersky), mas o administrador do site jura que todos os antivírus têm uma exclusão para esse caminho de rede, tanto no cliente quanto no servidor de arquivos.

O sistema operacional do cliente é uma combinação do Windows XP, 7, 2003 e 2008R2 (via serviços de terminal). Parece acontecer apenas no momento de carga pesada (de manhã, quando todos entram ou saem à noite, quando todos fazem o logout).

    
por Stephane 24.07.2013 / 17:20

2 respostas

1

Bem, a resposta foi muito mais simples do que eu pensava: um driver de dispositivo defeituoso para o NIC do servidor aparentemente era a causa de todos esses problemas.

    
por 27.08.2013 / 08:47
0

Este é realmente um problema de programação IMHO, mas pode ser revertido para a maneira como ele 'funcionou' antes, desclassificando seu sistema operacional. O Windows 7 introduziu um novo mecanismo de bloqueio no CIFS, o que é quase certamente a causa do seu problema. Isso significa que você precisa atualizar o programa para trabalhar com o novo esquema de bloqueio (prob de programação) ou precisa fazer downgrade ou encontrar uma correção de compatibilidade (problemas administrativos).

link

    
por 26.08.2013 / 18:08