PEVENT_CONTEXT AllocateEventContext( __in PDEVICE_EXTENSION DeviceExtension, __in PIRP Irp, __in ULONG EventContextLength, __in PDokanCCB Ccb ) { ULONG driverContextLength; PDRIVER_EVENT_CONTEXT driverEventContext; PEVENT_CONTEXT eventContext; driverContextLength = EventContextLength - sizeof(EVENT_CONTEXT) + sizeof(DRIVER_EVENT_CONTEXT); driverEventContext = ExAllocatePool(driverContextLength); if (driverEventContext == NULL) return NULL; RtlZeroMemory(driverEventContext, driverContextLength); InitializeListHead(&driverEventContext->ListEntry); eventContext = &driverEventContext->EventContext; eventContext->Length = EventContextLength; SetCommonEventContext(DeviceExtension, eventContext, Irp, Ccb); eventContext->SerialNumber = InterlockedIncrement(&DeviceExtension->SerialNumber); return eventContext; }
PEVENT_CONTEXT AllocateEventContext(__in PDokanDCB Dcb, __in PIRP Irp, __in ULONG EventContextLength, __in_opt PDokanCCB Ccb) { PEVENT_CONTEXT eventContext; eventContext = AllocateEventContextRaw(EventContextLength); if (eventContext == NULL) { return NULL; } SetCommonEventContext(Dcb, eventContext, Irp, Ccb); eventContext->SerialNumber = InterlockedIncrement((LONG *)&Dcb->SerialNumber); return eventContext; }