Contributor: BERNHARD ROSENKRAENZER { Hello, since I expect Win95-API questions to become an FAQ in the next few months, I thought you may be interested in adding a Win95 API list to the SWAG WIN-OS2.SWG area... The inofficial guide to Windows 95 API functions (Version 1.5) (c) 1995 by Bernhard Rosenkraenzer Changes since last version (1.0): - Updated to Windows 95, Beta III (Milestone 8) - Rearranged function descriptions to match function numbers - Changed "other new functions" list to "list of all new functions" to give a better overview - corrected minor mistakes - Kernel.38 (SetTaskSignalProc) and Kernel.352 (LStrCatN) were listed as new functions previously, but they an obsolete ones. Warning: All information in this document concerns the Windows 95 beta III, March 1995. Specified information may be incorrect for the final release. It contains functions that will most likely be undocumented, as well. If you know how to use one of the listed and undescribed functions, please let me know. My Internet address is bero@rage.fido.de, my FIDO-address is 2:2452/307.46. You can obtain the latest version of this text by sending mail to that address. ========================================================================== Kernel (krnl386.exe) ========================================================================== -------------------------------------------------------------------------- bool GetProfileSectionNames(long Buffer, word length) (kernel.142) -------------------------------------------------------------------------- Returns the section names of the WIN.INI file. Section names are the ones given in []-Brackets. GetProfileSectionNames separates the section names using ASCII-Code 0. Buffer: points to a buffer to take the section names length: maximum length of buffer return: 1 = Successful -------------------------------------------------------------------------- bool GetPrivateProfileSectionNames(long Buffer, word length, long filename) (kernel.143) -------------------------------------------------------------------------- Returns the section names of any .INI file. See GetProfileSectionNames for a further description. Buffer: points to a buffer to take the section names length: maximum length of buffer filename: name of .INI file to look for. -------------------------------------------------------------------------- bool CreateDirectory(long Directory, long whatever) (kernel.144) -------------------------------------------------------------------------- Creates a new directory, may use long filenames, may use "/" instead of "\" for directory separation (example: CreateDirectory("C:/Windows/System/Test CreateDirectory","") will create the directory "Test CreateDirectory" in c:\Windows\System.) Directory: specifies the directory name whatever: function unknown - must point to a string. return: 1 = Directory created 0 = Error -------------------------------------------------------------------------- bool RemoveDirectory(long Directory) (kernel.145) -------------------------------------------------------------------------- Removes a directory. Directory: specifies the directory name return: 1 = successful 0 = Error -------------------------------------------------------------------------- bool DeleteFile(long FileName) (kernel.146) -------------------------------------------------------------------------- Deletes a file. FileName: specifies File name -------------------------------------------------------------------------- bool GetCurrentDirectory(long length, long buffer) (kernel.411) -------------------------------------------------------------------------- Gets the current directory length: length of buffer to take directory name buffer: pointer to buffer to take directory name -------------------------------------------------------------------------- bool SetCurrentDirectory(long dirname) (kernel.412) -------------------------------------------------------------------------- Sets the current directory. Supports change of current drive. (e.g. it is possible to change from C:\Windows to D:\Star Trek) dirname: specifies the name of the directory to change to -------------------------------------------------------------------------- List of all new Kernel functions -------------------------------------------------------------------------- Kernel.27 GetModuleName Kernel.142 GetProfileSectionNames Kernel.143 GetPrivateProfileSectionNames Kernel.144 CreateDirectory Kernel.145 RemoveDirectory Kernel.146 DeleteFile Kernel.147 SetLastError Kernel.148 GetLastError Kernel.149 GetVersionEx Kernel.208 K208 Kernel.209 K209 Kernel.210 K210 Kernel.211 K211 Kernel.212 K212 Kernel.213 K213 Kernel.214 K214 Kernel.215 K215 Kernel.216 RegEnumKey Kernel.217 RegOpenKey Kernel.218 RegCreateKey Kernel.219 RegDeleteKey Kernel.220 RegCloseKey Kernel.221 RegSetValue Kernel.222 RegDeleteValue Kernel.223 RegEnumValue Kernel.224 RegQueryValue Kernel.225 RegQueryValueEx Kernel.226 RegSetValueEx Kernel.227 RegFlushKey Kernel.228 K228 Kernel.229 K229 Kernel.230 GlobalSmartPageLock Kernel.231 GlobalSmartPageUnlock Kernel.232 RegLoadKey Kernel.233 RegUnloadKey Kernel.234 RegSaveKey Kernel.235 InvalidateNLSCache Kernel.236 GetProductName Kernel.237 K237 Kernel.360 OpenFileEx Kernel.361 Piglet_361 Kernel.406 WritePrivateProfileStruct Kernel.407 GetPrivateProfileStruct Kernel.411 GetCurrentDirectory Kernel.412 SetCurrentDirectory Kernel.413 FindFirstFile Kernel.414 FindNextFile Kernel.415 FindClose Kernel.416 WritePrivateProfileSection Kernel.417 WriteProfileSection Kernel.418 GetPrivateProfileSection Kernel.419 GetProfileSection Kernel.420 GetFileAttributes Kernel.421 SetFileAttributes Kernel.422 GetDiskFreeSpace Kernel.491 RegisterServiceProccess Kernel.513 LoadLibraryEx32W Kernel.514 FreeLibrary32W Kernel.515 GetProcAddress32W Kernel.516 GetVDMPointer32W Kernel.517 CallProc32W Kernel.518 _CallProcEx32W Kernel.627 IsBadFlatReadWritePTR -------------------------------------------------------------------------- Kernel Functions no longer existant in Win95 -------------------------------------------------------------------------- Kernel.38 SetTaskSignalProc Kernel.77 Reserved1 Kernel.78 Reserved2 Kernel.79 Reserved3 Kernel.80 Reserved4 Kernel.87 Reserved5 Kernel.118 GetTaskQueueDS Kernel.119 GetTaskQueueES Kernel.139 DoSignal Kernel.140 SetSigHandler Kernel.141 InitTask1 Kernel.151 WinOldApCall Kernel.160 EmsCopy Kernel.316 GetFreeMemInfo Kernel.327 K327 Kernel.329 K329 Kernel.339 DiagQuery Kernel.340 DiagOutput Kernel.343 RegisterWinOldApHook Kernel.344 GetWinOldApHooks Kernel.352 LStrCatN Kernel.403 K403 Kernel.404 K404 ========================================================================== User (USER.EXE) ========================================================================== -------------------------------------------------------------------------- word WindowFromDC(word DC) (User.117) -------------------------------------------------------------------------- Returns the window handle from the specified DC DC: DC return: window handle for specified DC -------------------------------------------------------------------------- word GetForegroundWindow() (User.608) -------------------------------------------------------------------------- Returns the handle of the foreground window return: handle of foreground window -------------------------------------------------------------------------- bool SetForegroundWindow(word handle) (User.609) -------------------------------------------------------------------------- Makes the specified window foreground window. handle: Specifies handle of the window to be put in foreground. -------------------------------------------------------------------------- bool SetMenuDefaultItem(word Menu, word Item, word Flag) (User.664) -------------------------------------------------------------------------- Sets a menu item default, meaning the item will be shown in bold font. (Like the Close entry in the window system menu). Menu: specifies the handle of the menu Item: specifies the item handle Flag: unknown. 0 seems to be the only working value. -------------------------------------------------------------------------- List of all new User functions: -------------------------------------------------------------------------- User.117 WindowFromDC User.281 GetSysColorBrush User.300 UnloadInstallableDrivers User.364 LookupIconIDFromDirectoryEx User.374 DLLEntryPoint User.375 DrawTextEx User.376 SetMessageExtraInfo User.378 SetPropEx User.379 GetPropEx User.380 RemovePropEx User.381 UsrMpr_ThunkData16 User.382 SetWindowContextHelpID User.383 GetWindowContextHelpID User.384 SetMenuContextHelpID User.385 GetMenuContextHelpID User.389 LoadImage User.390 CopyImage User.391 SignalProc32 User.394 DrawIconEx User.395 GetIconInfo User.397 RegisterClassEx User.398 GetClassInfoEx User.399 ChildWindowFromPointEx User.409 InitThreadInput User.427 FindWindowEx User.428 TileWindows User.429 CascadeWindows User.441 InsertMenuItem User.443 GetMenuItemInfo User.446 SetMenuItemInfo User.448 DrawAnimatedRects User.449 DrawState User.450 CreateIconFromResourceEx User.475 SetScrollInfo User.476 GetScrollInfo User.477 GetKeyboardLayoutName User.478 LoadKeyboardLayout User.479 MenuItemFromPoint User.498 Bear498 User.533 WNetInitialize User.534 WNetLogOn User.600 GetShellWindow User.601 DoHotkeyStuff User.602 SetCheckCursorTimer User.604 BroadcastSystemMessage User.605 HackTaskMonitor User.606 FormatMessage User.608 GetForegroundWindow User.609 SetForegroundWindow User.610 DestroyIcon32 User.620 ChangeDisplaySettings User.621 EnumDisplaySettings User.640 MsgWaitForMultipleObjects User.650 ActivateKeyboardLayout User.651 GetKeyboardLayout User.652 GetKeyboardLayoutList User.654 UnloadKeyboardLayout User.655 PostPostedMessages User.656 DrawFrameControl User.657 DrawCaptionTemp User.658 DispatchInput User.659 DrawEdge User.660 DrawCaption User.661 SetSysColorsTemp User.662 DrawMenuBarTemp User.663 GetMenuDefaultItem User.664 SetMenuDefaultItem User.665 GetMenuItemRect User.666 CheckMenuRadioItem User.667 TrackPopupMenuEx User.668 SetWindowRgn User.669 GetWindowRgn User.800 ChooseFont_CallBack16 User.801 FindReplace_CallBack16 User.802 OpenFileName_CallBack16 User.803 PrintDlg_CallBack16 User.804 ChooseColor_CallBack16 User.819 PeekMessage32 User.820 GetMessage32 User.821 TranslateMessage32 User.823 CallMsgFilter32 User.824 IsDialogMessage32 User.825 PostMessage32 User.826 PostThreadMessage32 User.827 MessageBoxIndirect User.850 UsrThkConnectionDataLs User.851 MsgThkConnectionDataLs User.853 Ft_UsrThkThkConnectionData User.854 Ft_UsrF2ThkThkConnectionData User.855 Usr32ThkConnectionDataSl User.890 InstallImt User.891 UnInstallImt -------------------------------------------------------------------------- User Functions changed in Win95 -------------------------------------------------------------------------- User.8 (WEP) moved to User.9 (WEP) -------------------------------------------------------------------------- User Functions no longer existant in Win95 -------------------------------------------------------------------------- User.314 SignalProc User.336 LoadCursorIconHandler User.341 _FFFE_FARFRAME User.343 GetFilePortName User.356 LoadDIBCursorHandler User.357 LoadDIBIconHandler ========================================================================== GDI ========================================================================== -------------------------------------------------------------------------- bool PolyBezier(word DC, long points, word numpoints) (GDI.502) -------------------------------------------------------------------------- Draws bezier curves. DC: handle of DC to paint bezier curves in points: pointer to an array of TPOINT structures identifying the coordinates numpoints: number of points stored in points. -------------------------------------------------------------------------- bool PolyBezierTo(word DC, long points, word numpoints) (GDI.503) -------------------------------------------------------------------------- Draws bezier curves. Starting point for the first bezier curve is the current cursor position. DC: handle of DC to paint bezier curves in points: pointer to an array of TPOINT structures identifying the coordinates numpoints: number of points stored in points. -------------------------------------------------------------------------- List of all new GDI functions -------------------------------------------------------------------------- GDI.188 GetTextExtentEx GDI.266 OpenPrinterA GDI.267 StartDocPrinterA GDI.268 StartPagePrinter GDI.269 WritePrinter GDI.270 EndPagePrinter GDI.271 AbortPrinter GDI.272 EndDocPrinter GDI.274 ClosePrinter GDI.280 GetRealDriverInfo GDI.281 DrvSetPrinterData GDI.282 DrvGetPrinterData GDI.299 EngineGetCharWidthEx GDI.315 EngineRealizeFontExt GDI.316 EngineGetCharWidthStr GDI.404 GetTTGlyphIndexMap GDI.489 CreateDIBSection GDI.490 CloseEnhMetaFile GDI.491 CopyEnhMetaFile GDI.492 CreateEnhMetaFile GDI.493 DeleteEnhMetaFile GDI.495 GDIComment GDI.496 GetEnhMetaFile GDI.497 GetEnhMetaFileBits GDI.498 GetEnhMetaFileDescription GDI.499 GetEnhMetaFileHeader GDI.501 GetEnhMetaFilePaletteEntries GDI.502 PolyBezier GDI.503 PolyBezierTo GDI.504 PlayEnhMetaFileRecord GDI.505 SetEnhMetaFileBits GDI.506 SetMetaRgn GDI.508 ExtSelectClipRgn GDI.511 AbortPath GDI.512 BeginPath GDI.513 CloseFigure GDI.514 EndPath GDI.515 FillPath GDI.516 FlattenPath GDI.517 GetPath GDI.518 PathToRegion GDI.519 SelectClipPath GDI.520 StrokeAndFillPath GDI.521 StrokePath GDI.522 WidenPath GDI.523 ExtCreatePen GDI.524 GetArcDirection GDI.525 SetArcDirection GDI.526 GetMiterLimit GDI.527 SetMiterLimit GDI.528 GDIParametersInfo GDI.529 CreateHalfTonePalette GDI.602 SetDIBColorTable GDI.603 GetDIBColorTable GDI.604 SetSolidBrush GDI.605 SysDeleteObject GDI.606 SetMagicColors GDI.607 GetRegionData GDI.608 ExtCreateRegion GDI.609 GDIFreeResources GDI.610 GDISignalProc32 GDI.611 GetRandomRgn GDI.612 GetTextCharset GDI.613 EnumFontFamiliesEx GDI.614 AddLpkToGDI GDI.615 GetCharacterPlacement GDI.616 GetFontLanguageInfo GDI.650 BuildInverseTableDIB GDI.701 GDIThkConnectionDataLs GDI.702 FT_GDIFThkThkConnectionData GDI.703 FdThkConnectionDataSl GDI.704 IcmThkConnectionDataSl GDI.801 SetIcmMode GDI.804 EnumProfiles GDI.807 CheckColorSignAmut GDI.808 GetColorSpace GDI.809 GetLogColorSpace GDI.810 CreateColorSpace GDI.811 SetColorSpace GDI.812 DeleteColorSpace GDI.813 GetICMProfile GDI.814 SetICMProfile GDI.815 GetDeviceGammaRamp GDI.816 SetDeviceGammaRamp GDI.817 ColorMatchToTarget GDI.820 ICMCreateTransform GDI.821 ICMDeleteTransform GDI.822 ICMTranslateRGB GDI.823 ICMTranslateRGBs GDI.824 ICMCheckColorSignAmut -------------------------------------------------------------------------- GDI Functions no longer existant in Win95 -------------------------------------------------------------------------- GDI.213 Brute GDI.460 GdiTaskTermination ========================================================================== TOOLHELP (Toolhelp.dll) ========================================================================== -------------------------------------------------------------------------- new Toolhelp functions in Win95 -------------------------------------------------------------------------- Toolhelp.2 __GP Toolhelp.3 DLLEntryPoint Toolhelp.84 Local32Info Toolhelp.85 Local32First Toolhelp.86 Local32Next ========================================================================== MMSYSTEM ========================================================================== -------------------------------------------------------------------------- word MixerGetNumDevs() (mmsystem.800) -------------------------------------------------------------------------- returns the number of installed sound mixer devices. -------------------------------------------------------------------------- new MMSYSTEM functions in Win95 -------------------------------------------------------------------------- Mmsystem.3 PlaySound Mmsystem.4 DLLEntryPoint Mmsystem.110 JoyGetPosEx Mmsystem.111 JoyConfigChanged Mmsystem.250 MidiStreamProperty Mmsystem.251 MidiStreamOpen Mmsystem.252 MidiStreamClose Mmsystem.253 MidiStreamPosition Mmsystem.254 MidiStreamOut Mmsystem.255 MidiStreamPause Mmsystem.256 MidiStreamRestart Mmsystem.257 MidiStreamStop Mmsystem.800 MixerGetNumDevs Mmsystem.801 MixerGetDevCaps Mmsystem.802 MixerOpen Mmsystem.803 MixerClose Mmsystem.804 MixerMessage Mmsystem.805 MixerGetLineInfo Mmsystem.806 MixerGetID Mmsystem.807 MixerGetLineControls Mmsystem.808 MixerGetControlDetails Mmsystem.809 MixerSetControlDetails Mmsystem.1120 MMThreadCreate Mmsystem.1121 MMThreadSignal Mmsystem.1122 MMThreadBlock Mmsystem.1123 MMThreadIsCurrent Mmsystem.1124 MMThreadIsValid Mmsystem.1125 MMThreadGetTask Mmsystem.1150 MMShowMMCplPropertySheet Mmsystem.2000 WinMMF_ThunkData16 Mmsystem.2001 Ring3_Devloader Mmsystem.2002 WinMMTileBuffer Mmsystem.2003 WinMMUntileBuffer Mmsystem.2005 MCIGetThunkTable Mmsystem.2006 WinMMLs_ThunkData16 -------------------------------------------------------------------------- MMSYSTEM Functions no longer existant in Win95: -------------------------------------------------------------------------- Mmsystem.34 MMDrvInstall Mmsystem.109 JoySetCalibration ========================================================================== SHELL.DLL ========================================================================== -------------------------------------------------------------------------- bool PickIconDlg(long Window, long length, long buffer) (shell.166) -------------------------------------------------------------------------- Shows the Icon Selection dialog box and returns filename and index of the selected icon. Window: Parent window handle or 0 Length: Maximum length of buffer Buffer: Buffer to take information on the selected icon -------------------------------------------------------------------------- word DriveType(word drive) (shell.262) -------------------------------------------------------------------------- Returns the drive type for a specified drive drive: 0 = A: 1 = B: ... return: 1 = not installed 2 = disk drive (3.5" HD) 3 = Hard Disk 4 = Network ?? 5 = CD-ROM -------------------------------------------------------------------------- word ShFormatDrive(word Window, word Drive, long Param) (shell.400) -------------------------------------------------------------------------- Formats, or makes bootable, the specified drive Window: parent window handle or 0 Drive: 0 = A:, 1 = B:, ... Param: 0 = QuickFormat; 1 = Full Format; 2 = make bootable return: -2 = canceled by user 0 or -3 = drive can't be formatted 6 = successful format -------------------------------------------------------------------------- List of all new Shell functions: -------------------------------------------------------------------------- Shell.40 ExtractIconEx Shell.98 Shl3216_ThunkData16 Shell.99 Shl1632_ThunkData16 Shell.101 DLLEntryPoint Shell.157 RestartDialog Shell.166 PickIconDlg Shell.262 DriveType Shell.300 ShGetFileInfo Shell.400 ShFormatDrive Shell.401 ShCheckDrive Shell.402 _RunDLLCheckDrive -------------------------------------------------------------------------- Functions no longer existant in Win95 -------------------------------------------------------------------------- Shell.32 WCI Shell.33 AboutDlgProc Shell.100 HereTharBetYGars Shell.101 FindExeDlgProc Shell.103 ShellHookProc -------------------------------------------------------------------------- Changes from Windows 3.x to Windows 95 -------------------------------------------------------------------------- Shell.101 FindExeDlgProc --> Shell.101 DLLEntryPoint ========================================================================== COMMDLG ========================================================================== -------------------------------------------------------------------------- new functions in Win95: -------------------------------------------------------------------------- Commdlg.40 DlgThkConnectionDataLs -------------------------------------------------------------------------- functions no longer existant in Win95 -------------------------------------------------------------------------- Commdlg.6 FileOpenDlgProc Commdlg.7 FileSaveDlgProc Commdlg.8 ColorDlgProc Commdlg.13 FindTextDlgProc Commdlg.14 ReplaceTextDlgProc Commdlg.18 FontStyleEnumProc Commdlg.19 FontFamilyEnumProc Commdlg.21 PrintDlgProc Commdlg.22 PrintSetupDlgProc Commdlg.23 EditIntegerOnly Commdlg.25 WantArrows Commdlg.29 DwLbSubClass Commdlg.30 DwUpArrowHack Commdlg.31 DwOkSubClass The inofficial guide to Windows 95 API, Appendix 1: API Changes from Beta II, Oct 1994 (M7) to Beta III, March 1995 (M8): === GDI === Removed: GDI.460 GdiTaskTermination Added: GDI.188 GetTextExtentEx GDI.404 GetTTGlyphIndexMap ==== USER ==== Removed: User.396 LookupIconIDFromDirectory User.439 CreateIconFromResource User.870 CreateSegmentedFrtWin User.871 GetFrtWin User.872 UpdateFrtWin User.873 DestroySegmentedFrtWin Added: User.621 EnumDisplaySettings User.819 PeekMessage32 User.820 GetMessage32 User.821 TranslateMessage32 User.823 CallMsgFilter32 User.824 IsDialogMessage ====== KERNEL ====== Removed: Kernel.34 SetTaskQueue Kernel.151 WinOldApCall Kernel.316 GetFreeMemInfo Kernel.343 RegisterWinOldApHook Kernel.344 GetWinOldApHooks Added: Kernel.237 K237 ======= COMMDLG ======= The old Windows 3.1 function CommDlg.16 (FormatCharDlgProc) was obsolete in Beta II, but works again with Beta III. ======== MMSYSTEM ======== Added: Mmsystem.1150 MMShowMMCplPropertySheet