@@ -66,6 +66,7 @@ Return Value:
6666 //
6767 WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE (
6868 & queueConfig ,
69+ //WdfIoQueueDispatchParallel
6970 WdfIoQueueDispatchSequential
7071 );
7172
@@ -94,10 +95,7 @@ Return Value:
9495 TraceEvents (TRACE_LEVEL_ERROR , TRACE_QUEUE , "create read queue failed %!STATUS!" , status );
9596 return status ;
9697 }
97- //status = WdfDeviceConfigureRequestDispatching(Device, readQueue, WdfRequestTypeRead);
98- //if (!NT_SUCCESS(status)) {
99- // goto done;
100- //}
98+
10199 WDFQUEUE writeQueue ;
102100 WDF_IO_QUEUE_CONFIG_INIT (& queueConfig , WdfIoQueueDispatchManual );
103101 status = WdfIoQueueCreate (Device , & queueConfig , WDF_NO_OBJECT_ATTRIBUTES , & writeQueue );
@@ -106,22 +104,10 @@ Return Value:
106104 TraceEvents (TRACE_LEVEL_ERROR , TRACE_QUEUE , "create write queue failed %!STATUS!" , status );
107105 return status ;
108106 }
109- //status = WdfDeviceConfigureRequestDispatching(Device, writeQueue, WdfRequestTypeWrite);
107+
110108 PDEVICE_CONTEXT device_context = DeviceGetContext (Device );
111109
112- /*
113- WDF_OBJECT_ATTRIBUTES attr;
114- WDF_OBJECT_ATTRIBUTES_INIT(&attr);
115- attr.ParentObject = Device;
116- WDFMEMORY BufferHandler;
117- status = WdfMemoryCreate(&attr, NonPagedPool, 'FTun', READ_POOL_SIZE, &BufferHandler, &device_context->PReadBuffer);
118- if (!NT_SUCCESS(status)) {
119- TraceEvents(TRACE_LEVEL_ERROR, TRACE_QUEUE, "create ReadBuffer failed %!STATUS!", status);
120- goto done;
121- }
122- RtlZeroMemory(device_context->PReadBuffer, READ_POOL_SIZE);
123- RingBufferInitialize(&device_context->ReadRingBuffer, device_context->PReadBuffer, READ_POOL_SIZE);
124- */
110+
125111 PPOOL_QUEUE poolQueue ;
126112 status = PoolQueueCreate (& poolQueue );
127113 if (!NT_SUCCESS (status )) {
@@ -277,6 +263,7 @@ ForTunEvtIoRead(
277263 IN size_t Length
278264)
279265{
266+ TraceEvents (TRACE_LEVEL_INFORMATION , TRACE_QUEUE , "Io Read has trigger" );
280267 UNREFERENCED_PARAMETER (Length );
281268 NTSTATUS status ;
282269
@@ -294,6 +281,7 @@ ForTunEvtIoRead(
294281 PPOOL_QUEUE_ITEM poolQueueItem = PoolQueueGetFromQueue (deviceContext -> PoolQueue );
295282
296283 if (poolQueueItem ) {
284+ TraceEvents (TRACE_LEVEL_INFORMATION , TRACE_QUEUE , "Pool Has Item" );
297285 RtlCopyMemory (readBuffer , & poolQueueItem -> Data , poolQueueItem -> DataSize );
298286 size_t dataSize = poolQueueItem -> DataSize ;
299287 PoolQueuePutToPool (deviceContext -> PoolQueue , poolQueueItem );
@@ -312,6 +300,7 @@ ForTunEvtIoRead(
312300 }*/
313301 else {
314302 status = WdfRequestForwardToIoQueue (Request , deviceContext -> PendingReadQueue );
303+ TraceEvents (TRACE_LEVEL_INFORMATION , TRACE_QUEUE , "Append Request To Queue" );
315304 WdfSpinLockRelease (deviceContext -> readLock );
316305 if (!NT_SUCCESS (status )) {
317306 goto logErr ;
@@ -332,6 +321,7 @@ ForTunEvtIoWrite(
332321)
333322{
334323 UNREFERENCED_PARAMETER (Length );
324+ TraceEvents (TRACE_LEVEL_INFORMATION , TRACE_QUEUE , "Write item" );
335325
336326 PDEVICE_CONTEXT context = DeviceGetContext (WdfIoQueueGetDevice (Queue ));
337327
@@ -345,6 +335,7 @@ ForTunEvtIoWrite(
345335
346336 //this should always be success
347337 ForTunAdapterNotifyRx (context -> Adapter );
338+
348339
349340 return ;
350341logErr :
0 commit comments