Thread & ACPI ControlMethod

>

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);

 }

}?>

http://www.url.com.tw/emailstore/businessmail01.htm

´¼¨¹¥Í¬¡À]µêÀÀ¥D¾÷¡@À°±zªººô¯¸§ä¤@­Ó¦wíªº®a


http://www.url.com.tw/emailstore/businessmail01.htm
´¼¨¹¥Í¬¡À]µêÀÀ¥D¾÷¡@À°±zªººô¯¸§ä¤@­Ó¦wíªº®a