インストールサンプル今回は、実際にLSPをインストールするプログラムを作成します。実行結果を確認します。チェックされたエントリがインストールまたはアンインストールの対象になります。[TCP/IP]の上に独自のエントリがインストールされることになります。[TCP/IP]より、オーダー上先行しています。[TCP/IP]よりも先にTCP/IP要求を検出できるようになります。上図では確認できませんが、オーダーの最後尾にはダミーエントリが存在しています。[TCP/IP]を選択してメニューの「コマンド」から「アンインストール」を選択します。[TCP/IP]とダミーエントリがアンインストールされることになります。合計2つのエントリが存在することになります。アンインストール時には、この両方のエントリをチェックするようにします。今回のプログラムは、実際にLSPをインストールする処理とアンインストールする処理を含んでいます。SPIを呼び出すには、ws2spi.hのインクルードが必要になります。WSCWriteProviderOrderの呼び出しには、sporder.hのインクルードとsporder.libへのリンクが必要になります。TEXT("エントリがチェックされていません。TEXT("同一プロトコル名のエントリが既に存在します。TEXT("ダミーエントリが選択されています。TEXT("LSPのインストールに成功しました。TEXT("LSPのインストールに失敗しました。TEXT("管理者として実行してください。TEXT("ダミーエントリが選択されています。TEXT("ベースプロトコルが選択されています。TEXT("LSPのアンインストールに失敗しました。TEXT("管理者として実行してください。TEXT("LSPのアンインストールに成功しました。UninstallLspをそのまま使用しているため、内部処理については各節を参照してください。システムに存在するエントリを表示するためのリストビューを作成しています。UpdateListviewを呼び出せば、リストビューにエントリが表示されることになります。WM_COMMANDが送られることになります。チェックが入ったアイテムをカウントし、この数だけDWORD型の配列を確保します。続いて、チェックが入ったエントリのIDを取得し、これを先ほど確保した配列に格納します。InstallLspまたはUninstallLspを呼び出すことになります。InstallLspの第2引数はエントリ名のプロトコル名であり、これは自由に設定することができます。処理内容が即座にリストビューに反映されることになります。いくつか難しい問題が発生することが予想されます。できれば表示しないほうがよいともいえるはずです。WSAEnumProtocolsを呼び出して列挙を行う方法が考えられます。何らかの問題で誤ってアンインストールしてしまった場合はどうすればよいのでしょうか。この場合は、次に示すコマンドをコマンドプロンプト上で実行してださい。システムに既定で存在するエントリのみで構成されることになります。