>
I creates a kernel-mode thread to execute ACPI ControlMethod in the ACPI device driver.
I get result is error.
The driver is running on VISTA operating system .
Would you tell me why ?
====================================================================
NTSTATUS EvtDeviceAdd(IN WDFDRIVER?Driver, IN PWDFDEVICE_INIT?DeviceInit)
{
…
//CreateSystemThread(deviceData);
status = PsCreateSystemThread(
???&ThreadHandle,
??? ?ACCESS_MASK)0,
??? NULL,
???HANDLE) 0,
??? NULL,
??? DeliverRLCThread,
??? device);
???
?ObReferenceObjectByHandle(ThreadHandle,
???THREAD_ALL_ACCESS,
?? NULL,
?? KernelMode,
???amp;amp;deviceData->ThreadObject,
?? NULL );
ZwClose(ThreadHandle);?>
…
}
VOID DeliverRLCThread(IN PVOID Context)
{
?>
?PCPLIR_DATA deviceData = (PCPLIR_DATA) GetIrData(Context);
?UCHAR PayloadBuffer[INPUT_BYTE] = { 0x00 };
?KIRQL oldIrql;
KdPrint((__DRIVER_NAME "–> DeliverRLCThread "));
?>
?>
while(INFINITE)
{
?PayloadBuffer[0] = 0x00;
?PayloadBuffer[1] = 0x00;
?PayloadBuffer[2] = 0x00;
?PayloadBuffer[3] = 0x00;
?//Wait
?KeWaitForSingleObject(&deviceData->Event,Executive,KernelMode,FALSE,NULL);
?//LOCK
?KeAcquireSpinLock(&deviceData->Receiver.ListSpinLock, &oldIrql);
?
? status=GetDataFromECNameSpaceByControlMethod(deviceData,PayloadBuffer);
? //status = STATUS_DATA_ERROR
??//ULOCK
?KeReleaseSpinLock(&deviceData->Receiver.ListSpinLock, oldIrql);
?KdPrint((__DRIVER_NAME "–> End DeliverRLCThread "));
?//Reset
??KeResetEvent(&deviceData->Event);
}
}?>
–
´¼¨¹¥Í¬¡À]µêÀÀ¥D¾÷¡@À°±zªººô¯¸§ä¤@Ó¦w꺮a
–
http://www.url.com.tw/emailstore/businessmail01.htm
´¼¨¹¥Í¬¡À]µêÀÀ¥D¾÷¡@À°±zªººô¯¸§ä¤@Ó¦w꺮a