Re: Question about workitem.
- From: May <May@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 30 Sep 2008 13:27:03 -0700
Doron,
Thanks.
See inline:
"Doron Holan [MSFT]" wrote:
what is the sync level that you specify when creating your WDFDEVICE?
I set SynchronizationScope to WdfSynchronizationScopeNone. If I set to
WdfSynchronizationScopeDevice, WdfWorkItemCreate will fail. Why?
Now I got blue screen, See following WinDBG message. The line in the source
which point by debugger dose not cause the crash. I did make sure my work
item call back function has returned before I en queue another one. The crash
is always at the same place, at the call WdfRequestCompleteWithInformation
I couldn't figure out what is wrong?
Thanks,
May
*** Fatal System Error: 0x00000050
(0x9ACAF003,0x00000001,0x9B9CFE4C,0x00000000)
Driver at fault:
*** CCADCCP.sys - Address 9B9CFE4C base at 9B9CD000, DateStamp 48e25064
..
Break instruction exception - code 80000003 (first chance)
A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.
A fatal system error has occurred.
Connected to Windows Server 2008 6001 x86 compatible target, ptr64 FALSE
Loading Kernel Symbols
.............................................................................................................................................................................................
Loading User Symbols
Loading unloaded module list
........
*******************************************************************************
*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck 50, {9acaf003, 1, 9b9cfe4c, 0}
Probably caused by : CCADCCP.sys ( CCADCCP!CcpWorker+82c )
Followup: MachineOwner
---------
nt!RtlpBreakWithStatusInstruction:
819b566c cc int 3
0: kd> !analyze -v
*******************************************************************************
*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************
PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by try-except,
it must be protected by a Probe. Typically the address is just plain bad or
it
is pointing at freed memory.
Arguments:
Arg1: 9acaf003, memory referenced.
Arg2: 00000001, value 0 = read operation, 1 = write operation.
Arg3: 9b9cfe4c, If non-zero, the instruction address which referenced the
bad memory
address.
Arg4: 00000000, (reserved)
Debugging Details:
------------------
WRITE_ADDRESS: 9acaf003
FAULTING_IP:
CCADCCP!CcpWorker+82c
[c:\dev\mediacipherccp\ccp\winccpdriver\sys\ccpwininit.c @ 1065]
9b9cfe4c 884a03 mov byte ptr [edx+3],cl
MM_INTERNAL_CODE: 0
IMAGE_NAME: CCADCCP.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 48e25064
MODULE_NAME: CCADCCP
FAULTING_MODULE: 9b9cd000 CCADCCP
DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
BUGCHECK_STR: 0x50
PROCESS_NAME: System
CURRENT_IRQL: 2
TRAP_FRAME: 8d957c48 -- (.trap 0xffffffff8d957c48)
ErrCode = 00000002
eax=8685acb0 ebx=00000000 ecx=8bf73905 edx=9acaf000 esi=8688af78 edi=8181f210
eip=9b9cfe4c esp=8d957cbc ebp=8d957d10 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246
CCADCCP!CcpWorker+0x82c:
9b9cfe4c 884a03 mov byte ptr [edx+3],cl
ds:0023:9acaf003=??
Resetting default scope
LAST_CONTROL_TRANSFER: from 8188ca72 to 819b566c
STACK_TEXT:
8d95773c 8188ca72 00000003 bb1452e2 00000065 nt!RtlpBreakWithStatusInstruction
8d95778c 8188d53b 00000003 c04d6578 00003ff8 nt!KiBugCheckDebugBreak+0x1c
8d957b50 81950e92 00000050 9acaf003 00000001 nt!KeBugCheck2+0x67f
8d957c30 819c3a94 00000001 9acaf003 00000000 nt!MmAccessFault+0x14a
8d957c30 9b9cfe4c 00000001 9acaf003 00000000 nt!KiTrap0E+0xe4
8d957d10 8bc475f4 79775080 81bf351c 8688af78 CCADCCP!CcpWorker+0x82c
[c:\dev\mediacipherccp\ccp\winccpdriver\sys\ccpwininit.c @ 1065]
8d957d2c 8bc47657 86895eb0 8d957d4c 81d1ee59
Wdf01000!FxWorkItem::WorkItemHandler+0x76
8d957d38 81d1ee59 86895eb0 8688af78 8582fad0
Wdf01000!FxWorkItem::WorkItemThunk+0x19
8d957d4c 819abe1e 868a3a98 85809c08 8582fad0 nt!IopProcessWorkItem+0x43
8d957d84 81ebb197 868a3a98 bb1458ae 00000000 nt!ExpWorkerThread+0x146
8d957dc0 819c597e 819abcd8 00000001 00000000 nt!PspSystemThreadStartup+0x17b
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
STACK_COMMAND: kb
FOLLOWUP_IP:
CCADCCP!CcpWorker+82c
[c:\dev\mediacipherccp\ccp\winccpdriver\sys\ccpwininit.c @ 1065]
9b9cfe4c 884a03 mov byte ptr [edx+3],cl
SYMBOL_STACK_INDEX: 5
SYMBOL_NAME: CCADCCP!CcpWorker+82c
FOLLOWUP_NAME: MachineOwner
FAILURE_BUCKET_ID: 0x50_W_CCADCCP!CcpWorker+82c
BUCKET_ID: 0x50_W_CCADCCP!CcpWorker+82c
Followup: MachineOwner
---------
.
"May" <May@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:B7CB3A4A-8582-476D-800C-29B50463E215@xxxxxxxxxxxxxxxx
Hello,
I need to do several things after I got interrupt. In between the several
things, I need to call delay to wait a little bit. But I couldn't call
delay
at DPC level, so in my interrupt DPC routine, I call a function to create
a
work item and do all those things at workitem call back function. I
followed
sample of kmdf\pcidrv which do the same thing I want to do. But when I
call
WdfWorkItemCreate, I got error "STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL"
I couldn't figure out why since I do the exact same thing with sample code
of pcidrv?
It was said "Parent object's execution level is not
WDFExecutionLevelPassive?
In PCIDRV, the parent object is wdfDevice which initialize at
EvtDeviceAdd,
I did same thing.
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, CCP_WORKITEM);
attributes.ParentObject = FdoData->WdfDevice;
What is wrong? where is wrong? What is the best way to do this?
Thanks,
May
- References:
- Question about workitem.
- From: May
- Re: Question about workitem.
- From: Doron Holan [MSFT]
- Question about workitem.
- Prev by Date: NT 4.0 DDK
- Previous by thread: Re: Question about workitem.
- Next by thread: WDK printer language monitor obsolete?
- Index(es):
Relevant Pages
|