Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: Microsoft violated the Constitution?  (Read 18405 times)

0 Members and 1 Guest are viewing this topic.

BC_Programmer


    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: Microsoft violated the Constitution?
« Reply #60 on: November 16, 2009, 01:22:53 PM »
yes, the way I see it, the idea is the "seed", and it really doesn't become something "stealable" until a person plants that seed by doing something with the idea. However, it is only the stuff that grew from that seed that should be protected, not the idea itself. MS may have used similar ideas, but they grew their own plants around them; that is, they wrote their own implementations of the idea. In my opinion it should be the implementation, if anything, that is protected- that is, the source code to what they did, because that is where the real work was done. This goes for both Apple, and MS.

This brings up an interesting and commonly repeated argument, however. many people claim that MS is, or was, using "secret" APIs in their own programs, such as Word- one item that was claimed to be a "secret" API was the Microsoft Office commandbars. People claimed that MS was keeping it to themselves.

However, there is an angle nobody is realizing. the Commandbar library was developed using standard API code; there is no special undocumented voodoo there. The fact is, it was developed by the Office team, not by the windows team, and is therefore not part of windows.

There was nothing stopping these complainants from writing their own implementations of commandbars, and it was fully possible, while a pain in the *censored*, to do so. To say that MS is using "secret" APIs is ludicrous. Many other software companies that develop windows applications have their own implementations of menus, commandbars, and various other UI elements, and they are certainly no worse then the MS commandbar, and definitely do not use secret APIs.

People were complaining that MS had poor developer support. I believe it has been quite the opposite from the beginning; it is, in fact, the strong developer support and powerful APIs as well as comprehensive documentation of those APIs that have made MS the market leader; the MSDN, for example, was started, in some fashion, almost 2 decades ago. Is there an equivalent Apple development community?

The windows API has remained relatively consistent up through windows 7. The Apple OSX switch, and every update after, completely breaks every Mac application build for previous builds. yeah, that's developer and User friendliness.

Of course, the common response is that the OSX switch was impossible to make API compatible.

Why? the NT kernel and architecture is at least as different, and MS was able to use the SAME APIs, with minor changes that were well documented. And in most cases, it included "compatibility shims" for those applications unaware of the changes (namely 16-bit programs) so they could run as well. the documentation and same API are called "developer friendly" keeping common applications running on a completely separate architecture, even though they are the competitions application ( for example, wordperfect) is called "user friendliness".

the Mac OS, both traditional and OSX, I think are pretty good operating systems, but many of their users fool themselves into thinking they are more user-friendly then Windows. This may be the case for a single version, but when updating the minor version of your OSX causes every single application you have to require a new install or a new version as well it puts a little stress on that concept. There is, however, one saving grace for development, at least on the OSX platform, from what I understand "XCode" is included with OSX, and therefore developing applications on OSX is free (Windows requires the purchase of something like Visual Studio or the download of one of many equivalents), and they finally have a developer-oriented site. However- Windows has had a developer oriented market face since the earliest betas of windows, Apple only relatively recently put up a strong developer oriented community.
I was trying to dereference Null Pointers before it was cool.

Geek-9pm

    Topic Starter

    Mastermind
  • Geek After Dark
  • Thanked: 1026
    • Gekk9pm bnlog
  • Certifications: List
  • Computer: Specs
  • Experience: Expert
  • OS: Windows 10
Re: Microsoft violated the Constitution?
« Reply #61 on: November 16, 2009, 08:56:22 PM »
BC, most of what you say is true. But you make some statements that you know nothing about. Have you really read the whole SDK from top to bottom for any Windows version? Are you now on the MS payroll? You are starting to speak like their PR department.
Fat. There were undocumented entry points in the OS that MS used but were not documented.  Can I prove it? No, I don't have to. There were undocumented bur known. And if I wee to document them I would violate the EULA. But he relevant question should be; "Could MS have had an advantage by knowing thins about the OS that others did not know?" If you answer 'yes they could,' then you might as well say they did. MS is a very aggressive hard-ball player. They do not miss a chance to get the upper  hand.

BC_Programmer


    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: Microsoft violated the Constitution?
« Reply #62 on: November 16, 2009, 09:38:25 PM »
True; there are exports that require an ordinal value; there are a number of undocumented functions that I have used before in shdocvw.dll, at the very least.

On my Vista PC I am using now, I get the following from dumpbin /exports

Code: [Select]
Microsoft (R) COFF/PE Dumper Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file comctl32.dll

File Type: DLL

  Section contains the following exports for COMCTL32.dll

    00000000 characteristics
    47918E42 time date stamp Fri Jan 18 21:44:34 2008
        0.00 version
           2 ordinal base
         420 number of functions
         118 number of names

    ordinal hint RVA      name

        401    0 00021A2C AddMRUStringW
        400    1 0002178D CreateMRUListW
          8    2 0000BC3B CreateMappedBitmap
         12    3 000231D8 CreatePropertySheetPage
         18    4 000231D8 CreatePropertySheetPageA
         19    5 000231BE CreatePropertySheetPageW
         20    6 0002861E CreateStatusWindow
          6    7 0002861E CreateStatusWindowA
         21    8 000285E1 CreateStatusWindowW
          7    9 0002A178 CreateToolbar
         22    A 0002A091 CreateToolbarEx
         16    B 0002D72F CreateUpDownControl
        331    C 00015262 DPA_Clone
        328    D 00006E89 DPA_Create
        340    E 00006EA1 DPA_CreateEx
        337    F 0000727C DPA_DeleteAllPtrs
        336   10 00007225 DPA_DeletePtr
        329   11 00006DD7 DPA_Destroy
        386   12 00006E31 DPA_DestroyCallback
        385   13 00006E55 DPA_EnumCallback
        332   14 00006D45 DPA_GetPtr
        333   15 0002E5E7 DPA_GetPtrIndex
        330   16 00006EF5 DPA_Grow
        334   17 00006D6F DPA_InsertPtr
          9   18 0002E9F5 DPA_LoadStream
         11   19 0002EB42 DPA_Merge
         10   1A 0002E626 DPA_SaveStream
        339   1B 00014F15 DPA_Search
        335   1C 0001578B DPA_SetPtr
        338   1D 00013DBC DPA_Sort
        320   1E 000150A2 DSA_Create
        327   1F 0002E5B5 DSA_DeleteAllItems
        326   20 0002E961 DSA_DeleteItem
        321   21 00015070 DSA_Destroy
        388   22 000159B2 DSA_DestroyCallback
        387   23 000159D6 DSA_EnumCallback
        322   24 0002E57C DSA_GetItem
        323   25 00015047 DSA_GetItemPtr
        324   26 000150D7 DSA_InsertItem
        325   27 0002E8D7 DSA_SetItem
        413   28 00015447 DefSubclassProc
         23   29 00022C79 DestroyPropertySheetPage
         24   2A 0006C0A0 DllGetVersion
         15   2B 0002F2DE DrawInsert
         25   2C 00029258 DrawStatusText
          5   2D 00029258 DrawStatusTextA
         26   2E 00029235 DrawStatusTextW
        403   2F 00021E62 EnumMRUListW
         27   30 000320B7 FlatSB_EnableScrollBar
         28   31 00031EFD FlatSB_GetScrollInfo
         29   32 00031CBB FlatSB_GetScrollPos
         30   33 00031D17 FlatSB_GetScrollProp
         31   34 00031E7B FlatSB_GetScrollRange
         32   35 000322AC FlatSB_SetScrollInfo
         33   36 0003215B FlatSB_SetScrollPos
         34   37 0003237B FlatSB_SetScrollProp
         35   38 000321D0 FlatSB_SetScrollRange
         36   39 00031FC9 FlatSB_ShowScrollBar
        152   3A 000217A8 FreeMRUList
          4   3B 00032A8C GetEffectiveClientRect
         37   3C 00032BD7 GetMUILanguage
         38   3D 00066E78 ImageList_Add
         39   3E 00067658 ImageList_AddIcon
         40   3F 0000C6B7 ImageList_AddMasked
         41   40 00066CE7 ImageList_BeginDrag
         42   41 00066F4B ImageList_Copy
         43   42 0000CB8E ImageList_Create
         44   43 000078A6 ImageList_Destroy
         45   44 00065F59 ImageList_DragEnter
         46   45 00065FB2 ImageList_DragLeave
         47   46 00065F87 ImageList_DragMove
         48   47 00065FDA ImageList_DragShowNolock
         49   48 000104F7 ImageList_Draw
         50   49 0000CC15 ImageList_DrawEx
         51   4A 0000916D ImageList_DrawIndirect
         52   4B 0000D09F ImageList_Duplicate
         53   4C 00065F1B ImageList_EndDrag
         54   4D 0000F68E ImageList_GetBkColor
         55   4E 00066CB4 ImageList_GetDragImage
         56   4F 000670E3 ImageList_GetFlags
         57   50 00066F04 ImageList_GetIcon
         58   51 00007F45 ImageList_GetIconSize
         59   52 00008037 ImageList_GetImageCount
         60   53 0000D12F ImageList_GetImageInfo
         61   54 00066DED ImageList_GetImageRect
         62   55 00014DFC ImageList_LoadImage
         63   56 00014DFC ImageList_LoadImageA
         64   57 00014E4A ImageList_LoadImageW
         65   58 00066FE5 ImageList_Merge
         66   59 0000D177 ImageList_Read
         67   5A 00066EBF ImageList_Remove
         68   5B 0000D0E4 ImageList_Replace
         69   5C 00007FD5 ImageList_ReplaceIcon
         70   5D 0000BBE5 ImageList_SetBkColor
         75   5E 00066C60 ImageList_SetDragCursorImage
         76   5F 00068775 ImageList_SetFilter
         77   60 00067054 ImageList_SetFlags
         78   61 00066F9D ImageList_SetIconSize
         79   62 00066E33 ImageList_SetImageCount
         80   63 00007F8D ImageList_SetOverlayImage
         81   64 00066D95 ImageList_Write
         17   65 000045C1 InitCommonControls
         82   66 00007010 InitCommonControlsEx
         83   67 00032BAA InitMUILanguage
         84   68 0003265D InitializeFlatSB
         14   69 0002F1CB LBItemFromPt
         13   6A 0002F713 MakeDragList
          2   6B 000327C3 MenuHelp
         85   6C 00028303 PropertySheet
         86   6D 00028303 PropertySheetA
         87   6E 000282EB PropertySheetW
         88   6F 00008145 RegisterClassNameW
        412   70 00015863 RemoveWindowSubclass
        410   71 000155C8 SetWindowSubclass
          3   72 000329C7 ShowHideMenuCtl
        236   73 00007363 Str_SetPtrW
         89   74 00032530 UninitializeFlatSB
         90   75 00035A6E _TrackMouseEvent
         71      000072BC [NONAME]
         72      00021FAB [NONAME]
         73      000072D5 [NONAME]
         74      00021FD7 [NONAME]
        151      0002191A [NONAME]
        153      00021BD8 [NONAME]
        154      00021EE8 [NONAME]
        155      000219F1 [NONAME]
        156      00021C09 [NONAME]
        157      000218AD [NONAME]
        163      00022D79 [NONAME]
        164      00025029 [NONAME]
        167      00021CBB [NONAME]
        169      00021834 [NONAME]
        233      0002E875 [NONAME]
        234      0002ECA0 [NONAME]
        235      0002E80E [NONAME]
        341      0003315D [NONAME]
        342      00017B3C [NONAME]
        350               [NONAME] (forwarded to SHUNIMPL.#78)
        351               [NONAME] (forwarded to SHUNIMPL.#79)
        352               [NONAME] (forwarded to SHUNIMPL.#80)
        353               [NONAME] (forwarded to SHUNIMPL.#81)
        354               [NONAME] (forwarded to SHUNIMPL.#82)
        355               [NONAME] (forwarded to SHUNIMPL.#83)
        356               [NONAME] (forwarded to SHUNIMPL.#84)
        357               [NONAME] (forwarded to SHUNIMPL.#85)
        358               [NONAME] (forwarded to SHUNIMPL.#86)
        359               [NONAME] (forwarded to SHUNIMPL.#87)
        360               [NONAME] (forwarded to SHUNIMPL.#88)
        361               [NONAME] (forwarded to SHUNIMPL.#89)
        362               [NONAME] (forwarded to SHUNIMPL.#90)
        363               [NONAME] (forwarded to SHUNIMPL.#91)
        364               [NONAME] (forwarded to SHUNIMPL.#92)
        365               [NONAME] (forwarded to SHUNIMPL.#93)
        366               [NONAME] (forwarded to SHUNIMPL.#94)
        367               [NONAME] (forwarded to SHUNIMPL.#95)
        368               [NONAME] (forwarded to SHUNIMPL.#96)
        369               [NONAME] (forwarded to SHUNIMPL.#97)
        372               [NONAME] (forwarded to SHUNIMPL.#98)
        373               [NONAME] (forwarded to SHUNIMPL.#99)
        374               [NONAME] (forwarded to SHUNIMPL.#100)
        375               [NONAME] (forwarded to SHUNIMPL.#101)
        376               [NONAME] (forwarded to SHUNIMPL.#102)
        377               [NONAME] (forwarded to SHUNIMPL.#103)
        382      0000F8B2 [NONAME]
        383      0002EFCA [NONAME]
        384      00033F58 [NONAME]
        389      0006876B [NONAME]
        390      00067099 [NONAME]
        402      00021935 [NONAME]
        404      00021471 [NONAME]
        411      0002ED2F [NONAME]
        414      00032DDD [NONAME]
        415      0006504E [NONAME]
        416      00064CA3 [NONAME]
        417      00063B7B [NONAME]
        418      00063597 [NONAME]
        419      000637D6 [NONAME]
        420      00063892 [NONAME]
        421      00063C71 [NONAME]

  Summary

        3000 .data
        5000 .reloc
        7000 .rsrc
       75000 .text


Now, we have a lot of [NONAME] entries in there, who knows what they are? they could easily be super secret APIs.


However!


there is also a API monitor available from http://www.rohitab.com/downloads; let us see, if some programs might use some of the "secret" symbols!


Oh... err, nevermind. that one only shows documented API's... curses!

Well, anyway; I was referring specifically to the claim- for example, as I stated- commandbar controls. Commandbars are contained in mso... well actually I forget the filename, but they are contained in a DLL. this DLL is part of MS office- not a part of windows, and therefore I see no reason why MS would need to document it.

some early claims of this sort are of DoubleSpaces use of undocumented DOS functions. However, since DoubleSpace was in fact a part of DOS (traditionally speaking) I don't think it's something that would be unexpected; and Stac trying to reverse engineer these undocumented functions which are really a Secret interface between one comprises two parts of the same operating system can be said to be a trade secret.



However, I also found this site:

http://boycottnovell.com/wiki/index.php/Microsoft_developers_used_undocumented_APIs

if these really are E-mails amongst MS staff- and I have no real reason to believe otherwise- it must be true that they did, indeed use undocumented APIs. The states reason is to gain competitive advantage- but nobody can really be sure of that, either. Could have been that one of the programmers was used to having Windows Source Access and remembered a useful function.

Wouldn't it be hilarious if the "undocumented" routines were pretty much just wrappers around C runtime functions, like some of the functions in kernel32.dll? and All this was caused by some goof who was used to using them?


Also, for IE, it's an interesting twist game- since MS "claimed" it was a part of the OS, it "should" be able to use the same undocumented APIs that- say, control panel or the display applet uses. I don't think this is true, IE should be a separate product.


On the other hand, IE hasn't really gotten any better from any use of undocumented routines, anyway. I would imagine they stopped... or at least replaced the undocumented calls with their C-runtime equivalents (hee hee) for IE7.

Also it has been said that they were "pushing" IE by using it in Visual Studio; I really don't think that this was a purposeful move by MS- the IE browser control is the ONLY easily accessed and used Browser technology available; while it's true they could have found another way to display the information- I guess the temptation of HTML was too much to bear.

We can't say that it's a calculated move by MS when it could just as easily be inept management or programmer discipline.



I was trying to dereference Null Pointers before it was cool.

greywolf46



    Rookie

    Re: Microsoft violated the Constitution?
    « Reply #63 on: November 16, 2009, 10:06:08 PM »
    Nope.

    Its Southern Fried Chicken
    or Chicken Fried Steak.

    BC_Programmer


      Mastermind
    • Typing is no substitute for thinking.
    • Thanked: 1140
      • Yes
      • Yes
      • BC-Programming.com
    • Certifications: List
    • Computer: Specs
    • Experience: Beginner
    • OS: Windows 11
    Re: Microsoft violated the Constitution?
    « Reply #64 on: November 16, 2009, 10:13:22 PM »
    or Chicken Fried Steak.

    if your dyslexic maybe.
    I was trying to dereference Null Pointers before it was cool.

    Geek-9pm

      Topic Starter

      Mastermind
    • Geek After Dark
    • Thanked: 1026
      • Gekk9pm bnlog
    • Certifications: List
    • Computer: Specs
    • Experience: Expert
    • OS: Windows 10
    Re: Microsoft violated the Constitution?
    « Reply #65 on: November 17, 2009, 10:37:43 AM »
    Good morning BC, well, I waited for several hours and nobody else has added anything to this thread. Maybe somebody would like to make a note of how the United States Constitution protects the freedom of all and if anybody threatens the freedom of just one, the freedom of all that is in danger.

    Instead of just bloating up my own post, I'm going to give a link to many recent news items this year that still involve the Microsoft antitrust suit. All here are welcome to look over these links, and add some real comments about the recent news in the suit.This is not dead history. It's not over yet.

    Browse tag: Microsoft anti-trust case - Page 1

    BC_Programmer


      Mastermind
    • Typing is no substitute for thinking.
    • Thanked: 1140
      • Yes
      • Yes
      • BC-Programming.com
    • Certifications: List
    • Computer: Specs
    • Experience: Beginner
    • OS: Windows 11
    Re: Microsoft violated the Constitution?
    « Reply #66 on: November 17, 2009, 11:41:15 AM »
    One of the things that is really annoying, is when somebody says something about the constitution and assumes it applies to the world. Not that that's what you did here, you just reminded me of it.

    Would this "technical" documentation be available in locations outside of the jurisdiction of the DOJ or the Constitution, like Canada?


    BC, most of what you say is true. But you make some statements that you know nothing about. Have you really read the whole SDK from top to bottom for any Windows version? Are you now on the MS payroll? You are starting to speak like their PR department.

    I browsed the Apr 2000 snapshot for nearly 5 years; Accumulated a lot of random information through the KB articles, technical articles, backgrounders, etc.

    And yes, certain portions of the documentation- namely the shell extensions portion - are written for people that want to create a shell extension.

    A easy example is the documentation on Control Panel Applets. the  documentation is geared towards somebody hosting Control Panel Applets; what one needs to do is view the contract from the other side.

    Just to be clear- I'm not debating wether IE6 uses undocumented functions; I'm debating wether there is any real way to tell wether a program is using undocumented functions or not.

    Sure, we have dumpbin /exports; and dumpbin /imports; for internet explorer 7, I get the following from dumpbin /imports:


    Code: [Select]
    Microsoft (R) COFF/PE Dumper Version 9.00.21022.08
    Copyright (C) Microsoft Corporation.  All rights reserved.


    Dump of file iexplore.exe

    File Type: EXECUTABLE IMAGE

      Section contains the following imports:

        ADVAPI32.dll
                    401000 Import Address Table
                    40F038 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          77CC7908    22A RegCloseKey
          77CC765E    268 RegQueryValueExW
          77CC7BA1    25B RegOpenKeyExW
          77CA9850    24C RegEnumValueW
          77CC80C3    24A RegEnumKeyW
          77CB3D5A    278 RegSetValueExW
          77CB41F1    233 RegCreateKeyExW
          77CA3FB6    242 RegDeleteValueW
          77CA38CD    23E RegDeleteKeyW
          77CB48B4    262 RegQueryInfoKeyW
          77CB32D4    269 RegQueryValueW

        KERNEL32.dll
                    401030 Import Address Table
                    40F068 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          77F1140B    2B9 InitializeCriticalSection
          77E3D300    3DA SetErrorMode
          77E1A824    2AA HeapSetInformation
          77E1A84F    420 SetUnhandledExceptionFilter
          77F11B41     BF DeleteCriticalSection
          77E19C80    171 GetCommandLineW
          77E3ADF9    2FE LocalAlloc
          77E36B51    109 ExpandEnvironmentStringsW
          77E3AD76    302 LocalFree
          77E3D555     8F CreateMutexW
          77E3A6F9    1E7 GetLastError
          77E2FB56    360 RaiseException
          77E194DC    2F6 LoadLibraryA
          77E39800    470 WaitForSingleObjectEx
          77E110E8     7D CreateFileMappingW
          77E2F333    1F3 GetLongPathNameW
          77E09B95    1CC GetFileAttributesExW
          77E17CC2     52 CompareFileTime
          77E3A411    4B5 lstrcmpW
          77E19362    2F9 LoadLibraryW
          77E2FADC    2BA InitializeCriticalSectionAndSpinCount
          77E1DC12    1A9 GetCurrentDirectoryW
          77E397E0    46F WaitForSingleObject
          77E0B93F    245 GetSystemDefaultLCID
          77E39EC5    272 GetUserDefaultLCID
          77F18AF0     DA EnterCriticalSection
          77F18AB0    2F4 LeaveCriticalSection
          77E33CA6    39F SearchPathW
          77E37FA1    13A FindResourceW
          77E30723    275 GetUserDefaultUILanguage
          77DF701F    248 GetSystemDefaultUILanguage
          77E33DB4    14D FreeLibrary
          77E1A6E3    1EB GetLocaleInfoW
          77E3AECB     80 CreateFileW
          77E19109    2F8 LoadLibraryExW
          77E369FD    139 FindResourceExW
          77E36ADB    2FB LoadResource
          77E8FD89    449 UnhandledExceptionFilter
          77E3C905    1AA GetCurrentProcess
          77DF18EF    438 TerminateProcess
          77DF18C0    253 GetSystemTimeAsFileTime
          77E39706    26A GetTickCount
          77E3A660    359 QueryPerformanceCounter
          77E392A5    1F7 GetModuleHandleA
          77E30264    33F OutputDebugStringA
          77DF1929    23D GetStartupInfoW
          77E3943C    2BF InterlockedCompareExchange
          77DF1C5D    42C Sleep
          77E39428    2C2 InterlockedExchange
          77E368F0    30F MapViewOfFile
          77E3A651    1AB GetCurrentProcessId
          77E37267    338 OpenProcess
          77E3B65E     76 CreateEventW
          77E399F0    1AE GetCurrentThreadId
          77DF1BF3     98 CreateProcessW
          77E3A6D8    46D WaitForMultipleObjects
          77E3A995    44C UnmapViewOfFile
          77E39A32    4C1 lstrlenW
          77E3A804    1FA GetModuleHandleW
          77E3903B    222 GetProcAddress
          77E82467    3D3 SetDllDirectoryW
          77E3A640    3F4 SetLastError
          77E3AE8D     44 CloseHandle
          77E39782    37D ReleaseMutex
          77E13458    27B GetVersionExW
          77E3B27E    1F6 GetModuleFileNameW
          77E39BEB     56 CompareStringW

        GDI32.dll
                    401140 Import Address Table
                    40F178 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          77B696B9     3E CreateFontIndirectW
          77B67198    1E4 GetObjectW
          77B65A37     D0 DeleteObject

        USER32.dll
                    401150 Import Address Table
                    40F188 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          77D70AED    263 SendMessageW
          77D60EA7     2F CharNextW
          77D66B70     3A CharUpperW
          77D67A5F    17A GetUserObjectInformationW
          77D67A73    173 GetThreadDesktop
          77D810B0     A6 DialogBoxParamW
          77D72715    1BA IsDlgButtonChecked
          77D5CD8B     D1 EnableWindow
          77D8326E     D3 EndDialog
          77D80F23    277 SetDlgItemTextW
          77D5D472    11F GetDlgItem
          77D69CCB    1E4 LoadStringW
          77DAD6CF    1FF MessageBoxW
          77D59B28      6 AllowSetForegroundWindow
          77D80E38    25A SendDlgItemMessageW
          77D690AA    155 GetParent

        msvcrt.dll
                    401194 Import Address Table
                    40F1CC Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          708725BE     E1 __wgetmainargs
          70873D34    114 _cexit
          708C95EE    162 _exit
          708C3126     6A _XcptFilter
          70873C08    48F exit
          708FE600    3E7 _wcmdln
          7086C4E6    1D5 _initterm
          708C961D    101 _amsg_exit
          708F566D     D4 __setusermatherr
          70901880     F5 _adjust_fdiv
          70871790     B9 __p__commode
          7087179B     BE __p__fmode
          708717F4     D2 __set_app_type
          70869AC0    4EA memcpy
          7086A048    4EC memmove
          708B2F8E     37 ?terminate@@YAXXZ
          7087097D    127 _controlfp
          70869F69    3A6 _unlock
          70869F85    242 _lock
          70870D59    2EB _onexit
          7086A13B    156 _errno
          70869DF1     12 ??2@YAPAXI@Z
          70869DE1     14 ??3@YAXPAX@Z
          7086AEB1    564 wcsstr
          70869860    4EE memset
          7086ADCB    55B wcsncmp
          7086B971    3CE _vsnwprintf
          7086AC10    3EF _wcsicmp
          7086A2C3    3F9 _wcsnicmp
          7086B086    482 bsearch
          7086B4CA    469 _wtoi
          7086A23D    551 wcschr
          7086F8D1     8D __dllonexit

        ntdll.dll
                    40121C Import Address Table
                    40F254 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          77F09999    48B RtlUnwind

        SHLWAPI.dll
                    401224 Import Address Table
                    40F25C Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          6E7C0B36        Ordinal    24
          6E7BECA9        Ordinal   437
          6E7C0075     84 PathRemoveFileSpecW
          6E7C04F2     30 PathAppendW
          6E7CDEC3     78 PathQuoteSpacesW
          6E7BFE7B     B9 SHGetValueW
          6E7C1336    12A StrStrW
          6E7B1063    134 UrlApplySchemeW
          6E7A7C2E    13C UrlCreateFromPathW
          6E7BB3FB     36 PathCombineW
          6E7B4431    136 UrlCanonicalizeW
          6E7E5751        Ordinal   462
          6E7A87CF     6E PathIsURLW
          6E7B7F69     2C PathAddBackslashW
          6E7BF55D        Ordinal   158
          6E7B7ED3     B2 SHEnumValueW
          6E7BFEA5     C8 SHQueryValueExW
          6E7BECEB        Ordinal   154
          6E7BF2EA     D3 SHRegGetValueW
          6E7A873D     E0 SHSetValueW
          6E7B2556    12F StrToIntExW
          6E7A2B73     AA SHDeleteKeyW
          6E7B7EFE     98 PathUnquoteSpacesW
          6E7BED97     44 PathFindFileNameW

        SHELL32.dll
                    401288 Import Address Table
                    40F2C0 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          769711C4        Ordinal   147
          7693F693      3 CommandLineToArgvW

        ole32.dll
                    401294 Import Address Table
                    40F2CC Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          72C5035F     38 CoInitialize
          72C6AF2E     60 CoTaskMemFree
          72C6D271     64 CoUninitialize
          72C69689     5F CoTaskMemAlloc
          72C69EA6      F CoCreateInstance
          72C69BFA    12D StringFromGUID2
          72C4ED88     36 CoGetTreatAsClass

        urlmon.dll
                    4012B4 Import Address Table
                    40F2EC Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          727017F9        Ordinal   111

        iertutil.dll
                    4012BC Import Address Table
                    40F2F4 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          6E3124D0        Ordinal    81
          6E311A5F        Ordinal    85
          6E311815        Ordinal    79
          6E342FC0        Ordinal    28
          6E31656A        Ordinal    46
          6E3116FE        Ordinal    32
          6E31450C        Ordinal    44
          6E31242F        Ordinal    42
          6E314232        Ordinal    11
          6E31777A        Ordinal    31
          6E343A75        Ordinal     9
          6E3118AC        Ordinal    74

        VERSION.dll
                    4012F0 Import Address Table
                    40F328 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          4ACE16A1      4 GetFileVersionInfoSizeW
          4ACE19CE      5 GetFileVersionInfoW
          4ACE19A2      D VerQueryValueW

      Header contains the following bound import information:
        Bound to ADVAPI32.dll [49E03717] Fri Apr 10 23:22:15 2009
        Bound to KERNEL32.dll [49E037DD] Fri Apr 10 23:25:33 2009
          Contained forwarders bound to NTDLL.DLL [49E03821] Fri Apr 10 23:26:41 2009
        Bound to GDI32.dll [49E03728] Fri Apr 10 23:22:32 2009
        Bound to USER32.dll [49E0380E] Fri Apr 10 23:26:22 2009
        Bound to msvcrt.dll [49E0379E] Fri Apr 10 23:24:30 2009
        Bound to NTDLL.DLL [49E03821] Fri Apr 10 23:26:41 2009
        Bound to SHLWAPI.dll [49E037F1] Fri Apr 10 23:25:53 2009
        Bound to SHELL32.dll [49E037EC] Fri Apr 10 23:25:48 2009
        Bound to ole32.dll [49E037D7] Fri Apr 10 23:25:27 2009
        Bound to urlmon.dll [49E03809] Fri Apr 10 23:26:17 2009
        Bound to iertutil.dll [49E03758] Fri Apr 10 23:23:20 2009
        Bound to VERSION.dll [49E03812] Fri Apr 10 23:26:26 2009

      Section contains the following delay load imports:

        IEFRAME.dll
                  00000001 Characteristics
                  004101C0 Address of HMODULE
                  00410000 Import Address Table
                  0040EE8C Import Name Table
                  00000000 Bound Import Name Table
                  00000000 Unload Import Name Table
                         0 time date stamp

              004048C9                 Ordinal   101
              004048E0                 Ordinal   159

        MLANG.dll
                  00000001 Characteristics
                  004101C4 Address of HMODULE
                  0041000C Import Address Table
                  0040EE98 Import Name Table
                  00000000 Bound Import Name Table
                  00000000 Unload Import Name Table
                         0 time date stamp

              0040E90C                 Ordinal   123
              0040E8E4                 Ordinal   121

      Summary

            2000 .data
            1000 .reloc
           89000 .rsrc
            F000 .text


    It would appear, that genuinely speaking, internet explorer 7 uses undocumented functions. Here's one example:

    Quote
    SHELL32.dll
                    401288 Import Address Table
                    40F2C0 Import Name Table
                  FFFFFFFF time date stamp
                  FFFFFFFF Index of first forwarder reference

          769711C4        Ordinal   147
          7693F693      3 CommandLineToArgvW

    It's importing ordinal 147 from shell32.dll; now, the question is- does this mean the routine is undocumented?

    Actually- it IS documented. ordinal 147 of Shell32.dll is SHCLSIDFromString(), and it performs the exact same function as CLSIDFromString() (but with something common in the undocumented shell32 and shdocvw functions- no argument checking. They were undocumented for a reason.


    I'm sure you'll find this site interesting; lists a good number of undocumented routines in any number of Windows libraries:

    http://www.geoffchappell.com/viewer.htm?doc=studies/windows/shell/index.htm&tx=39

    It appears tyo be written in a Microsoft Necrostic... is Necrostic a word? I'm thinking, biassed against them. On the other hand, it does reveal a few interesting morsels. Let me examine one undocumented feature I found interesting.

    The Listview Control (which can be used by any number of applications) stores some view data in:

        *  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
        * HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced


    Any Listview control will load this data when it is created, or it received a WM_SETTINGSCHANGE message. There is, a caveat, as the author explains- when used as a control- the parent window will have to forward this message to the listview control. MS documents the forwarding of WM_SYSCOLORCHANGE, but makes no mention of the SETTINGSCHANGE message. He goes on to state that:

    Quote
    Yet the consequences of not forwarding either message are similar. Suppose for example that a user clears the “Use a background image for each folder type” setting while a List-View control shows a watermark. If the control’s parent forwards the WM_SETTINGCHANGED message, then the watermark disappears in accordance with the user’s wishes. Without forwarding, the watermark remains.

    Understandable, but at the same time; the "Folder options" dialog is used for Windows Explorer folder windows; what about listviews that display other data? Should the folder options dialog affect them as well? I won't debate wether it is undocumented, and it certainly should, but realistically speaking he overstates the consequences of this one.



    One of my main problems with the whole movement is that the majority of the "undocumented" functions are things like SHCanonicalizepath, and SHAppendPath, and any number if similar routines that are *censored* near useless. They are basic string manipulation for pete's sake. There are some that are simply aliases for already documented routines. For example-

    the "ShellDesktop" function returns a desktop object. This routine is clearly an alias for using ParseDisplayName on the root IFolder with the Desktop CLSID, which is documented (heck, I use it from VB6)
    I was trying to dereference Null Pointers before it was cool.

    Geek-9pm

      Topic Starter

      Mastermind
    • Geek After Dark
    • Thanked: 1026
      • Gekk9pm bnlog
    • Certifications: List
    • Computer: Specs
    • Experience: Expert
    • OS: Windows 10
    Re: Microsoft violated the Constitution?
    « Reply #67 on: November 17, 2009, 12:10:29 PM »
    Well BC, This issue goes way beyond what you see in the code.
    Let me have a bit of space here you to respond the one point you made.

    I had asked you if you had read all through the SDK for one of them Windows versions. You respond to that you had spent years reading through all the nodes and you found many different features that were somewhere in the Microsoft knowledge base or in some of the notes somewhere in the documentation. You have just made an important point. You are a fairly experienced programmer. It took you a long time to find this information. Microsoft already had the information available to its employees. Likely, they had indexed and compiled for their own use. And beyond that, they had direct access to the architects that had designed the system. Some of this has been gathered from e-mails that DOJ got from Microsoft. Some of the e-mails indicated there was a deliberate attempt to confuse the competition. The DOJ took the position that this was unfair use of the operating system. Because the information was buried in notes, it was considered to be undocumented. But it was really documented. Just hard to find. The DOJ charged that this was absolutely intentional on Microsoft's part. Much of the SDK is fairly easy to follow. But that information alone would not allow a developer, such as yourself, to create an application that would be on a par with something that Microsoft could produce. Some of this information is buried in the transcripts in the case. I suppose we should also accuse the DOJ of hindering public knowledge of this issue by the huge quantity of documents they produced. Anyway, what I wanted to say was that your response to my question makes the point. It was hard for others to get to the information that Microsoft had available to themselves.

    Okay, end of rant. Microphone off.



    The justice department got a judgment to the effect that MS used some unknown or hidden features to confuse the competition and get a foot into the marketplace in an unfair way. It was about IE and also the VM and other stuff.
    The issue is not just the value of unknown features, but to what extent it was a deliberate and effective restriction of the free market.

    Do you have accuse to the public documents?  BTW, in one place I found a reference accusing either Microsoft or somebody was making it hard to research this material using engines like Yahoo or Google. But that reference itself was buried in a book that is not in text format. I already gave that link.

    Did you read any of the links in the  PCWorld search page I gave? One was a Blog about how the new administration in the White House wants to pick up the MS suit and use it for some publicity.

    BC_Programmer


      Mastermind
    • Typing is no substitute for thinking.
    • Thanked: 1140
      • Yes
      • Yes
      • BC-Programming.com
    • Certifications: List
    • Computer: Specs
    • Experience: Beginner
    • OS: Windows 11
    Re: Microsoft violated the Constitution?
    « Reply #68 on: November 17, 2009, 01:05:17 PM »
    One thing that I've heard people say that MS uses "secret" API's for (by no means an official accusation by the DOJ or anything though) was the Right-click Context menu.

    It's painful... but not impossible. How painful? Painful enough that I made three backups on CD and external drives when I finally got it working. Working with PIDL's in VB6 is almost as bad as manual pointer management with it. Oh wait, that's what it is, heh.


    the MSDN library is available to all- I'm not sure if it had a web-based portal in 2000 like it does now, though. Also I believe it might have required a subscription (?) not sure.

    Basically; the whole thing boils down to the Office and other teams having access to the windows source, as well as being able to query the people who built it. Now, that being said, MS is a BIG company; finding the right person might be a pain, but logistics issues aside they will definitely have an easier time of it then an ISV or independent programmer would. Given the quality of some of the SH functions it's clear why they remained undocumented- they are freaking embarassing. the SH functions dealing with paths; the standard API's have a parameter that tells it how big the buffer is; the SH functions, don't. Not sure how the heck they work with it. I've heard they just assume that the buffer is MAX_PATH (defined as 240) characters long. Of course this means the SH functions will never work with Unicode paths... and in fact they do not, which is peculiar considering they also have unicode exports. maybe I called them wrong. Either way, as you said it wasn't necessarily the value of the functions, or was it? in order to gain an unfair advantage one would assume that these functions might actually not suck. That being said their are definitely some neat undocumented functions in some components; but I believe explorer, not IE, uses them (therefore they wouldn't fall under the whole middle-ware thing, I don't  think). Matt Pietrek has(or should I say had? I dunno) a penchant for using undocumented functions, too, and this was in a MS published magazine. (I believe his column was called "Under the Hood").


    Another interesting question is wether they are being cooperative on both sides. For this I will invent a undocumented feature scenario (although it could easily be implemented by some MS program somewhere). I speak of the undocumented Window Structure.

    Window Handles are used ubiquitously to access Windows attributes, to perform operations on the window, and any number of things. It turns out that this handle is actually a pointer to an undocumented memory structure that holds countless tidbits of data on the Window; doubtless the Window functions access this structure.

    Now- perhaps without the User interface programmers knowledge, somebody else within microsoft might find this cool and perhaps use this undocumented structure. (how do they get the structure? Well, maybe they use their access rights and see the declaration themselves). Countless others have reverse-engineered the window structure too.


    In this case, if the MS product has competition and works better and or is more integrated because of this, it's safe to say that they gained an unfair advantage.

    But remember- as far as the user interface programmers are concerned, the structure is undocumented- and for good reason, so they can forget about compatibility- all access to windows should be through handles and functions like MoveWindow and GetWindowLong() and GetWindowLong() and so forth. (for example, NT4->2000 introduced "Layer attributes" this likely added a number of members to this structure and maybe even changed the alignment and layout too); I believe this has actually occured, but I cannot recall the program name. (maybe it was spy++.... can't remember). Anyway, so that program using the undoc'd technique is released.

    But what happens with a new version of windows that changes that undoc'd structure? the program copies it expecting a certain format, who knows what happens if it's in the wrong format.

    MS will likely, after investigating the issue, smack the programmer who did it originally and add a Application Compatibility hack to get the program working. Now, this could easily be construed as undue benefit, but it bears mention that the majority of programs in this compat database are actually non-MS programs; and a large number of them try to use the very same type of undocumented techniques.

    Essentially, the allegation is that the various teams at MS work together on various projects- this is clear simply because IE uses a number of undocumented routines, regardless of the nature of said routines, there is no way those routines could be used by the IE team unless the IE team was aware of them; and since shdocvw (and the various other libraries the routines were in) were part of the windows OS, they must have been created by somebody working on the Windows source.

    It wasn't necessarily that MS had done any damage (R.I.P netscape) but that there was potential to make these routines even more "useful" to the program using them, and yet remain undocumented. Vast swathes of windows functionality could be left undocumented in this fashion, and called by MS programs for a competitive edge.I think this is the point the allegations are putting forward.

    I was trying to dereference Null Pointers before it was cool.

    Geoff Chappell

    • Guest
    Re: Microsoft violated the Constitution?
    « Reply #69 on: May 28, 2010, 04:38:22 PM »
    Understandable, but at the same time; the "Folder options" dialog is used for Windows Explorer folder windows; what about listviews that display other data? Should the folder options dialog affect them as well? I won't debate wether it is undocumented, and it certainly should, but realistically speaking he overstates the consequences of this one.

    Leave aside that even if what you say were true, there would still be an effect for shell extensions. Consider instead that the "Use a background image for each folder type" option is not in the Folder Options: as noted plainly on my page that you quote from, the option is on the Visual Effects tab of the Performance Options dialog, as reached from System Properties. It is not just for Windows Explorer folder windows. It applies to all List-View controls in all programs, whether you do or don't like that it does or should. (No List-View control can get a watermark drawn if ListViewWatermark in the registry evaluates as false.)

    Of course, few software manufacturers will care, let alone suffer, if a List-View control in their product keeps its watermark after the user turns off this option. If the user closes the program and restarts, the watermark will not be drawn, in (delayed) accordance with the user's expressed wish. The consequences are just those of programming pride: do you like that your program respects the user's wishes immediately that the user expresses them? If so, then you would want to know that what Microsoft's documentation tells you about forwarding WM_SYSCOLORCHANGE applies also to WM_SETTINGCHANGED. How is this overstated?

    As for your suggestion of bias, all I can say is that if I am biased I have come to it from years of gathering small bits of evidence that might otherwise go unnoticed but which I think accumulate into a significant effect. You'll find few others who take anything like the same care with what they call evidence when commenting on software.

    Geek-9pm

      Topic Starter

      Mastermind
    • Geek After Dark
    • Thanked: 1026
      • Gekk9pm bnlog
    • Certifications: List
    • Computer: Specs
    • Experience: Expert
    • OS: Windows 10
    Re: Microsoft violated the Constitution?
    « Reply #70 on: May 28, 2010, 05:59:02 PM »
    WOW!lTthis thread is still going!

    About Pietrek.:
    Quote
    Matt Pietrek (born 27 January 1966) is a computer  specialist and author specializing in MS Windows.

    Pietrek has written several books on the subject and, for eight years, wrote the column "Under the Hood" in MSJ (and subsequently) MSDN Magazine. As of April 2004 he has been working at Microsoft, initially on Visual Studio.
    ...
    http://en.wikipedia.org/wiki/Matt_Pietrek
    So we would not expect his remarks to be critical of MS.

    IMO this issue is not how easy or how hard it is to write for the MS API. The causation from MS critics is that MS makes it hard to third parties to write cross-platform code. That would only be an ethical issue unless some real proof  could be given that  MS harmed other companies by monopolistic practitioners. Thus would mean what they say about their products.

    If a very large cooperation talks about a new product, and if the product could posh others out of the marketplace, it is a violation of free speech if the statements were both false and are intended to defame or destroy the reputation of others. Or to control the market with falsehood.

    Aside from what the MS code does, MS has go to the point of preventing the distribution of code that it had once provided. Or preventing others from making needed adjustment to the code. Somebody already mentioned the potential problem with Uni Code in the API.
    Here is a relevant story  the came up just six months ago. (November 2009)
    Quote
    PCWorld
    China Rules Microsoft Violated Intellectual Property Rights
    Owen Fletcher, IDG News Service
    Nov 16, 2009 11:10 pm

    A Beijing court has ruled that Microsoft violated a Chinese company's intellectual property rights in a case over fonts used in past Windows operating systems, state media said Tuesday.

    The Beijing Number One Intermediate People's Court this week ordered Microsoft to stop selling versions of Windows that use the Chinese fonts, state broadcaster CCTV said. Microsoft plans to appeal the case, a company representative said in a statement.

    The ruling comes as Barack Obama visits China for his first time as U.S. president. The visit has brought renewed focus on tensions over piracy and the trade of high-tech products between the countries. A U.S. business association this week appealed to Obama for further efforts to protect intellectual property rights in China, where pirated copies of DVDs and computer software including Windows are widely sold on streets and in bazaars.
    ....
    Full Story

    My question:
    Would you say the above PC World story free of bias?