[PATCH 02/03 v4 ] ntoskrnl.exe: Track drivers created with IoCreateDriver
Aric Stewart
aric at codeweavers.com
Mon Jul 25 07:25:05 CDT 2016
Thanks!
New version sent!
-aric
On 7/24/16 1:05 PM, Thomas Faber wrote:
>> NTSTATUS WINAPI IoCreateDriver( UNICODE_STRING *name, PDRIVER_INITIALIZE init )
>> {
>> - DRIVER_OBJECT *driver;
>> - DRIVER_EXTENSION *extension;
>> + struct wine_driver *driver;
>> NTSTATUS status;
>>
>> TRACE("(%s, %p)\n", debugstr_us(name), init);
>>
>> if (!(driver = RtlAllocateHeap( GetProcessHeap(), HEAP_ZERO_MEMORY,
>> - sizeof(*driver) + sizeof(*extension) )))
>> + sizeof(*driver) )))
>> return STATUS_NO_MEMORY;
>>
>> - if ((status = RtlDuplicateUnicodeString( 1, name, &driver->DriverName )))
>> + if ((status = RtlDuplicateUnicodeString( 1, name, &driver->driver_obj.DriverName)))
>
> Missing space before the closing parenthesis here. ;p
>
>> {
>> RtlFreeHeap( GetProcessHeap(), 0, driver );
>> return status;
>> }
>
>
>
>> @@ -892,13 +959,18 @@ NTSTATUS WINAPI IoCreateDriver( UNICODE_STRING *name, PDRIVER_INITIALIZE init )
>> /***********************************************************************
>> * IoDeleteDriver (NTOSKRNL.EXE.@)
>> */
>> -void WINAPI IoDeleteDriver( DRIVER_OBJECT *driver )
>> +void WINAPI IoDeleteDriver( DRIVER_OBJECT *driver_object )
>> {
>> - TRACE("(%p)\n", driver);
>> + TRACE("(%p)\n", driver_object);
>> +
>> + EnterCriticalSection( &drivers_cs );
>> + if (wine_drivers)
>> + wine_rb_remove( wine_drivers, &driver_object->DriverName );
>> + LeaveCriticalSection( &drivers_cs );
>>
>> - RtlFreeUnicodeString( &driver->DriverName );
>> - RtlFreeUnicodeString( &driver->DriverExtension->ServiceKeyName );
>> - RtlFreeHeap( GetProcessHeap(), 0, driver );
>> + RtlFreeUnicodeString( &driver_object->DriverName );
>> + RtlFreeUnicodeString( &driver_object->DriverExtension->ServiceKeyName );
>> + RtlFreeHeap( GetProcessHeap(), 0, driver_object );
>> }
>
> You need to free the wine_driver now rather than the DRIVER_OBJECT,
> i.e. use CONTAINING_RECORD.
>
>
> Thanks,
> Thomas
>
>
More information about the wine-devel
mailing list