エラーコード=12019について

[戻る]
みや 2006/01/24(火) 13:10:59
はじめまして。
皆様の知恵を拝借したいと思い、書込みします。

httpでのファイル取得を行うプログラムを作成しており、次のような処理を行っていると
ころ、HttpQueryInfo()の呼出しでエラーコード(GetLastError)が12019で返ってくる場合
があります。
ヘルプ等を確認してみても、「要求された処理に対して、ハンドルは状態が正しくありま
せん。」とだけ記載されていて、このエラーを受けてどう対処すべきなのかがよく判りま
せんでした。

メッセージ内容からは、プログラムエラーのような感じもするのですが、たまにしかエ
ラーとならない事や、一旦Close()して再取得すれば正常に取得できる事から通信状態に
よる気もします。
どなたか、このエラーの意味を知っている方おられましたら、是非ご教授御願い致します。

(処理)
 InternetOpen()→InternetConnect()→HttpOpenRequest()→HttpSendRequest()
 →HttpQueryInfo()(※ここ!)→この後は、データリードとクローズ処理

 ※ちなみに、処理は非同期通信で行っています。

みや 2006/01/25(水) 10:49:38
失礼しました。
開発環境明記が抜けていたので追記します。

Win2000 VC6.0SP5 (WININET-APIを直接利用)
 <対象:VC++ラウンジ>

MSDNで以下のような情報は見つけましたが、対象製品が特定されている(PocketPC向け?)
事と他に同様の説明が見つからない事から、これを信じて良いものか判別に困っています。
http://support.microsoft.com/?id=330465

(抜粋)
INTERNET 19
デバイス ソフトウェア エラーが発生するため、
(ERROR_INTERNET_INCORRECT_HANDLE_STATE):同期に失敗した INTERNET_19。 ネットワー
ク管理者に問い合わせてください。 
説明: この問題は、一時的なネットワークの問題によって発生する可能性があります。

(対象製品)
・Microsoft Mobile Information Server 2002 Enterprise Edition 
・Microsoft Mobile Information Server 2001 Enterprise Edition 

以上、よろしく御願いします。

ITO 2006/01/25(水) 11:04:51
参考にどうぞ。
http://www.cnet-sc.ne.jp/hiraga/DLL/IConnect/IConSub.cpp

http://www.ergo-soft.com/kbfiles/109_windows_fehlercodes.htm

みや 2006/01/25(水) 11:34:28
ITOさん、情報ありがとうございます。

ただ、同期制御でのインターネットファイル取得としてはサンプルとなるようですが、残
念ながら私が求めていた、エラー(12019)についての対処に繋がる情報は見つかりません
でした。

以上、よろしく御願いします。

けんたん 2006/01/25(水) 11:53:05
HttpSendRequestExのことみたいですが、関連があるかもしれないので
一応見てみてください

http://support.microsoft.com/kb/177190/ja

みや 2006/01/25(水) 13:38:15
けんたんさん、情報ありがとうございます。

InternetWriteFileではなく、InternetReadFileなので関係ないのかと捉えていました
が、どうなんでしょう?
とりあえず、ダメ元で試してみる事にします。

みや 2006/01/26(木) 11:12:27
HttpOpenRequestにINTERNET_FLAG_NO_CACHE_WRITEを指定してみましたが、結果は同じで
した。
このエラーが、通信状態によって出るべくして出ているなら問題ないのですが・・・

ITO 2006/02/07(火) 11:07:50
http://www.codeproject.com/internet/asyncwininet.asp?
df=100&forumid=1409&exp=0&select=86554

http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/winhttp/http/error_messages.asp

エラー 12019 ERROR_WINHTTP_INCORRECT_HANDLE_STATE」
「The requested operation cannot be carried out because the handle supplied is 
not in the correct state.」 
確認して下さい。

「WinHttpSendRequest」で起こるエラーです。
MSDNで見ましたか?
「同期に失敗した 」ではないです

みや 2006/02/08(水) 11:51:34
ITOさん、情報ありがとうございます。

WinHttpSendRequestという関数もあったのですね。
コード内容としては、基本的に変わりない気もしますが、こちらのコードでも検索してみ
ました。
HttpSendRequest:ERROR_INTERNET_INCORRECT_HANDLE_STATE
WinHttpSendRequest:ERROR_WINHTTP_INCORRECT_HANDLE_STATE
多分、意味は同じなのでしょうけれど。。。

頂いたキーワードで検索していると以下のサイトがみつかりました。
http://www.eggheadcafe.com/ng/microsoft.public.winhttp/post3357837.asp

これを見ていると、もしかしてエラーコードとして12019を返された場合でも
実はQueryStatusCodeを取得するとレスポンス100で返ってくるのかな?
と思ったのですが、違いますでしょうか?
# 激しく英語ができないので、自信なしですが・・・(^^;

試しに、12019が返った際にもエラー処理とせず、ステータスコードを取得してみたいと
思います。
また結果確認できましたら、報告します。

# HTTP通信処理で、このコードが返ればこう処理する、といった流れは
# 皆様どうやって情報を得ているのでしょう・・・?
# 私がMSDNを使えていないだけなのかなぁ。。

ITO 2006/02/08(水) 12:38:34
 そのサイトを見る限りでは、
   「レスポンス100を行ってみて下さい。」
みたいです。

MFCであれば、日本語ドキュメントがありそうですよね。
この関連は僕も詳しくないです。
すみません。

ITO 2006/02/08(水) 12:46:21
いまさらながら、MFCでのHTTP

http://frog.raindrop.jp/knowledge/archives/000287.html

参考にどうぞ

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