Lunatic Sol

IT Tips

GetSystemInfo

2004-08-30 16:25:22 | LotusScript
LotusScript で GetSystemInfo() Windows API を Call する場合、(Declarations) に変数として渡す構造体と、Declare ステートメントによる API の呼び出しを書いてあげれば良いです。これを直接 Call できれば CPU の数とか、タイプとか簡単にチェックできますね。

Type SYSTEM_INFO
    dwOemID As Long
    dwPageSize As Long
    lpMinimumApplicationAddress As Long
    lpMaximumApplicationAddress As Long
    dwActiveProcessorMask As Long
    dwNumberOfProcessors As Long
    dwProcessorType As Long
    dwAllocationGranularity As Long
    dwProcessorLevel As Integer
    dwProcessorRevision As Integer
End Type

Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)
使い方は簡単です。例えば Messagebox に全メンバー値を表示したい場合は、以下のように書けば良いです。

Sub Click(Source As Button)
    Dim SysInfo As SYSTEM_INFO
    Call GetSystemInfo(SysInfo)
    msg$ = "dwOemID:" & Chr(9) & Chr(9) & Chr(9) & SysInfo.dwOemID & Chr(10) &_
    "dwPageSize:" & Chr(9) & Chr(9) & SysInfo.dwPageSize & Chr(10) &_
    "lpMinimumApplicationAddress:" & Chr(9) & SysInfo.lpMinimumApplicationAddress & Chr(10) &_
    "lpMaximumApplicationAddress:" & Chr(9) & SysInfo.lpMaximumApplicationAddress & Chr(10) &_
    "dwActiveProcessorMask:" & Chr(9) & SysInfo.dwActiveProcessorMask & Chr(10) &_
    "dwNumberOfProcessors:" & Chr(9) & SysInfo.dwNumberOfProcessors & Chr(10) &_
    "dwProcessorType:" & Chr(9) & Chr(9) & SysInfo.dwProcessorType & Chr(10) &_
    "dwAllocationGranularity:" & Chr(9) & SysInfo.dwAllocationGranularity & Chr(10) &_
    "dwProcessorLevel:" & Chr(9) & Chr(9) & SysInfo.dwProcessorLevel & Chr(10) &_
    "dwProcessorRevision:" & Chr(9) & Chr(9) & SysInfo.dwProcessorRevision
    Msgbox msg$,,"GetSystemInfo()"
End Sub
NOTE: SYSTEM_INFO 構造体の最初のメンバーは共用体 (union) なんですが、LotusScript で union をうまく扱う方法がわかりませんでした。なので、Windows 2000 などでは Obsolete になっているであろう dwOemID のままにしていますが、もし wProcessorArchitecture をチェックしたい場合は Wrapper 関数を作って OS バージョンにあわせて処理を変更するなどした方が良いのかもしれません。

■ Platform SDK: Windows System Information
SYSTEM_INFO

■プラットフォーム SDK
GetSystemInfo

NFSでのCD-ROM共有方法

2004-08-30 12:02:52 | UNIX/Linux
AIX 上の CD-ROM がなぜか認識しなくなってしまった。インストールするには、ファイルを全部転送するか、CD-ROM を別筐体から共有する必要がある。で、同僚がその後者の方法を見つけてくれた。

NSFでのCD-ROM共有方法

AIX 同士で作業する場合の手順になるが、SMIT (もしくは SMITTY) を使ったとっても簡単。

この手順に補足をするならば、CD-ROM を共有しおえた後のアンマウントとアンエキスポート作業が必要という点。

1. クライアント (共有された CD-ROM 利用先) 側でのアンマウント

2. サーバー (CD-ROM 共有元) 側でのアンエクスポート
SMIT より
    通信アプリケーションとサービス
    NFS
    ネットワークファイルシステム (NFS)
    エクスポート・リストからディレクトリを除去
    * 除去されるエクスポートディレクトリのパス名 [エクスポートしたディレクトリ]

3. サーバー (CD-ROM 共有元) 側でのアンマウント

この手順でアンマウント・アンエクスポートしておかないと、特にアンエクスポートをし忘れると別の CD-ROM などに切り替えても、再度エクスポートできないようです。