2 * KERNEL32.DLL stubs (STUB functions)
3 * Remove from this file, if you implement them.
12 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \
13 DPRINT1("%s() is UNIMPLEMENTED!\n", __FUNCTION__)
20 BaseAttachCompleteThunk (VOID
)
30 BaseDumpAppcompatCache(VOID
)
39 BaseFlushAppcompatCache(VOID
)
49 BaseCheckAppcompatCache(ULONG Unknown1
,
55 if (Unknown4
) *Unknown4
= 0;
63 BaseUpdateAppcompatCache(ULONG Unknown1
, ULONG Unknown2
, ULONG Unknown3
)
118 ExtendVirtualBuffer (
134 HANDLE hVirtualBuffer
161 GetVDMCurrentDirectories (
200 RegisterWowBaseHandlers (
228 SetVDMCurrentDirectories (
257 VDMConsoleOperation (
272 VDMOperationStarted (
285 VirtualBufferExceptionHandler (
300 BindIoCompletionCallback(HANDLE FileHandle
,
301 LPOVERLAPPED_COMPLETION_ROUTINE Function
,
306 DPRINT("(%p, %p, %d)\n", FileHandle
, Function
, Flags
);
308 Status
= RtlSetIoCompletionCallback(FileHandle
,
309 (PIO_APC_ROUTINE
)Function
,
312 if (!NT_SUCCESS(Status
))
314 SetLastError(RtlNtStatusToDosError(Status
));
328 PJOB_SET_ARRAY UserJobSet
,
340 FindVolumeMountPointClose(
341 HANDLE hFindVolumeMountPoint
353 GetNumaHighestNodeNumber(
354 PULONG HighestNodeNumber
366 GetNumaNodeProcessorMask(
368 PULONGLONG ProcessorMask
380 GetNumaProcessorNode(
394 HeapQueryInformation (
396 HEAP_INFORMATION_CLASS HeapInformationClass
,
397 PVOID HeapInformation OPTIONAL
,
398 SIZE_T HeapInformationLength OPTIONAL
,
399 PSIZE_T ReturnLength OPTIONAL
413 HEAP_INFORMATION_CLASS HeapInformationClass
,
414 PVOID HeapInformation OPTIONAL
,
415 SIZE_T HeapInformationLength OPTIONAL
427 ReadFileScatter(HANDLE hFile
,
428 FILE_SEGMENT_ELEMENT aSegmentArray
[],
429 DWORD nNumberOfBytesToRead
,
431 LPOVERLAPPED lpOverlapped
)
433 PIO_STATUS_BLOCK pIOStatus
;
434 LARGE_INTEGER Offset
;
437 DPRINT("(%p %p %u %p)\n", hFile
, aSegmentArray
, nNumberOfBytesToRead
, lpOverlapped
);
439 Offset
.LowPart
= lpOverlapped
->Offset
;
440 Offset
.HighPart
= lpOverlapped
->OffsetHigh
;
441 pIOStatus
= (PIO_STATUS_BLOCK
) lpOverlapped
;
442 pIOStatus
->Status
= STATUS_PENDING
;
443 pIOStatus
->Information
= 0;
445 Status
= NtReadFileScatter(hFile
,
451 nNumberOfBytesToRead
,
455 if (!NT_SUCCESS(Status
))
457 SetLastError(RtlNtStatusToDosError(Status
));
469 RemoveVectoredExceptionHandler(
470 PVOID VectoredHandlerHandle
494 WriteFileGather(HANDLE hFile
,
495 FILE_SEGMENT_ELEMENT aSegmentArray
[],
496 DWORD nNumberOfBytesToWrite
,
498 LPOVERLAPPED lpOverlapped
)
500 PIO_STATUS_BLOCK IOStatus
;
501 LARGE_INTEGER Offset
;
504 DPRINT("%p %p %u %p\n", hFile
, aSegmentArray
, nNumberOfBytesToWrite
, lpOverlapped
);
506 Offset
.LowPart
= lpOverlapped
->Offset
;
507 Offset
.HighPart
= lpOverlapped
->OffsetHigh
;
508 IOStatus
= (PIO_STATUS_BLOCK
) lpOverlapped
;
509 IOStatus
->Status
= STATUS_PENDING
;
510 IOStatus
->Information
= 0;
512 Status
= NtWriteFileGather(hFile
,
518 nNumberOfBytesToWrite
,
522 if (!NT_SUCCESS(Status
))
524 SetLastError(RtlNtStatusToDosError(Status
));
536 DeleteVolumeMountPointW(
537 LPCWSTR lpszVolumeMountPoint
549 FindFirstVolumeMountPointW(
550 LPCWSTR lpszRootPathName
,
551 LPWSTR lpszVolumeMountPoint
,
552 DWORD cchBufferLength
570 MOUNTMGR_MOUNT_POINTS
*data
= handle
;
572 while (data
->Size
< data
->NumberOfMountPoints
)
574 static const WCHAR volumeW
[] = {'\\','?','?','\\','V','o','l','u','m','e','{',};
575 WCHAR
*link
= (WCHAR
*)((char *)data
+ data
->MountPoints
[data
->Size
].SymbolicLinkNameOffset
);
576 DWORD size
= data
->MountPoints
[data
->Size
].SymbolicLinkNameLength
;
578 /* skip non-volumes */
579 if (size
< sizeof(volumeW
) || memcmp( link
, volumeW
, sizeof(volumeW
) )) continue;
580 if (size
+ sizeof(WCHAR
) >= len
* sizeof(WCHAR
))
582 SetLastError( ERROR_FILENAME_EXCED_RANGE
);
585 memcpy( volume
, link
, size
);
586 volume
[1] = '\\'; /* map \??\ to \\?\ */
587 volume
[size
/ sizeof(WCHAR
)] = '\\'; /* Windows appends a backslash */
588 volume
[size
/ sizeof(WCHAR
) + 1] = 0;
589 DPRINT( "returning entry %u %s\n", data
->Size
- 1, volume
);
592 SetLastError( ERROR_NO_MORE_FILES
);
601 FindNextVolumeMountPointW(
602 HANDLE hFindVolumeMountPoint
,
603 LPWSTR lpszVolumeMountPoint
,
604 DWORD cchBufferLength
616 GetFirmwareEnvironmentVariableW(
632 GetVolumePathNamesForVolumeNameW(
633 LPCWSTR lpszVolumeName
,
634 LPWSTR lpszVolumePathNames
,
635 DWORD cchBufferLength
,
636 PDWORD lpcchReturnLength
648 SetFirmwareEnvironmentVariableW(
664 SetVolumeMountPointW(
665 LPCWSTR lpszVolumeMountPoint
,
666 LPCWSTR lpszVolumeName
678 DeleteVolumeMountPointA(
679 LPCSTR lpszVolumeMountPoint
691 FindFirstVolumeMountPointA(
692 LPCSTR lpszRootPathName
,
693 LPSTR lpszVolumeMountPoint
,
694 DWORD cchBufferLength
706 FindNextVolumeA(HANDLE handle
,
710 WCHAR
*buffer
= HeapAlloc(GetProcessHeap(), 0, len
* sizeof(WCHAR
));
713 if ((ret
= FindNextVolumeW( handle
, buffer
, len
)))
715 if (!WideCharToMultiByte( CP_ACP
, 0, buffer
, -1, volume
, len
, NULL
, NULL
)) ret
= FALSE
;
718 HeapFree( GetProcessHeap(), 0, buffer
);
727 FindNextVolumeMountPointA(
728 HANDLE hFindVolumeMountPoint
,
729 LPSTR lpszVolumeMountPoint
,
730 DWORD cchBufferLength
742 GetFirmwareEnvironmentVariableA(
758 GetVolumePathNamesForVolumeNameA(
759 LPCSTR lpszVolumeName
,
760 LPSTR lpszVolumePathNames
,
761 DWORD cchBufferLength
,
762 PDWORD lpcchReturnLength
774 SetFirmwareEnvironmentVariableA(
790 SetVolumeMountPointA(
791 LPCSTR lpszVolumeMountPoint
,
792 LPCSTR lpszVolumeName
802 BOOL WINAPI
GetConsoleKeyboardLayoutNameA(LPSTR name
)
811 BOOL WINAPI
GetConsoleKeyboardLayoutNameW(LPWSTR name
)
820 DWORD WINAPI
GetHandleContext(HANDLE hnd
)
829 HANDLE WINAPI
CreateSocketHandle(VOID
)
832 return INVALID_HANDLE_VALUE
;
838 BOOL WINAPI
SetHandleContext(HANDLE hnd
,DWORD context
)
847 BOOL WINAPI
UTRegister( HMODULE hModule
, LPSTR lpsz16BITDLL
,
848 LPSTR lpszInitName
, LPSTR lpszProcName
,
849 FARPROC
*ppfn32Thunk
, FARPROC pfnUT32CallBack
,
859 VOID WINAPI
UTUnRegister( HMODULE hModule
)
867 FARPROC WINAPI
DelayLoadFailureHook(LPCSTR pszDllName
, LPCSTR pszProcName
)
876 NTSTATUS WINAPI
CreateNlsSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor
,ULONG Size
,ULONG AccessMask
)
885 BOOL WINAPI
IsValidUILanguage(LANGID langid
)
894 VOID WINAPI
NlsConvertIntegerToString(ULONG Value
,ULONG Base
,ULONG strsize
, LPWSTR str
, ULONG strsize2
)
902 UINT WINAPI
SetCPGlobal(UINT CodePage
)
913 SetClientTimeZoneInformation(
914 CONST TIME_ZONE_INFORMATION
*lpTimeZoneInformation
)
922 NlsGetCacheUpdateCount(VOID
)
930 Wow64EnableWow64FsRedirection (BOOL Wow64EnableWow64FsRedirection
)
938 Wow64DisableWow64FsRedirection (VOID
** pv
)
946 Wow64RevertWow64FsRedirection (VOID
* pv
)
954 EnumSystemFirmwareTables(IN DWORD FirmwareTableProviderSignature
,
955 OUT PVOID pFirmwareTableBuffer
,
964 GetSystemFileCacheSize(OUT PSIZE_T lpMinimumFileCacheSize
,
965 OUT PSIZE_T lpMaximumFileCacheSize
,
974 GetSystemFirmwareTable(IN DWORD FirmwareTableProviderSignature
,
975 IN DWORD FirmwareTableID
,
976 OUT PVOID pFirmwareTableBuffer
,
985 SetSystemFileCacheSize(IN SIZE_T MinimumFileCacheSize
,
986 IN SIZE_T MaximumFileCacheSize
,
995 SetThreadStackGuarantee(IN OUT PULONG StackSizeInBytes
)
1003 ReOpenFile(IN HANDLE hOriginalFile
,
1004 IN DWORD dwDesiredAccess
,
1005 IN DWORD dwShareMode
,
1009 return INVALID_HANDLE_VALUE
;
1014 SetProcessWorkingSetSizeEx(IN HANDLE hProcess
,
1015 IN SIZE_T dwMinimumWorkingSetSize
,
1016 IN SIZE_T dwMaximumWorkingSetSize
,
1026 GetProcessWorkingSetSizeEx(IN HANDLE hProcess
,
1027 OUT PSIZE_T lpMinimumWorkingSetSize
,
1028 OUT PSIZE_T lpMaximumWorkingSetSize
,
1037 GetLogicalProcessorInformation(OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer
,
1038 IN OUT PDWORD ReturnLength
)
1046 GetNumaAvailableMemoryNode(IN UCHAR Node
,
1047 OUT PULONGLONG AvailableBytes
)
1055 NlsResetProcessLocale(VOID
)