RASCONN構造体を複数OSで使用可能にする方法

[戻る]
foxindog [E-Mail] 2002/05/07(火) 01:31:06
こんにちは。早速質問です。
RAS関係のアプリを作っているのですが、「RASCONN」構造体がOSのバージョンによって
異なる為に困っています。
「WINVER」指定でOS毎にコンパイルしてプログラムを使い分けるかDLLなどで処理を分割
する方法は思い浮かぶのですが、出来れば一つのプログラムで複数OSに対応したいと思
います。
何か良い方法はありませんでしょうか。

YuO [E-Mail] 2002/05/07(火) 01:50:24
OSに合わせて,dwSizeメンバの値を変更してやればよいでしょう。
offsetofマクロ(stddef.h)も合わせて使うとよいかと……。

foxindog [E-Mail] 2002/05/09(木) 18:10:22
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;

foxindog [E-Mail] 2002/05/09(木) 18:39:42
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を利用するのでしょうか。
すみません、イメージが湧きませんでした。

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