ATL DLL与ASP问题
用ATL做了一个DLL,用来管理Windows2000的任务计划,我在VB里调用此DLL没有问题,在ASP中调用有问题,如下:
//以下是其中一个方法的声明
[id(2), helpstring("method GetTaskConfig")] HRESULT GetTaskConfig([out]VARIANT *pHour, [out]VARIANT *pMinute, [out,retval]VARIANT *pRet);
//以下是该方法的实现
STDMETHODIMP CSASTask::GetTaskConfig(VARIANT *pHour, VARIANT *pMinute, VARIANT *pRet)
{
ITask *pITask = NULL;
HRESULT hr;
int iResult;
iResult = GetTaskHandle(&pITask, pwszTaskName);
if(iResult != 0)
{
pRet->vt = VT_I4;
pRet->lVal = iResult;
return S_FALSE;
}
TASK_TRIGGER pTrigger;
ITaskTrigger *pITaskTrigger;
hr = pITask->GetTrigger(0, &pITaskTrigger);
// Release the ITask interface.
pITask->Release();
if (FAILED(hr))
{
//CoUninitialize();
ReleaseTaskService();
pRet->vt = VT_I4;
pRet->lVal = TASK_CALLGETTRIGGER_FALED;
return S_FALSE;
}
hr = pITaskTrigger->GetTrigger(&pTrigger);
pITaskTrigger->Release();
if (FAILED(hr))
{
//CoUninitialize();
ReleaseTaskService();
pRet->vt = VT_I4;
pRet->lVal = TASK_CALLGETTRIGGER_FALED;
return S_FALSE;
}
pHour->vt = VT_I4;
pHour->lVal = pTrigger.wStartHour;
pMinute->vt = VT_I4;
pMinute->lVal = pTrigger.wStartMinute;
pRet->vt = VT_I4;
pRet->lVal = 0;
ReleaseTaskService();
return S_OK;
}
'以下是VB调用,没有任何错误,返回正常
Dim iResult As Variant
Dim obj As TASKPLANLib.SASTask
Dim lHour As Variant, lMinute As Variant
iResult = obj.GetTaskConfig(lHour, lMinute)
If iResult = 0 Then
MsgBox "当前设置:每天" & lHour & ":" & lMinute & "开始进行后台计算"
Else
MsgBox "错误码:" & iResult
End If
'以下是ASP调用,TaskHour和TaskMinute没有值返回,iResult返回997,其中997不是自定义错误
Dim objTask, TaskHour, TaskMinute
Dim iResult
Set objTask = Server.CreateObject("SAS.System")
iResult = objTask.GetTaskConfig(TaskHour, TaskMinute)
Set objTask = Nothing
以上问题,如何解决,盼复,谢谢各位!