I resolved this problem, but don't know why.
when creates read queue, calls WdfDeviceConfigureRequestDispatching to set the read irp sent to read queue other then the defult queue.
Don't call WdfDeviceConfigureRequestDispatching after create the read queue, using the default queue to receive the read irp from framework, then the read irp haven't be masked pending, and send to default queue called the EvtIoRead directlt.
But why calling WdfDeviceConfigureRequestDispatching will making the read irp masked pending?