setupapi: Implement SetupOpenLog(), SetupLogErrorA(), SetupLogErrorW(), SetupCloseLog() (try 3)

Pierre Schweitzer pierre at reactos.org
Sun Feb 8 07:17:22 CST 2015


On 08/02/2015 13:46, Nikolay Sivov wrote:
>> +    if (MessageString)
>> +    {
>> +        len = lstrlenA(MessageString) + 1;
>> +        msg = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
>> +        if (msg == NULL)
>> +        {
>> +            SetLastError(ERROR_NOT_ENOUGH_MEMORY);
>> +            return FALSE;
>> +        }
>> +        MultiByteToWideChar(CP_ACP, 0, MessageString, -1, msg, len);
>> +    }
> 
> That's not how A->W conversion works, we have tons of examples for that.

Well....
http://source.winehq.org/git/wine.git/blob/HEAD:/dlls/setupapi/query.c#l118

Feel free to point at some other location.

>>          OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW);
>>          if (!GetVersionExW(&OsVersionInfo))
>>              return FALSE;
>> +        InitializeCriticalSection(&setuplog_critical);
>>          SETUPAPI_hInstance = hinstDLL;
>>          break;
>>      case DLL_PROCESS_DETACH:
>>          if (lpvReserved) break;
>> +        DeleteCriticalSection(&setuplog_critical);
>>          if (CABINET_hInstance) FreeLibrary(CABINET_hInstance);
>>          break;
> 
> You won't need these calls once you init it like the rest of Wine code
> does. Also what about closing files on DLL_PROCESS_DETACH?

I couldn't find any evidence that Windows does this.
And they'll be closed as soon the process dies.

> 
>> +    SetLastError(ERROR_ALREADY_EXISTS);
>> +    return TRUE;
> 
> Is it really important for some application to set this error on
> success? In general you only need to set it if call failed.

Well, as my tests are showing, this is set by Windows. In case an
application would rely on it, it doesn't harm to set it.

>> +    setupact = CreateFileW(path, GENERIC_WRITE, FILE_SHARE_WRITE |
>> FILE_SHARE_READ,
>> +                           NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,
>> NULL);
> 
> Did you check what happens if multiple processes are logging?

As far as my tests are correct, multiple processes can be logging.
-- 
Pierre Schweitzer <pierre at reactos.org>
System & Network Administrator
Senior Kernel Developer
ReactOS Deutschland e.V.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3940 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20150208/663b4485/attachment-0001.bin>


More information about the wine-devel mailing list