VBからDLL(VC)を呼び出すと戻り値が不正
お世話になります。
VCで作成DLLをVBでCallし戻り値を取得していますが
正常にとれません。
VCを単体で実行すると「9.999999」というformatで
値が入っている事は確認済みですがVBの戻り値として
取得した場合「-9.25596288973593E+61」となってしま
います。
ご存知の方ご教授頂けないでしょうか。
******* Cソース ******
/*cpu使用率取得関数*/
double GetCpuUsage()
{
HQUERY hQuery;
HCOUNTER hCounter;
PDH_RAW_COUNTER Counters[COUNTERS_SIZE];
PDH_STATISTICS Statistics;
int CurrentCounter;
int CurrentNum;
double CpuUsage;
PdhOpenQuery(NULL, 0, &hQuery);
PdhAddCounter(hQuery, "\\Processor(0#0)\\% Processor Time", 0, &hCounter);
PdhCollectQueryData(hQuery);
PdhGetRawCounterValue(hCounter, NULL, &Counters[0]);
CurrentCounter = 1;
CurrentNum = 2;
Sleep(1000);
PdhCollectQueryData(hQuery);
PdhGetRawCounterValue(hCounter, NULL, &Counters[CurrentCounter]);
CurrentCounter++;
if(CurrentCounter >= COUNTERS_SIZE) CurrentCounter = 0;
PdhComputeCounterStatistics(
hCounter,
PDH_FMT_DOUBLE,
(CurrentNum < COUNTERS_SIZE) ? 0 : CurrentCounter,
CurrentNum,
Counters,
&Statistics);
CpuUsage = Statistics.max.doubleValue;
printf("CpuUsage:%.02f%\n", CpuUsage);
PdhCloseQuery(hQuery);
/* CPU使用率を戻り値にセットする。 */
return CpuUsage;
}
****** VBソース ******
Option Explicit
Private Declare Function GetCpuUsage Lib "C:\GetCpuUsage.dll" Alias "_GetCpuUsage@0" () As Double
Private Sub Command1_Click()
Dim ret As String
Dim ret2 As Long
ret = GetCpuUsage()
MsgBox ret
End Sub
お礼
-nと-n1の違いは後で調べます。 ありがとうございました。