WinHttpCrackUrl

WinHttpCrackUrl 関数は、URL をホスト名やパスといった構成要素に分解する。

WinHttpCrackUrl pwszUrl, dwUrlLength, dwFlags, lpUrlComponents

pwszUrl : [wstr] 分解する正規 URL を格納した文字列へのポインタ。WinHttpCrackUrl は分解を試みる前にこの URL が有効かつ正しい形式かどうかのチェックを行わない。
dwUrlLength : [int] pwszUrl 文字列の長さ (文字単位)。dwUrlLength を 0 に設定すると、WinHttpCrackUrl は pwszUrl 文字列が null 終端であると仮定し、その前提で pwszUrl の長さを決定する。
dwFlags : [int] 動作を制御するフラグ。このパラメータには次のフラグの組み合わせ (ビット単位の OR) を指定できる。また、特別な操作を行わない場合は 0 を指定できる。
lpUrlComponents : [var] URL の各要素を受け取る URL_COMPONENTS 構造体へのポインタ。

(プラグイン / モジュール : winhttp.dll)

解説

WinHttpCrackUrl 関数は、URL をホスト名やパスといった構成要素に分解する。

[戻り値]
関数が成功した場合は TRUE を、失敗した場合は FALSE を返す。拡張エラー情報を取得するには GetLastError
を呼び出す。返されるエラーコードには次のものがある。
(以下省略)

[備考]
WinHTTP が非同期モード (WinHttpOpen で WINHTTP_FLAG_ASYNC が設定されている状態)
で使われる場合でも、この関数は同期的に動作する。戻り値は成功または失敗を示す。拡張エラー情報を取得するには GetLastError
を呼び出す。必要な構成要素は URL_COMPONENTS
構造体のメンバーで示される。各要素は値へのポインタと、格納された値の長さを保持するメンバーを持つ。要素の値と長さがいずれも 0
の場合、その要素は返されない。要素の値へのポインタが NULL でなく、かつ対応する長さメンバーの値が 0 でない場合、pwszUrl
文字列内の対応する要素の最初の文字のアドレスがポインタに格納され、要素の長さが長さメンバーに格納される。ポインタがユーザー指定のバッファのアドレスを含む場合、長さメンバーにはバッファのサイズを含む必要がある。WinHttpCrackUrl
関数は要素をそのバッファにコピーし、長さメンバーにはコピーされた要素の長さから終端の文字列終端子の 1
を引いた値が設定される。ユーザー指定のバッファが十分でない場合、WinHttpCrackUrl は FALSE
を返し、GetLastError は ERROR_INSUFFICIENT_BUFFER を返す。WinHttpCrackUrl
が正しく動作するには、URL_COMPONENTS 構造体のサイズがその構造体の dwStructSize
メンバーに格納されていなければならない。pwszUrl に渡された URL のインターネットプロトコルが HTTP または HTTPS
でない場合、WinHttpCrackUrl は FALSE を返し、GetLastError は
ERROR_WINHTTP_UNRECOGNIZED_SCHEME を示す。WinHttpCrackUrl は分解を試みる前に URL
の妥当性や形式をチェックしない。そのため、"http://server?Bad=URL"
のような文字列を渡すと関数は誤った結果を返す。注: Windows XP および Windows 2000 については WinHttp
の開始ページの Run-Time Requirements セクションを参照。

情報

プラグイン / モジュールwinhttp.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の winhttp.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_winhttp_gen2.hs