Q&A

  • [질문]네트웍으로 MDB 접속시 "Windows-지연된 쓰기 실패" 오류 문의

안녕하세요?

A컴퓨터에 암호를 건 공유폴더를 만들어 그안에 MyData.mdb화일을 두었습니다.
B컴퓨터에서 네트웍(LAN환경)으로 MyData.mdb화일을 접근하여 데이터처리를 하고 있는데요, 종종 ‘Windows-지연된 쓰기 실패’ 라는 메시지가 오른쪽 하단, 트라이 아이콘이 위치한 곳에서 뜹니다.(OS에서 보내주는 메시지인것 같구요)


사용한 API는, 암호걸린 공유폴더에 접속하기위해 WNetUseConnection를 사용하였구요, 반환을 위한 API는 WNetCancelConnection 를 이용하였습니다. 코드는 아래와 같구요.

오류메시지는 프로그램이 종료가 된 후(반환 API 호출후에)에 뜨고 있습니다. 프로그램 종료는 정상적으로 되는데 종료되자마다 정확하게 다음과 같은 메시지가 뜨고 있습니다. 

“Windows-지연된 쓰기 실패.. MyData.ldb에 대한 모든 데이타를 저장하지 못했습니다. 데이터가 손실되었습니다. 사용자 컴퓨터의 하드웨어 또는 네트워크 연결 오류때문에 발생했습니다.이 파일을 다른곳에 저장해 보십시오."

공유폴더에 암호를 제거하면((위의 API 사용안하면) 위의 메시지는 나오지 않는데요, 암호를 걸어서 위의 API 를 사용할때 나오고 있습니다. 윈도우XP를 사용하고 있구요, 해결할 방안이 없겠는지요?


//암호걸린 네트웍 공유폴더에 접근하기

function UseConnection(const aDomain, aUserID, aPassWord: String; var ConnStr: String): Boolean;

  var

    NetResource: TNetResource;

    ConnStrLen: DWORD;

    RetFlag: DWORD;

    RetValue: DWORD;

  begin

    FillChar(NetResource, SizeOf(TNetResource), 0);


    with NetResource do

    begin

      dwType := RESOURCETYPE_ANY;

      lpLocalName := nil;   // 로컬 드라이브 지정하지 않음

      lpRemoteName := PChar('\\' + aDomain);

      lpProvider := nil;

    end;


    SetLength(ConnStr, MAX_PATH);

    ConnStrLen := MAX_PATH;

    RetValue:=

      WNetUseConnection(

        0, NetResource,

        PChar(aPassWord), PChar(aUserID), CONNECT_INTERACTIVE,

        PChar(ConnStr), ConnStrLen, RetFlag

      );

    SetLength(ConnStr, StrLen(PChar(ConnStr)));

    ConnStr := '\\'+aDomain;

    Result := RetValue = 0;

end;

 

//다 사용한 권한은 WNetCancelConnection() API 로 반환
WNetCancelConnection(PChar(ConnStr), true) ==> 이 명령을 줌과 함께 프로그램을 종료시키고 있음

0  COMMENTS