| 147 | } |
| 148 | |
| 149 | NTSTATUS |
| 150 | Ext2QueueRequest (IN PEXT2_IRP_CONTEXT IrpContext) |
| 151 | { |
| 152 | ASSERT(IrpContext); |
| 153 | |
| 154 | ASSERT((IrpContext->Identifier.Type == EXT2ICX) && |
| 155 | (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT))); |
| 156 | |
| 157 | /* set the flags of "can wait" and "queued" */ |
| 158 | SetFlag(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT); |
| 159 | SetFlag(IrpContext->Flags, IRP_CONTEXT_FLAG_REQUEUED); |
| 160 | |
| 161 | /* make sure the buffer is kept valid in system context */ |
| 162 | Ext2LockIrp(IrpContext, IrpContext->Irp); |
| 163 | |
| 164 | /* initialize workite*/ |
| 165 | ExInitializeWorkItem( |
| 166 | &IrpContext->WorkQueueItem, |
| 167 | Ext2DeQueueRequest, |
| 168 | IrpContext ); |
| 169 | |
| 170 | /* dispatch it */ |
| 171 | ExQueueWorkItem(&IrpContext->WorkQueueItem, CriticalWorkQueue); |
| 172 | |
| 173 | return STATUS_PENDING; |
| 174 | } |
| 175 | |
| 176 | |
| 177 | VOID |
no test coverage detected