こんにちは。早速質問です。
RAS関係のアプリを作っているのですが、「RASCONN」構造体がOSのバージョンによって
異なる為に困っています。
「WINVER」指定でOS毎にコンパイルしてプログラムを使い分けるかDLLなどで処理を分割
する方法は思い浮かぶのですが、出来れば一つのプログラムで複数OSに対応したいと思
います。
何か良い方法はありませんでしょうか。
OSに合わせて,dwSizeメンバの値を変更してやればよいでしょう。
offsetofマクロ(stddef.h)も合わせて使うとよいかと……。
YuOさん、ご回答ありがとうございます。
DWORD dwRet01;
LPRASCONN lpRasConn;
DWORD dwBufferSize;
DWORD dwConnections;
RASCONNSTATUS lpRasConnStatus;
lpRasConnStatus.dwSize = sizeof(RASCONNSTATUS);
dwBufferSize = sizeof(RASCONN);
lpRasConn = (LPRASCONN) GlobalAlloc(GPTR, dwBufferSize);
lpRasConn->dwSize = dwBufferSize;
//現在動作中の全てのRAS接続を取得
dwRet01 = RasEnumConnections(
lpRasConn,
&dwBufferSize,
&dwConnections
);
if (dwRet01 != 0) //返り値0が正常
return False;
YuOさん、ご回答ありがとうございます。
しかし、具体的なコーディング方法がわかりませんでした。
現在、以下の様なコードを書いています。
01 DWORD dwRet01;
02 LPRASCONN lpRasConn;
03 DWORD dwBufferSize;
04 DWORD dwConnections;
05 RASCONNSTATUS lpRasConnStatus;
06 lpRasConnStatus.dwSize = sizeof(RASCONNSTATUS);
07
08 dwBufferSize = sizeof(RASCONN);
09 lpRasConn = (LPRASCONN) GlobalAlloc(GPTR, dwBufferSize);
10 lpRasConn->dwSize = dwBufferSize;
11
12//現在動作中の全てのRAS接続を取得
13 dwRet01 = RasEnumConnections(
14 lpRasConn,
15 &dwBufferSize,
16 &dwConnections
17 );
18
19 if (dwRet01 != 0) //返り値0が正常
20 return False;
08行目の「dwBufferSize」に代入する値をOS毎に変えるということかと思うのですが・・・
offsetofはどのように使用すれば良いのでしょうか。
実際に使用できる項目を判断する為にoffsetofを利用するのでしょうか。
すみません、イメージが湧きませんでした。