HttpSendRequestとHttpQueryInfoについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
web_D

HttpSendRequestとHttpQueryInfoについて

#1

投稿記事 by web_D » 14年前

初めまして、所々探し回ったのですが対処方法、原因が的確に書かれた所が無く
こちらの方にたどり着きました。ご存知の方がいらっしゃれば教えて頂けると幸いです。
下記、本題です。

以前HttpSendRequestを使用してHttpQueryInfoにて返答を取得する
HTTP通信プログラムを作り、再度使おうかとソースコードを引っ張り出してきたのですが、
GetLastErrorで 122番「システム コールに渡されるデータ領域が小さすぎます。」が返されます。
以前正常に?動作していた頃との違いは、サイドバイサイド対応のためにコンパイル方法を若干変えたのみです。

現象の再現率は、Vistaでは頻繁に。Win7では極稀にでる。
程度で、何のエラー反応もなく動作する場合もありで 何が原因なのかが皆目見当もつかない状態です。

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: HttpSendRequestとHttpQueryInfoについて

#2

投稿記事 by YuO » 14年前

web_D さんが書きました:以前HttpSendRequestを使用してHttpQueryInfoにて返答を取得する
HTTP通信プログラムを作り、再度使おうかとソースコードを引っ張り出してきたのですが、
GetLastErrorで 122番「システム コールに渡されるデータ領域が小さすぎます。」が返されます。
単純に,レスポンスヘッダが想定より大きい場合があるだけでしょう。
MSDN: Retrieving HTTP Headers (Windows)のコードにあるように,
ERROR_INSUFFICIENT_BUFFERのエラーの場合は,必要サイズだけバッファを確保して再度呼び出すようにしてください。
Windows APIでは,まずサイズ0で呼び出して必要なバッファサイズを取得し,
そのサイズのバッファを確保後に再度APIを呼び出すことで実際の値を得る,というシナリオがよくあります。

web_D

Re: HttpSendRequestとHttpQueryInfoについて

#3

投稿記事 by web_D » 14年前

YuOさんお返事ありがとうございます。

>単純に,レスポンスヘッダが想定より大きい場合があるだけでしょう。
>MSDN: Retrieving HTTP Headers (Windows)のコードにあるように,
>ERROR_INSUFFICIENT_BUFFERのエラーの場合は,必要サイズだけバッファを確保して再度呼び出すようにしてください。
>Windows APIでは,まずサイズ0で呼び出して必要なバッファサイズを取得し,
>そのサイズのバッファを確保後に再度APIを呼び出すことで実際の値を得る,というシナリオがよくあります。

サンプルコードも含め拝見させて頂きました。
直接的な原因は違いましたが、質としては同じ要因でした。
YuOさんのレスをきっかけに糸口にたどり着きました。ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る