FtpFileDelete()にて Error 12003?

[戻る]
泰三 2003/02/25(火) 10:21:10
FTPにて一度送信したファイルをFtpDeleteFile()にて消す際にエラーとなり
WSAGetLastError()で取得したエラーコードが「12003」でした。

ネットで調べたのですが、見つかりませんでした。
エラーコード12003って何なんでしょうか?

瀬戸っぷ [E-Mail] 2003/02/25(火) 10:34:02
>ネットで調べたのですが、見つかりませんでした。
>エラーコード12003って何なんでしょうか?

ネットで見つからないのであれば…
ヘッダファイルから探してみてはどうでしょうか?
とりあえず、FtpDeleteFileでGrepすると、WININET.Hにありました。
(includeしていますよね?)
で、該当ファイルを開き、ERRで検索していくと下記のような箇所が見つかると思います。

#define INTERNET_ERROR_BASE                     12000
#define ERROR_INTERNET_EXTENDED_ERROR           (INTERNET_ERROR_BASE + 3)

次に見つけた「ERROR_INTERNET_EXTENDED_ERROR」をGoogleで探すと、
下記のMSのページが見つかりました。

http://www.microsoft.com/japan/developer/library/vidref/dvmsgerrormessages.htm

WinInetは使ったコトないので、ここまでですが……

泰三 2003/02/25(火) 12:07:58
瀬戸っぷさん有難うございます。
早速やってみたのですが、

InternetGetLastResponseInfo()の使い方が分かりません。

引数に求められている
InternetGetLastResponseInfo( 
  LPDWORD lpdwError, 
  LPTSTR lpszBuffer, 
  LPDWORD lpdwBufferLength
);
にはそれぞれ何をいれてあげれば良いのでしょうか?

どなたか宜しくお願いします。

... 2003/02/25(火) 12:18:47
MSDNに書いてあります。

瀬戸っぷ [E-Mail] 2003/02/25(火) 12:31:43
>引数に求められている
>InternetGetLastResponseInfo(
>  LPDWORD lpdwError,
>  LPTSTR lpszBuffer,
>  LPDWORD lpdwBufferLength
>);
>にはそれぞれ何をいれてあげれば良いのでしょうか?

とりあえず、Googleで上記を検索。
残念ながら、有効なページは見つかりませんでした。
(MSDNオンラインが見つかるコトを期待したのですが…)

と、いうコトで少々乱暴ですが、名前から推察してみます。
まず第一引数。
DWORDのポインタを要求していることと、名前がErrorを含んでいるので、
指定したポインタにエラー番号を返すものと想像します。
渡すモノとしては、DWORDの変数のポインタですね。(LPDWORDなので)
次に第二引数。
LPTSTRなので、なんらかの文字列を返してくれるようです。
というコトで受け取り用のメモリのポインタでしょう。
TCHAR szErrorMsg[MAX_PATH]
として、それを渡せばいいでしょう。(確保したサイズが適当かは不明ですが)
最後に第三引数。
またしてもLPDWORDなので、DWORDの変数のポインタを。
名前がBufferLengthとなっているので、バッファの長さと思われます。
しかし、第二引数で渡した受け取りバッファのサイズがAPI中では不明となります。
念のためこの変数にバッファのサイズを入れて呼び出してみるコトにする。
と、いったところでどうでしょう?


と、ココまで書いて手元のMSDNを調べてみました。

Parameters

lpdwError 
 Address of an unsigned long integer variable that receives an error message 
pertaining to the operation that failed. 
lpszBuffer 
 Address of a buffer that receives the error text. 
lpdwBufferLength 
 Address of an unsigned long integer variable that contains the size of the 
lpszBuffer buffer in TCHAR. When the function returns, this parameter contains 
the size of the string written to the buffer. 

と、いうコトでおおむねあっていたようです。

書いておいてなんですが、私は使ったコトはありませんので半分くらいは推測ですし、
返されるエラー番号がどういうものなのかは不明です。

七つ夜 [E-Mail] 2003/02/25(火) 13:07:11
いつからここはMSDNヘルプになったのかな?っていう素朴な疑問は置いておいて・・・

泰三さんはヘルプ持ってないんですか?VC++のメニュー「ヘルプ」から「検索」を選択
して、「12003」で検索すればいくつか出てきますが。

------------------------------------------------------------------------
 Article ID : Q168492
  Title      : PRB: FTP WinInet APIs Report Error 12003

この問題は、FTP サーバーによって返されるテキストが、WinInet で解釈できない
フォーマットの場合に発生します。
-------------------------------------------------------------------------

今回のはこれかな?詳細はヘルプを見てください。

古いスレッドには追加発言できません。