kernel32: Move some misc functions to kernelbase.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
ea43b87c00
commit
eac5395fb4
|
@ -149,16 +149,6 @@ VOID WINAPI GetNativeSystemInfo(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* IsProcessorFeaturePresent [KERNEL32.@]
|
|
||||||
*
|
|
||||||
* Determine if the cpu supports a given feature.
|
|
||||||
*/
|
|
||||||
BOOL WINAPI IsProcessorFeaturePresent ( DWORD feature )
|
|
||||||
{
|
|
||||||
return RtlIsProcessorFeaturePresent( feature );
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* K32GetPerformanceInfo (KERNEL32.@)
|
* K32GetPerformanceInfo (KERNEL32.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -306,7 +306,7 @@
|
||||||
@ stdcall CreateNamedPipeA(str long long long long long long ptr)
|
@ stdcall CreateNamedPipeA(str long long long long long long ptr)
|
||||||
@ stdcall -import CreateNamedPipeW(wstr long long long long long long ptr)
|
@ stdcall -import CreateNamedPipeW(wstr long long long long long long ptr)
|
||||||
# @ stub CreateNlsSecurityDescriptor
|
# @ stub CreateNlsSecurityDescriptor
|
||||||
@ stdcall CreatePipe(ptr ptr ptr long)
|
@ stdcall -import CreatePipe(ptr ptr ptr long)
|
||||||
# @ stub CreatePrivateNamespaceA
|
# @ stub CreatePrivateNamespaceA
|
||||||
# @ stub CreatePrivateNamespaceW
|
# @ stub CreatePrivateNamespaceW
|
||||||
@ stdcall CreateProcessA(str str ptr ptr long long ptr str ptr ptr)
|
@ stdcall CreateProcessA(str str ptr ptr long long ptr str ptr ptr)
|
||||||
|
@ -795,7 +795,7 @@
|
||||||
@ stdcall GetProcessVersion(long)
|
@ stdcall GetProcessVersion(long)
|
||||||
@ stdcall GetProcessWorkingSetSize(long ptr ptr)
|
@ stdcall GetProcessWorkingSetSize(long ptr ptr)
|
||||||
@ stdcall -import GetProcessWorkingSetSizeEx(long ptr ptr ptr)
|
@ stdcall -import GetProcessWorkingSetSizeEx(long ptr ptr ptr)
|
||||||
@ stdcall GetProductInfo(long long long long ptr)
|
@ stdcall -import GetProductInfo(long long long long ptr)
|
||||||
@ stub GetProductName
|
@ stub GetProductName
|
||||||
@ stdcall GetProfileIntA(str str long)
|
@ stdcall GetProfileIntA(str str long)
|
||||||
@ stdcall GetProfileIntW(wstr wstr long)
|
@ stdcall GetProfileIntW(wstr wstr long)
|
||||||
|
@ -981,8 +981,8 @@
|
||||||
@ stub -i386 IsLSCallback
|
@ stub -i386 IsLSCallback
|
||||||
# @ stub IsNLSDefinedString
|
# @ stub IsNLSDefinedString
|
||||||
@ stdcall IsNormalizedString(long wstr long)
|
@ stdcall IsNormalizedString(long wstr long)
|
||||||
@ stdcall IsProcessInJob(long long ptr)
|
@ stdcall -import IsProcessInJob(long long ptr)
|
||||||
@ stdcall IsProcessorFeaturePresent(long)
|
@ stdcall -import IsProcessorFeaturePresent(long)
|
||||||
@ stub -i386 IsSLCallback
|
@ stub -i386 IsSLCallback
|
||||||
@ stdcall IsSystemResumeAutomatic()
|
@ stdcall IsSystemResumeAutomatic()
|
||||||
@ stdcall -import IsThreadAFiber()
|
@ stdcall -import IsThreadAFiber()
|
||||||
|
|
|
@ -382,26 +382,6 @@ BOOL WINAPI AssignProcessToJobObject( HANDLE job, HANDLE process )
|
||||||
return !status;
|
return !status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* IsProcessInJob (KERNEL32.@)
|
|
||||||
*/
|
|
||||||
BOOL WINAPI IsProcessInJob( HANDLE process, HANDLE job, PBOOL result )
|
|
||||||
{
|
|
||||||
NTSTATUS status = NtIsProcessInJob( process, job );
|
|
||||||
switch(status)
|
|
||||||
{
|
|
||||||
case STATUS_PROCESS_IN_JOB:
|
|
||||||
*result = TRUE;
|
|
||||||
return TRUE;
|
|
||||||
case STATUS_PROCESS_NOT_IN_JOB:
|
|
||||||
*result = FALSE;
|
|
||||||
return TRUE;
|
|
||||||
default:
|
|
||||||
SetLastError( RtlNtStatusToDosError(status) );
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Timers
|
* Timers
|
||||||
|
@ -739,75 +719,6 @@ BOOL WINAPI CallNamedPipeA(
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
* CreatePipe (KERNEL32.@)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
BOOL WINAPI CreatePipe( PHANDLE hReadPipe, PHANDLE hWritePipe,
|
|
||||||
LPSECURITY_ATTRIBUTES sa, DWORD size )
|
|
||||||
{
|
|
||||||
static unsigned index /* = 0 */;
|
|
||||||
WCHAR name[64];
|
|
||||||
HANDLE hr, hw;
|
|
||||||
unsigned in_index = index;
|
|
||||||
UNICODE_STRING nt_name;
|
|
||||||
OBJECT_ATTRIBUTES attr;
|
|
||||||
NTSTATUS status;
|
|
||||||
IO_STATUS_BLOCK iosb;
|
|
||||||
LARGE_INTEGER timeout;
|
|
||||||
|
|
||||||
*hReadPipe = *hWritePipe = INVALID_HANDLE_VALUE;
|
|
||||||
|
|
||||||
attr.Length = sizeof(attr);
|
|
||||||
attr.RootDirectory = 0;
|
|
||||||
attr.ObjectName = &nt_name;
|
|
||||||
attr.Attributes = OBJ_CASE_INSENSITIVE |
|
|
||||||
((sa && sa->bInheritHandle) ? OBJ_INHERIT : 0);
|
|
||||||
attr.SecurityDescriptor = sa ? sa->lpSecurityDescriptor : NULL;
|
|
||||||
attr.SecurityQualityOfService = NULL;
|
|
||||||
|
|
||||||
if (!size) size = 4096;
|
|
||||||
|
|
||||||
timeout.QuadPart = (ULONGLONG)NMPWAIT_USE_DEFAULT_WAIT * -10000;
|
|
||||||
/* generate a unique pipe name (system wide) */
|
|
||||||
do
|
|
||||||
{
|
|
||||||
static const WCHAR nameFmt[] = { '\\','?','?','\\','p','i','p','e',
|
|
||||||
'\\','W','i','n','3','2','.','P','i','p','e','s','.','%','0','8','l',
|
|
||||||
'u','.','%','0','8','u','\0' };
|
|
||||||
|
|
||||||
snprintfW(name, ARRAY_SIZE(name), nameFmt, GetCurrentProcessId(), ++index);
|
|
||||||
RtlInitUnicodeString(&nt_name, name);
|
|
||||||
status = NtCreateNamedPipeFile(&hr, GENERIC_READ | FILE_WRITE_ATTRIBUTES | SYNCHRONIZE,
|
|
||||||
&attr, &iosb, FILE_SHARE_WRITE, FILE_OVERWRITE_IF,
|
|
||||||
FILE_SYNCHRONOUS_IO_NONALERT,
|
|
||||||
FALSE, FALSE, FALSE,
|
|
||||||
1, size, size, &timeout);
|
|
||||||
if (status)
|
|
||||||
{
|
|
||||||
SetLastError( RtlNtStatusToDosError(status) );
|
|
||||||
hr = INVALID_HANDLE_VALUE;
|
|
||||||
}
|
|
||||||
} while (hr == INVALID_HANDLE_VALUE && index != in_index);
|
|
||||||
/* from completion sakeness, I think system resources might be exhausted before this happens !! */
|
|
||||||
if (hr == INVALID_HANDLE_VALUE) return FALSE;
|
|
||||||
|
|
||||||
status = NtOpenFile(&hw, GENERIC_WRITE | FILE_READ_ATTRIBUTES | SYNCHRONIZE, &attr, &iosb, 0,
|
|
||||||
FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE);
|
|
||||||
|
|
||||||
if (status)
|
|
||||||
{
|
|
||||||
SetLastError( RtlNtStatusToDosError(status) );
|
|
||||||
NtClose(hr);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
*hReadPipe = hr;
|
|
||||||
*hWritePipe = hw;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* CreateMailslotA [KERNEL32.@]
|
* CreateMailslotA [KERNEL32.@]
|
||||||
*
|
*
|
||||||
|
|
|
@ -110,21 +110,6 @@ DWORD WINAPI SetTermsrvAppInstallMode(BOOL bInstallMode)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* GetProductInfo (KERNEL32.@)
|
|
||||||
*
|
|
||||||
* Gives info about the current Windows product type, in a format compatible
|
|
||||||
* with the given Windows version
|
|
||||||
*
|
|
||||||
* Returns TRUE if the input is valid, FALSE otherwise
|
|
||||||
*/
|
|
||||||
BOOL WINAPI GetProductInfo(DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion,
|
|
||||||
DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType)
|
|
||||||
{
|
|
||||||
return RtlGetProductInfo(dwOSMajorVersion, dwOSMinorVersion,
|
|
||||||
dwSpMajorVersion, dwSpMinorVersion, pdwReturnedProductType);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* GetCurrentPackageId (KERNEL32.@)
|
* GetCurrentPackageId (KERNEL32.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -200,7 +200,7 @@
|
||||||
@ stdcall CreateMutexExW(ptr wstr long long)
|
@ stdcall CreateMutexExW(ptr wstr long long)
|
||||||
@ stdcall CreateMutexW(ptr long wstr)
|
@ stdcall CreateMutexW(ptr long wstr)
|
||||||
@ stdcall CreateNamedPipeW(wstr long long long long long long ptr)
|
@ stdcall CreateNamedPipeW(wstr long long long long long long ptr)
|
||||||
@ stdcall CreatePipe(ptr ptr ptr long) kernel32.CreatePipe
|
@ stdcall CreatePipe(ptr ptr ptr long)
|
||||||
# @ stub CreatePrivateNamespaceW
|
# @ stub CreatePrivateNamespaceW
|
||||||
@ stdcall CreatePrivateObjectSecurity(ptr ptr ptr long long ptr)
|
@ stdcall CreatePrivateObjectSecurity(ptr ptr ptr long long ptr)
|
||||||
@ stdcall CreatePrivateObjectSecurityEx(ptr ptr ptr ptr long long long ptr)
|
@ stdcall CreatePrivateObjectSecurityEx(ptr ptr ptr ptr long long long ptr)
|
||||||
|
@ -639,7 +639,7 @@
|
||||||
@ stdcall GetProcessVersion(long) kernel32.GetProcessVersion
|
@ stdcall GetProcessVersion(long) kernel32.GetProcessVersion
|
||||||
@ stdcall GetProcessWorkingSetSizeEx(long ptr ptr ptr)
|
@ stdcall GetProcessWorkingSetSizeEx(long ptr ptr ptr)
|
||||||
# @ stub GetProcessorSystemCycleTime
|
# @ stub GetProcessorSystemCycleTime
|
||||||
@ stdcall GetProductInfo(long long long long ptr) kernel32.GetProductInfo
|
@ stdcall GetProductInfo(long long long long ptr)
|
||||||
@ stub GetPtrCalData
|
@ stub GetPtrCalData
|
||||||
@ stub GetPtrCalDataArray
|
@ stub GetPtrCalDataArray
|
||||||
# @ stub GetPublisherCacheFolder
|
# @ stub GetPublisherCacheFolder
|
||||||
|
@ -864,8 +864,8 @@
|
||||||
@ stub IsNLSDefinedString
|
@ stub IsNLSDefinedString
|
||||||
@ stdcall IsNormalizedString(long wstr long) kernel32.IsNormalizedString
|
@ stdcall IsNormalizedString(long wstr long) kernel32.IsNormalizedString
|
||||||
# @ stub IsProcessCritical
|
# @ stub IsProcessCritical
|
||||||
@ stdcall IsProcessInJob(long long ptr) kernel32.IsProcessInJob
|
@ stdcall IsProcessInJob(long long ptr)
|
||||||
@ stdcall IsProcessorFeaturePresent(long) kernel32.IsProcessorFeaturePresent
|
@ stdcall IsProcessorFeaturePresent(long)
|
||||||
# @ stub IsSideloadingEnabled
|
# @ stub IsSideloadingEnabled
|
||||||
# @ stub IsSideloadingPolicyApplied
|
# @ stub IsSideloadingPolicyApplied
|
||||||
# @ stub IsSyncForegroundPolicyRefresh
|
# @ stub IsSyncForegroundPolicyRefresh
|
||||||
|
|
|
@ -259,6 +259,36 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetProcessWorkingSetSizeEx( HANDLE process, SIZE_T
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* IsProcessInJob (kernelbase.@)
|
||||||
|
*/
|
||||||
|
BOOL WINAPI DECLSPEC_HOTPATCH IsProcessInJob( HANDLE process, HANDLE job, BOOL *result )
|
||||||
|
{
|
||||||
|
NTSTATUS status = NtIsProcessInJob( process, job );
|
||||||
|
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case STATUS_PROCESS_IN_JOB:
|
||||||
|
*result = TRUE;
|
||||||
|
return TRUE;
|
||||||
|
case STATUS_PROCESS_NOT_IN_JOB:
|
||||||
|
*result = FALSE;
|
||||||
|
return TRUE;
|
||||||
|
default:
|
||||||
|
return set_ntstatus( status );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* IsProcessorFeaturePresent (kernelbase.@)
|
||||||
|
*/
|
||||||
|
BOOL WINAPI DECLSPEC_HOTPATCH IsProcessorFeaturePresent ( DWORD feature )
|
||||||
|
{
|
||||||
|
return RtlIsProcessorFeaturePresent( feature );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* IsWow64Process (kernelbase.@)
|
* IsWow64Process (kernelbase.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1172,6 +1172,56 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateNamedPipeW( LPCWSTR name, DWORD open_mode,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************
|
||||||
|
* CreatePipe (kernelbase.@)
|
||||||
|
*/
|
||||||
|
BOOL WINAPI DECLSPEC_HOTPATCH CreatePipe( HANDLE *read_pipe, HANDLE *write_pipe,
|
||||||
|
SECURITY_ATTRIBUTES *sa, DWORD size )
|
||||||
|
{
|
||||||
|
static unsigned int index;
|
||||||
|
WCHAR name[64];
|
||||||
|
UNICODE_STRING nt_name;
|
||||||
|
OBJECT_ATTRIBUTES attr;
|
||||||
|
IO_STATUS_BLOCK iosb;
|
||||||
|
LARGE_INTEGER timeout;
|
||||||
|
|
||||||
|
*read_pipe = *write_pipe = INVALID_HANDLE_VALUE;
|
||||||
|
|
||||||
|
attr.Length = sizeof(attr);
|
||||||
|
attr.RootDirectory = 0;
|
||||||
|
attr.ObjectName = &nt_name;
|
||||||
|
attr.Attributes = OBJ_CASE_INSENSITIVE | ((sa && sa->bInheritHandle) ? OBJ_INHERIT : 0);
|
||||||
|
attr.SecurityDescriptor = sa ? sa->lpSecurityDescriptor : NULL;
|
||||||
|
attr.SecurityQualityOfService = NULL;
|
||||||
|
|
||||||
|
if (!size) size = 4096;
|
||||||
|
|
||||||
|
timeout.QuadPart = (ULONGLONG)NMPWAIT_USE_DEFAULT_WAIT * -10000;
|
||||||
|
|
||||||
|
/* generate a unique pipe name (system wide) */
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
static const WCHAR fmtW[] = { '\\','?','?','\\','p','i','p','e','\\',
|
||||||
|
'W','i','n','3','2','.','P','i','p','e','s','.','%','0','8','l','u','.','%','0','8','u','\0' };
|
||||||
|
|
||||||
|
swprintf( name, ARRAY_SIZE(name), fmtW, GetCurrentProcessId(), ++index );
|
||||||
|
RtlInitUnicodeString( &nt_name, name );
|
||||||
|
if (!NtCreateNamedPipeFile( read_pipe, GENERIC_READ | FILE_WRITE_ATTRIBUTES | SYNCHRONIZE,
|
||||||
|
&attr, &iosb, FILE_SHARE_WRITE, FILE_OVERWRITE_IF,
|
||||||
|
FILE_SYNCHRONOUS_IO_NONALERT,
|
||||||
|
FALSE, FALSE, FALSE, 1, size, size, &timeout ))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!set_ntstatus( NtOpenFile( write_pipe, GENERIC_WRITE | FILE_READ_ATTRIBUTES | SYNCHRONIZE, &attr,
|
||||||
|
&iosb, 0, FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE )))
|
||||||
|
{
|
||||||
|
NtClose( *read_pipe );
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DisconnectNamedPipe (kernelbase.@)
|
* DisconnectNamedPipe (kernelbase.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1339,6 +1339,16 @@ DWORD WINAPI VerFindFileW( DWORD flags, LPCWSTR filename, LPCWSTR win_dir, LPCWS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* GetProductInfo (kernelbase.@)
|
||||||
|
*/
|
||||||
|
BOOL WINAPI DECLSPEC_HOTPATCH GetProductInfo( DWORD os_major, DWORD os_minor,
|
||||||
|
DWORD sp_major, DWORD sp_minor, DWORD *type )
|
||||||
|
{
|
||||||
|
return RtlGetProductInfo( os_major, os_minor, sp_major, sp_minor, type );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* GetVersion (kernelbase.@)
|
* GetVersion (kernelbase.@)
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue