2008 Microsoft Corporation. All rights reserved.
All updates for Windows CE .NET 4.2 require the following:
1) Platform Builder .NET 4.2 is installed on the machine.
2) Upon installing the update, the platforms must be rebuilt.
Please download the file(s) most appropriate for your installation, as follows:
WinCEPB42-071231-Product-Update-Rollup-ARMV4I.MSI | For installation based upon ARMV4I processors |
WinCEPB42-071231-Product-Update-Rollup-ARMV4.MSI | For installation based upon ARMV4 processors |
WinCEPB42-071231-Product-Update-Rollup-MIPSII_FP.MSI | For installation based upon MIPSII-FP processors |
WinCEPB42-071231-Product-Update-Rollup-MIPSII.MSI | For installation based upon MIPSII processors |
WinCEPB42-071231-Product-Update-Rollup-MIPSIV_FP.MSI | For installation based upon MIPSIV-FP processors |
WinCEPB42-071231-Product-Update-Rollup-MIPSIV.MSI | For installation based upon MIPSIV processors |
WinCEPB42-071231-Product-Update-Rollup-SH3.MSI | For installation based upon SH3 processors |
WinCEPB42-071231-Product-Update-Rollup-SH4.MSI | For installation based upon SH4 processors |
WinCEPB42-071231-Product-Update-Rollup-X86.MSI | For installation based upon X86-based processors |
This package will install all updates directly to the build environment specified by the original Platform Builder installation. This is specified by the following registry key: HKLM\Software\Microsoft\Platform Builder\&!&\Directories - "OS Install Root". By default, a backup of all updated files will be maintained at the following location: %_WINCEROOT%\Updates\Backup. You can remove any files from this directory at your choosing.
If you have trouble installing package on Windows Vista, open command prompt, choose "Run as administrator", confirm UAC prompt, launch an update.
If you have installed previous updates, this package will update your build environment to include the latest files for this component.
If this message is displayed, it means that you have an update installed with a later version of the files then those that are being installed. You already have the updates mentioned in this document including some updates released later. This message is displayed to prevent accidental overwrite of the latest update to that particular component.
Note:
If source files have been modified by a user, they may not be overwritten by the files provided with the updates if Date Modified of the files on user's machine is newer.
If you uninstall or repair Platform Builder .NET 4.2, you have to remove corresponding WinCEPBxx.ini file located in %WINDIR%.
Component: 1394 Bus
050222_KB894379 - Incorrect data may be read from IEEE1394 if scatter/gather buffer is not 32-byte aligned.
Component: 1394 SBP-2
041105_KB885273 - Windows CE .NET 4.2 may not always enforce data DWORD alignment requirement of 1394 SBP-2 protocol. This may result in some issues when reading/writing files.
050318_KB893309 - System lockup may occur if IEEE1394 HDD is removed while being used for reading/writing a file.
050318_KB893309 - A memory leak may occur when IEEE 1394 HDD is attached/detached several times.
Component: ActiveSync
040409_KB838793 - Files synchronized from an ActiveSync host to an ActiveSync client may be deleted from the host when the client is reconnected.
040413_KB838789 - This is an update to a memory leak that may occur after ActiveSync synchronizes the data and disconnects from the server.
Component: AFD
040527_KB842445 - Windows CE .NET 4.2 caches DNS records with a Time-To-Live of "0". This may result in a delay in retrieving data from the DNS server.
040527_KB842445 - A failure may occur when trying to upload a file larger then 16034 bytes to the HTTPS site.
040721_KB870648 - When using DHCP, manually configured WINS server addresses may get replaced with the WINS server addresses from the DHCP server.
Component: ATL
040813_KB884025 - A memory leak may occur on MIPS Floating Point and SH4 platforms when calling IDispatch::Invoke().
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
others\atl\include\ATLCOM.H
Component: Bluetooth
040402_KB838756 - Some Bluetooth headsets may not work over winsock.
040402_KB838756 - If a device rejects a Bluetooth beam sent by another device, it may not be able to accept other beams sent to it by that device.
040402_KB838756 - Some hands-free devices may not work with the Windows CE .NET 4.2 Bluetooth stack.
040402_KB838756 - An API has to be included to allow accepting Bluetooth SCO connections.
040402_KB838756 - COM port emulation should only allow one client connection over the virtual serial port created by the Bluetooth.
040402_KB838756 - This is an update to improve handling of corrupted packets and requests for retransmission by Bluetooth CSP.
040402_KB838756 - AnyCOM hands-free set may not work with the Windows CE .NET 4.2 hands-free profile.
040622_KB843371 - When pairing, Bluetooth devices need to exchange Class Of Device (COD) values.
050126_KB891190 - This update resolves an issue with the SDP stack that may keep the device from connecting to the U-Connect series of hands-free kits.
050201_KB892510 - The stack may not obey the hardware's limit to a number of data packets pending in the hardware and may stop functioning.
050201_KB892510 - When more than one Bluetooth connection is active and one of the connections fails, the "good" connection may get destroyed by the stack and close down.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\oak\drivers\bluetooth\transports\bcsp\csr\hcibcsp.cpp
public\common\oak\inc\bt_ioctl.h
public\common\oak\lib\ARMV4\debug\btdrt.def
public\common\oak\lib\ARMV4\retail\btdrt.def
public\common\oak\lib\ARMV4I\debug\btdrt.def
public\common\oak\lib\ARMV4I\retail\btdrt.def
public\common\oak\lib\MIPSII\debug\btdrt.def
public\common\oak\lib\MIPSII\retail\btdrt.def
public\common\oak\lib\MIPSII_FP\debug\btdrt.def
public\common\oak\lib\MIPSII_FP\retail\btdrt.def
public\common\oak\lib\MIPSIV\debug\btdrt.def
public\common\oak\lib\MIPSIV\retail\btdrt.def
public\common\oak\lib\MIPSIV_FP\debug\btdrt.def
public\common\oak\lib\MIPSIV_FP\retail\btdrt.def
public\common\oak\lib\SH3\debug\btdrt.def
public\common\oak\lib\SH3\retail\btdrt.def
public\common\oak\lib\SH4\debug\btdrt.def
public\common\oak\lib\SH4\retail\btdrt.def
public\common\oak\lib\x86\debug\btdrt.def
public\common\oak\lib\x86\retail\btdrt.def
public\common\sdk\inc\bt_api.h
private\winceos\COMM\bluetooth\rfcomm\portemu.cxx
private\winceos\COMM\bluetooth\rfcomm\rfcomm.cxx
private\winceos\COMM\bluetooth\runtime\btdrt.cxx
private\winceos\COMM\bluetooth\runtime\btdrt.def
private\winceos\COMM\bluetooth\sys\btd.cxx
private\winceos\COMM\bluetooth\tdi\tdi.cxx
public\common\oak\drivers\bluetooth\sample\btdc\btclient.cxx
public\common\oak\inc\bt_ddi.h
private\winceos\COMM\bluetooth\hci\base\hci.cxx
public\common\oak\drivers\bluetooth\sample\btcp\btcp.cxx
private\winceos\comm\bluetooth\sdp\base\btsdpcon.cpp
private\winceos\comm\bluetooth\sdp\inc\btsdp.h
Component: CEDRMUTIL
050218_KB894259 - An error may occur when attempting to transfer DRMv7 protected media file to a device over the ActiveSync.
050310_KB894187 - DRM media files will only sync successfully if they are saved to a storage device named Storage Card.
Component: CELOG
040602_KB826381 - An untrusted application cannot be used with CeLog that may log worthless data for the timestamp.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\COREOS\nk\celog\celog.c
private\winceos\COREOS\nk\kernel\profiler.c
Component: CEMGR
040601_KB839926 - When debugging an application via the ActiveSync and stopping the debug process while the application still runs, eVC 4.0 may hang. A message "Server is busy" will be displayed.
Component: Certificates
030430_Q820116 - Web pages that attempt to authenticate (via https://) using Equifax certificates fail to authenticate. This update contains an updated system root store with the latest Secure Certificate Authority certificate.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\test\gwes\gdi\gdiapi\global.cpp
Component: CETK
030721_KB823101 - This change allows a user to specify one specific com port to test. The test now takes a single-digit number of the com port as a parameter to be tested. In order to pass the parameter from the tux command line to the test dll, the user have to use tux's -c syntax. For more information on the -c tux syntax, please see the "Tux Client" topic in the Windows CE .NET Test Kit help file. For example, in order to instruct the test to use Com3, modify the command line in the CETK user interface so it reads tux -o -d serdrvbvt -c"3".
030728_KB823100 - The Graphics Device Interface Test (gdiapi) can create a bitmap of the device display on "CheckScreenHalves" or "Driver verification" failures. The default behavior with bitmap creation enabled is to store the bitmap in the release directory via KITL.
If the user is testing a device that does not have a KITL connection to Platform Builder, the user may specify a location accessible to the device, such as a storage card attached to the device or a writable network share. To enable bitmap creation in the release directory, pass the parameter /o to the test dll.
To enable bitmap creation in a user specified location, pass /o followed by the path where the bitmap should be stored. The bitmaps can be saved to any location the device has a write access to. Please be certain the location exists before attempting to run the test.
To pass the parameter from the tux command line to the test dll, use the tux -c parameter, encapsulating the full text of the /o option in the double quotes.
For example, to save the test failure bitmaps to a compact flash card, append -c"/o \storage card" to the existing command line as it appears in the CETK. The full command line would appear as 'tux -o -d gdiapi -c"/o \storage card"'.
031107_KB830299 - This update installs files necessary for the Winsock CETK tests.
031119_KB831529 - A missing font may cause some GDI CETK automation tests to fail.
050712_KB902392 - Arguments may not get passed from the .ini file to tux.
The file(s) with the new source code changes for this component can be found in
the directory %_WINCEROOT%\:
private\test\gwes\gdi\gdiapi\global.cpp
private\test\gwes\gdi\gdiapi\main.cpp
private\test\gwes\gdi\gdiapi\verify.cpp
Component: Codecs
050225_KB893252 - An exception may occur when playing corrupted MP3 file.
Component: Comm
030513_KB815290 - ReTransmit timer is not stopped when a Leave is requested from multicast Group which may result in Joining an unwanted multicast group.
030616_KB822253 - Cxport free lists may grow to consume a disproportionate share of system memory.
030718_KB822607 - ARM compiler may emit a conditional branch where an unconditional branch should execute.
030718_KB822609 - A compiler may generate a code that leads to data alignment exception on ARMV4.
030808_KB826006 - If multiple Access Points are configured with SSIDs that are similar, devices may fail to connect to the wireless network when roaming from one area to another selecting a different AP when the SSID of the new AP is a subset of the previous AP's SSID. For example, if there is one AccessPoint and the other is AccessPoint1, ZeroConfig may confuse them. The UI will indicate the device is successfully associated with the new AP; but data transfer will fail.
030930_KB827824 - When Windows 2003 Server PEAP Fast Reconnect option is enabled for 802.1x authentication, Windows CE 4.2 wireless clients may not be able to connect.
031003_KB828084 - Packets may be lost on the receiving end when sending a stream of data to a Windows CE .Net 4.2 device above the rate of approximately 1.2Mb/sec. The loss may increase as the rate increases.
031003_KB828084 - It may take up to two minutes to connect to a router that supports IGMPv2 and not IGMPv3. To avoid this delay, a user may set the initial default IGMP version with the following registry key:
[HKEY_LOCAL_MACHINE\Comm\Tcpip\Parms]
"IGMPVersion"=dword:3
If the value does not exist, IGMPv3 will be used to connect to a router.
If the value is set to dword:2, it will use IGMPv1 to connect to a router.
If the value is set to dword:3, it will use IGMPv2 to connect to a router.
031017_KB830560 - IPV6: Packets may be lost on the receiving end when sending a stream of data to a Windows CE 4.2 device above the rate of approximately 1.2Mb/sec. The loss may increase as the rate increases.
031022_KB830495 - Realtek 8139 driver packet loss may be severe when system is under a heavy load.
031027_KB830907 - This update allows enabling of the DNS proxy without the DHCP allocator.
031203_KB812950 - An internal deadlock may occur within NDIS. There is an additional information for this update at the end of the document.
031203_KB812950 - If the domain name returned in DHCP option 15 is greater than 51 characters, the DHCP client may not properly parse the option. There is an additional information for this update at the end of the document.
031204_KB832374 - Data Abort exception may occur when calling BthCreateSCOConnection() on ARMV4 and ARM4I retail builds and when another Bluetooth device comes in range.
040109_KB823839 - Connecting to a SLIP server then disconnecting from it may cause an exception and not allow a user to reconnect.
040128_KB834113 - When using statically assigned IP addresses, Windows CE .NET 4.2 may under some circumstances send a DNS query with an inverted IP address. This may cause the DNS query to time out. This update adds an internal check to prevent the DNS server address from being modified in this circumstance.
040312_KB836729 - When an ICS system allows public network access to a machine on the private network via port forwarding, other private network machines may not be able to access the publicly shared resource on the private network.
040331_KB839824 - This update addresses the issue of using FTP over the Internet Connection Sharing.
040616_KB842654 - Multiple EAP login windows may appear if the credentials are not entered prior to the EAP session timing out. Login windows may not get closed at session timeout leading to a possible low memory situation, and the device may hang.
040616_KB842654 - A PPP module may not send Authenticate-Request packages via RAS after the initial RAS authentication occurs using the CHAP authentication method.
050822_KB900092 - Winsock connections may get blocked after 256 connect/shutdown cycles.
071031_KB943516 - Passing an invalid address strings (char == base) to WSAStringToAddress may still result in a success return value.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\COMM\bluetooth\sys\btd.cxx
private\winceos\comm\bluetooth\hci\base\sources
public\common\oak\drivers\netui\getuser.c
public\common\oak\drivers\netui\netui.def
public\common\oak\inc\eap.h
public\common\oak\lib\ARMV4\debug\netui.def
public\common\oak\lib\ARMV4\retail\netui.def
public\common\oak\lib\ARMV4I\debug\netui.def
public\common\oak\lib\ARMV4I\retail\netui.def
public\common\oak\lib\MIPSII\debug\netui.def
public\common\oak\lib\MIPSII\retail\netui.def
public\common\oak\lib\MIPSII_FP\debug\netui.def
public\common\oak\lib\MIPSII_FP\retail\netui.def
public\common\oak\lib\MIPSIV\debug\netui.def
public\common\oak\lib\MIPSIV\retail\netui.def
public\common\oak\lib\MIPSIV_FP\debug\netui.def
public\common\oak\lib\MIPSIV_FP\retail\netui.def
public\common\oak\lib\SH3\debug\netui.def
public\common\oak\lib\SH3\retail\netui.def
public\common\oak\lib\SH4\debug\netui.def
public\common\oak\lib\SH4\retail\netui.def
public\common\oak\lib\x86\debug\netui.def
public\common\oak\lib\x86\retail\netui.def
Component: Common Controls
040421_KB840783 - CreateDialogIndirect may cause an access violation when trying to access the memory beyond the allocated memory.
Component: Compiler
030411_Q818453 - ARM compiler: From source code that simply sets the data members of an aligned structure, the optimizer generates code that does an unaligned store to memory:
10011090 str r0, [sp, #2]
SP is 32-bit aligned before the instruction is executed. The 2 bytes offset applied during the instruction pushes it off of the 32-bit alignment and generates the fault. If SP is modified to be 16-bit aligned before executing the instruction, there is no fault.
030715_KB822610 - MIPSIV performance improvements in regard to memory routines and string handling.
031124_KB830964 - SH4 32bit division results may be incorrect as a result of having been compiled with compiler switches /ox /ot (default retail build).
040119_KB822357 - ARM compiler may generate an erroneous code when run with optimization turned on.
040213_KB835932 - ARM compiler may not be able to produce an exception from DLL and catch it outside of DLL without invalidating the stack pointer.
040625_KB843622 - SHx compiler: In some cases the displacement offset in a switch statement is calculated incorrectly and may cause program execution to jump to an incorrect address.
050223_KB892639 - SH4 compiler only: If a function contains double precision operation and has an integer return value, it may generate an incorrect result.
050726_KB901157 - ARM, MIPS, SH compilers: An exception may occur when Minimize Size or Maximize Speed optimizations are selected.
050822_KB900092 - Winsock connections may get blocked after 256 connect/shutdown cycles.
051116_KB909973 - ARM processor only: Compiler may cause Datatype Misalignment exception.
Component: Core
030915_KB828098 - ARM family only: The ARM compiler may generate incorrect code for 64-bit multiplication when the operands are casted DWORD values. The problem may occur specifically when attempting to cast and multiply in a single step.
040316_KB835774 - ARM family only: Under certain circumstances display artifacts may be present.
070907_KB941089 - Null termination character is not included when calculating the length of input string and may result in incorrect return value.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\COREOS\core\dll\time.c
Component: Core GWES
050124_KB891119 - A deadlock between SetSystemPowerState and ExtEscape may occur. This may cause a white screen to appear on the device when the user flips open the clam shell device to receive the incoming call.
050921_KB908073 - Multiple calls to SendMessageTimeout may cause an exception.
The file(s) with the new public source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\coreos\gwe\mgdi\inc\gdiobj.h
Component: Cursor
040120_KB825431 - Mouse cursor may stay in resize mode after being moved over the Internet Explorer window that was opened in full mode.
061025_KB926878 - Wait cursor may not display because of race condition in GWES cursor window initialization.
Component: Database API
041112_KB887704 - Database indexes may get corrupted and result in CeDeleteRecord failure.
060309_KB914084 - Database search may fail to read some records if a database contains more than 16K records.
Component: DCOM
030925_KB826296 - Security issue resolved: Buffer overrun may happen when calling a function GetMachineName().
Component: Debugger
030829_KB824681 - Module and Symbol list may show incorrect address ranges when using eXDI.
Component: DHCP
030613_KB820920 - A Windows CE .NET 4.2 device's DHCP hostname may be restricted to 15 characters.
040505_KB841104 - DHCP server may fail to hand out an IP address if the DHCP server has moved to a different subnet.
041231_KB891434 - In certain circumstances a DHCP interface may get deleted by one thread before a second thread gets a chance to access it.
050125_KB892134 - This update resolves DHCP lockup that may occur with the wireless AP.
050204_KB891960 - With a Media Sense enabled NIC, if a DHCP lease expires while the client is disconnected, the client may still display a message box and attempt to renew the IP address.
050810_KB900465 - DHCP client may ignore DhcpSendOptions value set in the registry. This update corrects the issue and sends the user specified registry option.
051021_KB908788 - DHCP release packet may contain an invalid client ID.
060120_KB913486 - Under certain circumstances, particularly when roaming a WiFi network, DHCP may not acquire an IP address if the connection rapidly connects and disconnects.
070511_KB936198 - This update address failure to get an IP address when roaming in certain situations.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\COMM\dhcp\autonet.c
private\winceos\COMM\dhcp\dhcp.c
private\winceos\COMM\dhcp\dhcpp.h
private\winceos\COMM\dhcp\init.c
private\winceos\COMM\dhcp\packet.c
private\winceos\COMM\inc\dhcp.hprivate\winceos\comm\dhcp\globals.h
Component: Diffbin
030528_KB820257 - There was a remote case where Diffbin would fail. This is resolved by this update.
030528_KB820257 - Updating an XIP region may not work properly. Diffbin is using a hard-coded size for buffer space compressed regions.
030528_KB820257 - XDP updates created using diffbin.exe may be much larger than expected.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\coreos\nk\tools\romimage\diffbin\imgdata.cpp
Component: DirectDVD
040831_KB883511 - When configuring Display Aspect Ratio & Display Mode after starting DVD, an incorrect SubPicture may be displayed.
Component: DirectX
030523_KB821009 - Digital Rights Management (DRM) may not function due to a missing certificate.
030723_KB823873 - DVD media for regions other than region 1 may cause DVD player to hang.
030729_KB824029 - Multicast Streaming is broken over IPv6.
030729_KB824029 - This update adds FastStart support to Windows Media streaming.
030930_KB828691 - Windows Media Player video local playback times could be slow.
030930_KB828691 - The frame rate returned by DirectShow may not be very high and result in a poor video streaming.
030930_KB828691 - Windows Media Player local audio playback may stutter.
031210_KB831705 - Region 3 DVD may hang when performing a backward scan.
031216_KB830472 - Under certain circumstances, the network authentication dialog box may appear when attempting to stream MMS from Windows Media servers.
To disable the authentication prompt, the following registry key must be present:
[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectX\DirectShow\Networking\DoNotPromptForCreds]
040210_KB834334 - Some DVD videos may freeze when performing fast forward operation.
040216_KB822225 - This is an update to Windows Media Player.
Description of the issues addressed in this update:
· Improvements to the broadcast stream that decrease startup latency.
· Updates to the buffering startup time in order not to loose packets at the beginning of the streaming process.
· Add an ability to hold more buffered data for MSB streams.
· Improvements to the incomplete objects handling.
· Improvements to video DMO and overlay mixer interaction in order to make connections possible.
· Address macro-blocking issue that may occur with some encoded content.
040305_KB835871 - Windows Media Player downloads a large multimedia file to the Internet cache without checking for available space. If the file is too large to fit into the cache, only part of the file is downloaded, filling all of the available storage space, and no cleanup operation is ever called. Any subsequent attempts to cache remote media files for playback may result in an exception in DirectShow, and no other files of any type may be accessed or cached through the Internet.
040312_KB837648 - This is an update to improve license acquisition by Windows Media Player when an ASF file contains both a Content Encryption object and an Extended Content Encryption object .
A DRM non-silent acquisition occurs when a piece of content is DRM protected and the server has indicated that direct user interaction is required. This user interaction is initiated by the Windows Media Splitter results in the ShellExecuteEx() of a HTM page and the associated browser being launched. The HTM page contains information that will redirect the browser to the server page managed by the content provider. During this interaction the user can purchase the content and the Licensing server will send down the license to the device. In the browser the DRM OCX (cedrm2.dll) is loaded and the DRM license is consumed and written to the license store. At this point the total transaction is complete.
The problem however is that the end-user has been navigated away from the page where they were trying to play the content. To get back to the location would require some manual interaction from the User which is not a very acceptable model. What end-user would like to have happen is to be navigated back to the content that they want to play where it either begins playing or requires the push of the ‘Play’ button.
Inside the DRM OCX
The support for such a feature either has to come from the client side or the server side. Windows CE provide a way for the client to be notified that a DRM license has been successfully acquired. The OCX will call the GetExternal method of IDocHostUIHandler which will return an IDispatch interface from the host application of the browser. The final stage is for the OCX to call "LicenseAcquired" that has been exposed by the host application of the browser. The function has one parameter which is a BOOL where TRUE indicates that a license has been acquired and FALSE otherwise.
Inside the host application of the browser
To set up the proper calling sequence the host application of the browser must enable the "LicenseAcquired" method by first enabling an IDispatch interface to be returned.
// IDocHostUIHandler methods
STDMETHOD(GetExternal)(IDispatch **ppDispatch)
{ *ppDispatch = (IDispatch *)this; return S_OK ; }
Note that the application can implement a separate object for IDispatch requests instead of using ‘this’ in GetExternal.
When a license is acquired, the OCX initiates call to IDispatch::Invoke. Therefore inside your implementation of IDispatch::Invoke a new dispatch ID is required.
#define DISPID_LICENSEACQUIRED <nnn>
[id(DISPID_LICENSEACQUIRED), helpstring("Fired when License is acquired."), helpcontext(0x0000)]
HRESULT LicenseAcquired([in] VARIANT_BOOL varResult );
Now you can modify IDispatch::Invoke method on the following lines:
case DISPID_LICENSEACQUIRED :
VARIANT_BOOL fAcquired;
fAcquired = pdparams->rgvarg[0].boolVal;
LicenseAcquired( fAcquired ) ;
break ;
where definition of LicenseAcquired can be as follows:
HRESULT LicenseAcquired( VARIANT_BOOL varRestult )
{
MessageBox(NULL, L"License”, "Notification",MB_OK|MB_ICONSTOP);
...
...
return S_OK ;
}
At this point you have received notification on the status of a license and can make further callouts as necessary as shown by the code snippet.
040421_KB840307 - DirectShow may not play MP3 files that contain fewer than five frames of data.
040430_KB838966 - DVD Navigator may hang when the track buffer becomes fragmented.
041001_KB883650 - The audio driver does not allow ring tones to be played through Windows Media Player DirectShow engine and may cause the device to cease responding.
041119_KB888230 - Windows Media Player may not play media files that have Unicode characters in the file name.
050225_KB894475 - PD-DRM files synced to a device from Media Player may not be able to use the license embedded in the file
050308_KB894873 - Forwarding/rewinding DRM file during its playback over the ActiveSync USB connection may result in a playback failure.
050516_KB897249 - Copying a file from one Windows CE .net 4.2 device to a second Windows CE .net 4.2 device using SMBFile server component over top of an existing file may fail to delete the previous file. It may also fail to truncate the file if the previous file was larger than the new file.
050516_KB897249 - An attempt to play a MP3 file, located on a Windows CE .NET 4.2 device, to another Windows CE .NET 4.2 device may result in failure.
050930_KB904241 - This update addresses some thread synchronization issues.
051018_KB908363 - A video distortion may occur if the video window is hidden and then subsequently redrawn during WMV/MPEG-4 video playback.
051104_KB909250 - MP3 files with certain metadata may not play correctly.
060307_KB914806 - MP3 files with a single frame may fail to play.
061006_KB925039 - A high priority thread may precipitate starvation in the MP3 decoder pipeline resulting in audio glitches.
The following registry setting needs to be implemented to allow configuration of the minimum allowable size for MP3 DMO buffer requests.
The default value of 4000 hex (16 KB) is
indicated.
[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectX\DirectShow\MP3Decoder]
"MinBufferSize"=dword:4000
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\directx\cesysgen\makefilepublic\directx\sdk\inc\axcore.idl
public\directx\sdk\inc\playlist.h
public\directx\sdk\inc\strmif.h
public\directx\sdk\samples\ddvd\dvdsample\appstate.cpp
public\directx\sdk\samples\ddvd\dvdsample\appstate.h
public\directx\sdk\samples\ddvd\dvdsample\dvdcore.cpp
public\directx\sdk\samples\ddvd\dvdsample\dvdcore.h
public\directx\sdk\samples\ddvd\dvdsample\dvdsink.cpp
public\directx\sdk\samples\ddvd\dvdsample\sinkmsg.hpublic\directx\sdk\inc\dvdnav.h
public\directx\sdk\inc\dvdnav.idlpublic\directx\oak\files\directx.reg
private\servers\smbprint\dialects\pc_net_prog.cpp
private\servers\smbprint\fileserver\code\fileserver.cpp
private\servers\smbprint\inc\fileserver.h
private\servers\smbprint\inc\smbpackets.h
Component: EAP/CHAP
040423_KB835950 - A roaming wireless client may not be able to authenticate via PEAP once the user's password has expired. The user may also receive no prompt to renew the password.
041015_KB867779 - Windows CE .NET 4.2 devices using PEAP over 802.11 may leak memory with every reauthentication request.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\oak\inc\netui.h
Component: EAPOL
040428_KB839193 - When using WPA-PSK authentication and attempting to roam between two identically configured access points, the device may fail to authenticate to the second access point.
Component: Edit Control
040714_KB843373 - Security issue resolved: The edit control may cause a buffer overrun.
041118_KB889526 - When the text is entered into an edit control using an IME and then wrapped, deleting a character from the word will unwrap it. This may result in the wrapped word not being redrawn by the edit control.
Component: FAL
031113_KB830100 - FAL inadvertently attempts to compact reserved/read-only blocks, resulting in a data corruption.
031113_KB830100 - FAL incorrectly picks up a reserved sector for compaction.
031113_KB830100 - Copying and deleting files several times may cause the file operation to fail with an error 997, which translates to "Overlapped I/O operation is in progress". This may result in a system hang.
040611_KB842655 - FATFS cache buffer may get re-used for MSFLASH read of unmapped sector. The data buffer may not get cleared resulting in some issues if the buffer contains valid data from a previous request.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\oak\drivers\fsd\fatutil\main\formatdisk.cpp
Component: FATUTIL
040611_KB842655 - FATFS cache buffer may get re-used for MSFLASH read of unmapped sector. The data buffer may not get cleared resulting in some issues if the buffer contains valid data from a previous request.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\oak\drivers\fsd\fatutil\main\formatdisk.cpp
Component: FILESYS
030612_KB811121 - When an external file system is mounted as root, Windows CE may not automatically refresh the shell after an insertion or removal of a Compact Flash card.
030620_KB821708 - FindFirstFile and FindNextFile may find multiple instances of a shadowed file.
030620_KB822409 - A CD-ROM that has a Unicode Joliet file system and an El Torito boot sector shows short file names for files expected to have long filenames.
030731_KB824247 - A CD, which has only a primary volume descriptor and an El Torito sector, will record the El Torito sector as a valid volume descriptor and will attempt to extract information from it, causing the system to fail. Also, the driver may fail if the disk contains more then one Secondary Volume Descriptor (SVD) and the last SVD read from the CD is not recognized by Windows CE.
For the first issue, the update checks that El Torito is not considered as a valid volume descriptor. For the second, it makes sure that we default to the recognized file system on those CDs which have multiple SVDs containing at least one unsupported file system (regardless of the order of SVDs).
NOTE: This was formerly released as update 030731_KB824427. That is the incorrect KB article number. All references to this update are now changes to 030731_KB824247.
030829_KB826881 - If SD/MMC card formatted with NTFS has been inserted into a device, the device will format SD/MMC card to FAT without a warning message. Deadlock may occur when calling OEM defined IOCTLs for Flach Media drivers, causing device to hang. Buffer overrun in BootPart.lib may cause the device to hang. Directories with trailing backslashes "\" cannot be created with FATFS.
030904_KB828358 - The APIs RegRestoreFile and RegCopyFile are not implemented on a hive-based registry. These APIs are used by ActiveSync to backup and restore the registry. ActiveSync assumes that if any portion of its backup and restore routine fails, then every portion should fail. As a result, the POOM database and object store files do not get backed-up with a hive-based registry.
030919_KB827080 - Data misalignment within a structure used by TFAT may cause an exception on retail builds for 64 bit processors.
031211_KB819614 - A user may not be able to sort or search a database when the database locale changes.
040224_KB836730 - The time of creation may not be set correctly for some files.
040311_KB837276 - When performing FindFirstFile/FindNextFile on a file name with international characters, the same file may be reported to be found twice.
This registry key has to be enabled in order to force LFN generation:
[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
"Flags"=dword:00800064
040311_KB837276 - Transaction status may become
inconsistent when power loss occurs while mounting TFAT partition on HDD.
File Allocation Table corruption may also occur.
040318_KB835949 - An exception may occur when writing a file to a removable storage device and trying to remove the device at the same time.
040325_KB839034 - The storage card may not be accessible if power loss or card removal previously occurred during FAT table synchronization with FORCE_TFAT mode active.
040331_KB838537 - Adding a record to the object store that contains a property of 4091 bytes or more in size may cause heap corruption.
040621_KB843620 - FAT_GetDiskFreeSpaceW may not be thread safe in some cases.
040709_KB843287 - If the cache is enabled, a data corruption may occur when the files on the removable storage card are being used by more than one process at the same time.
040709_KB843287 - In some cases requests to allocate multiple FAT clusters may result in a low disk space and data corruption.
040719_KB867775 - The file system functions FS_FindNextFile and FS_CeOidGetInfoEx2 both attempt to grab the critical section fscs at the same time which may cause a deadlock.
040729_KB870992 - This is an update to a memory leak that may occur when the database volumes become dismounted.
040901_KB840863 - Filesys may generate an exception when accessing the same file from multiple threads.
040913_KB884584 - A critical section may block CF card input/output and result in FATFS hang.
040913_KB884584 - FATFS deadlock may occur when removing the CF card while the data is being written to it.
040924_KB875553 - Suspending/resuming a device during an active file copy operation to the removable storage media may result in orphaned FAT clusters.
If you experience this issue, please use the following registry key to enable
the fix:
[HKEY_LOCAL_MACHINE\System\StorageManager]
"DeleteOnFailedCopy"=dword:0
050207_KB893045 - An error may occur if a storage card is removed and a paging operation is attempted from that card.
050207_KB893045 - Files copied to a storage card may fail to display until the File Manager is manually refreshed.
050317_KB893415 - Under heavy stress conditions, a WriteFile to a TFAT volume may sometimes return ERROR_DISK_FULL even though there is plenty of free space on the media.
050429_KB898053 - File copy may fail if the file name starts with UNICODE characters.
050602_KB873451 - The size of a CEDB volume may not shrink when records in the volume are deleted.
050826_KB906212 - An attempt to rename a file while it is open and being written to may result in lost clusters.
051028_KB909483 - Repeated creation of a file may exhaust system memory.
060124_KB913483 - TFAT volume corrupts when multiple threads write files under the same directory.
060816_KB923306 - An error may occur when CD is ejected during disk access. The drive may not be used until the device is reset.
061107_KB915587 - Under certain circumstances GetLastError() may return an incorrect value.
The file(s) with the new public source code changes for this component can be found in directory %_WINCEROOT%\:
public\common\oak\drivers\block\msflashfmd\sdnpci\fmd.cpp
public\common\oak\drivers\ethdbg\bootpart\bootpart.cppprivate\winceos\COREOS\fsd\fatfs\cache.c
private\winceos\COREOS\fsd\fatfs\find.cprivate\winceos\COREOS\storage\dospart\part.cpp
private\winceos\COREOS\fsd\udfs\udfscdfs.cpp
private\winceos\COREOS\fsd\fatfs\fatfs.h
private\winceos\COREOS\fsd\fatfs\find.c
private\winceos\COREOS\fsd\fatfs\name.c
private\winceos\COREOS\storage\fsdmain\fsdmain.cpp
private\winceos\COREOS\storage\fsdmain\sources
private\winceos\COREOS\storage\fsdserv\fsdalloc.cpp
private\winceos\COREOS\storage\fsdserv\fsdapis.cpp
private\winceos\COREOS\storage\fsdserv\fsdserv.cpp
private\winceos\COREOS\storage\inc\fsdmgrp.h
private\winceos\COREOS\storage\storemgr\storemain.cpp
private\winceos\COREOS\fsd\fatfs\volume.c
private\winceos\coreos\storage\fsdserv\fsdapis.cpp
private\winceos\coreos\fsd\udfs\udfscln.cpp
private\winceos\coreos\fsd\udfs\udfsfile.cpp
private\winceos\coreos\fsd\udfs\udfsfind.cpp
private\winceos\coreos\fsd\udfs\udfsinit.cpp
private\winceos\coreos\fsd\udfs\udfsio.cpp
private\winceos\coreos\fsd\udfs\udfsmain.cpp
private\winceos\coreos\fsd\udfs\udfs.h
private\winceos\COREOS\fsd\fatfs\path.c
private\winceos\COREOS\fsd\fatfs\misc.c
private\winceos\COREOS\fsd\fatfs\disk.c
private\winceos\COREOS\fsd\fatfs\fat.c
private\winceos\COREOS\fsd\fatfs\stream.c
public\shell\oak\hpc\ceshell\copyfilepriv.cpp
private\winceos\COREOS\fsd\fatfs\api.c
Component: Firewall
030605_KB821506 - A Windows CE .NET 4.2 device in certain configurations may deadlock during an address change notification.
Component: FSDMGR
040525_KB842073 - This update adds a configurable thread priority to the Storage Manager PNPThread.
The registry key which controls this:
[HKEY_LOCAL_MACHINE\System\StorageManager]
"PNPThreadPrio256"=dword:
<value> where the <value> is the priority value in hexadecimal.
041112_KB887708 - This update disallows BINFS partition formatting.
The following regkey has to be implemented to enable the fix:
[HKEY_LOCAL_MACHINE\System\StorageManager\<MyProfile>]
"MountFlags"=dword:40
MountFlags in the storage profile set to dword:40 forces the store to be treated as permanent. All attempts to dismount or to delete partitions will fail.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\COREOS\storage\storemgr\store.cpp
private\winceos\COREOS\storage\storemgr\storemain.cpppublic\common\oak\files\common.reg
public\common\oak\inc\pwindbas.h
private\winceos\COREOS\storage\fsdmain\fsdmain.cpp
Component: General
031203_KB812950 - In memory constrained systems with routing enabled, the amount of memory allocated for routing buffers may be excessive. There is an additional information for this update at the end of the document.
There are two registry settings which control this:
[HKEY_LOCAL_MACHINE\Comm\Tcpip\Parms\NumForwardPackets]
[HKEY_LOCAL_MACHINE\Comm\Tcpip\Parms\MaxNumForwardPackets]
NumForwardPackets specifies the number allocated initially whereas MaxNumForwardPackets specifies the maximum that can be allocated. Note that when MaxNumForwardPackets is greater than NumForwardPackets any allocations made after the NumForwardPackets number of allocations will be slower as these buffers will be allocated/deallocated dynamically. For maximum efficiency NumForwardPackets should be equal to MaxNumForwardPackets in most cases.
Component: GWES
041027_KB887586 - If CeRunAppAtTime API is used to set a wakeup time for an application, successive calls to CeRunAppAtTime may fail to set a new time for the same application.
Component: Help
060213_KB913566 - Peghelp may not load images from a storage card.
Component: HTTPD
040525_KB841899 - HTTPD server may not be reading last 2 bytes of a request sent by the client; and, if the socket gets closed, TCP may start sending “Reset the connection” packets to the client that may cause the client’s connection shutdown.
041015_KB886682 - A Windows CE .NET 4.2 device configured as a Web Server may timeout and fail large file uploads.
041112_KB889094 - This is an update to the Web Server component security vulnerability.
The following registry key have to be added to allow configuration of the Web Server timeout:
[HKEY_LOCAL_MACHINE\COMM\HTTPD\]
"ServerTimeout"=dword:<timeout in ms>
The default timeout is 30000 milliseconds (dword:00007530).
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\servers\http\core\request.h
private\servers\http\auth\auth.cpp
private\servers\http\auth\ssl.cpp
private\servers\http\core\httpd.h
private\servers\http\core\httpmain.cpp
private\servers\http\extns\extns.cpp
private\servers\http\extns\extns.h
private\servers\http\parser\buffio.cpp
private\servers\http\parser\buffio.h
Component: IDE
031017_KB830089 - This is an update that clears the cache (device IP and port number); so a user would not have to shut down and restart the Platform Builder IDE after each connection/download to the remote device.
Component: IE
030509_KB812941 - There are two memory leaks in IE that are resolved by this update.
031107_KB830717 - When using Chinese pocket IME with IE, user input to the IE intrinsic edit control may be duplicated and shown twice in the control.
031126_KB832265 - Internet Explorer browser may hang when redirecting within a frameset via a button click.
031205_KB832420 - Internet Explorer browser for Windows CE 4.2 may fail to reload graphics files if initial load is aborted.
040206_KB833203 - When using a custom browser application, the application may encounter exceptions after several minutes of use and will eventually stop to function.
040813_KB883497 - The browse history may be lost when browsing back to the previously viewed page and hitting the Stop button right afterwards.
040830_KB875536 - Internet Explorer 6.0 may not always render drop-down boxes with the correct height when the source HTML file is encoded in Unicode.
040928_KB885282 - When an integer value is entered in the address bar, an exception in URLMON and Internet Explorer termination may occur.
041112_KB885911 - Opening multiple html files under low memory conditions may cause IE or system hang. Numerous dialog boxes may also display.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\ie\oak\iesample\core\animthrd.cpp
public\ie\oak\iesample\core\animthrd.h
public\ie\oak\iesample\core\mainwnd.cpp
Component: Imaging
040112_KB833658 - JPEG decoder may cause an access violation and corrupt the heap if JFIF specifier APP0 marker is corrupted and the length is 0.
Component: IME
030627_KB330502 - When using remote desktop session, changing the input mode on the Korean soft keyboard (MSIMK) may not update the key-face of the soft keyboard.
030812_KB825904 - The HanguI IME MSHIME97.DLL passes VK_ACTION events to the UI controls rather than eating it. This leads to an invalid character displayed as a box in the text controls.
030812_KB825904 - Memory access violation that may occur when closing Korean IME.
The file(s) with the new public source code changes for this component can be found in directory %_WINCEROOT%\:
public\wceshellfe\oak\inputmethods\korean\msimk\im.cpp
public\wceshellfe\oak\inputmethods\korean\msimk\im.hpublic\wceshellfe\oak\inputmethods\korean\msimk\sip_i.c
Component: IPSec
050325_KB890845 - Under certain circumstances VPN connection that uses L2TP through NAT may hang.
Component: IPv6
040507_KB832263 - Windows CE .NET 4.2 may not be compliant with some tests for the “IPv6 Ready!” logo.
040608_KB840666 - When using a hive based registry, Windows CE .NET 4.2 may overwrite IPv6 Global Parameters upon a warm reset of the device.
Component: IR
030627_KB823102 - Windows CE .NET 4.2 may experience erratic IrDA OBEX performance.
031027_KB830713 - Initiating an OBEX file transfer operation from the client may result in failure.
Component: IRCOMM
040526_KB843045 - If an IrCOMM connection is improperly terminated, all future attempts to create a new IrCOMM connection may fail until a warm reset is performed on the device.
Component: Kernel
050315_KB895329 - MIPS platform only: A swap stack overflow may corrupt kernel data.
050511_KB893414 - This is an update to allow AYGSHELL to load in slot 1.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\coreos\nk\inc\heap.hprivate\winceos\coreos\nk\kernel\loader.c
Component: L2TP
040929_KB884549 - L2TP/IPSec initialization runs at high priority and may block other threads from running.
Component: LDAP
040402_KB838778 - ASN1 parser within LDAP (Lightweight Directory Access Protocol) client may expose an integer overflow and cause heap corruption.
Component: Makeimg
031114_KB831793 - This is an update to improve Unicode support.
Component: Messenger
030923_KB826650 - The MSN team is terminating support for MSNP6 (MSN Messenger Protocol) and below. In Windows CE .Net 4.0, 4.1, and 4.2, we shipped Messenger with MSNP6. All these versions of Messenger need to be updated to MSNP8, otherwise they won't be able to talk to the MSN/Hotmail server after the update occurs. This update is planned for October 2003.
The date on the device must be current in order for Messenger to be able to acquire the proper certificate authentication for MSNP8.
If proxy settings are necessary to connect to the Internet, the proxy settings for Windows Messenger must also be set accordingly.
030923_KB826650 - If the taskbar is set to auto-hide and a user is logged onto Messenger, the Messenger notification icon may disappear from the tool tray when the taskbar is re-displayed.
030923_KB826650 - Messenger needs to be updated to work with the released RTC (Real Time Communications) server.
The file(s) with the new public source code changes for this component can be found in directory %_WINCEROOT%\:
public\common\sdk\inc\rtccore.h
public\common\sdk\inc\rtccore.idl
public\common\sdk\inc\rtcerr.hpublic\directx\cesysgen\makefile
Component: MFC
030721_KB823812 - Update to MFC components in Windows CE .NET 4.2.
Description of issues addressed in this update:
· An update to implement proper handling of VT_I1, VT_UI2, VT_UI4, VT_R4 and VT_R8 dispatch parameters for SH4, MIPSII_FP and MIPSIV_FP CPUs.
· Improvement to CPU-specific thunk code according to the correct calling convention for SH3, SH4, MIPSII_FP and MIPSIV_FP.
· Eliminates a memory leak in dispatch code marshaling.
These are fixes in MFC OLECE400(d).DLL libraries that result in an assert for the described dispatch parameter types, incorrect function parameters and return values on SH3, SH4, MIPSII_FP and MIPSIV_FP platforms.
This update modifies the following MFC source files: dispimpl.h, oledisp1.cpp, oledisp2.cpp, and afxdisp.h. This package also updates the MFC libraries OLECE400(d).DLL. The updated MFC libraries can be redistributed when exporting a platform SDK.
Information for OEMs (Original Equipment Manufacturers):
After applying this update, a platform SDK should be re-exported to update it with the libraries and source files provided by this update. It is not necessary to rebuild any DLLs included in the platform that use the shared MFC DLL.
031222_KB831758 - This is an update to proper memory allocating on the CPU specific thunk for the parameters of the functions called by CCmdTarget::CallMemberFunc(). This applies to the SH4, MIPSII, MIPSII_FP, MIPSIV, and MIPSIV_FP family processors.
Information for OEMs (Original Equipment Manufacturers):
After applying this update, the platform SDK should be exported to update it with the libraries and source files provided by this update.
040611_KB835697 - This update fixes a memory leak in wce_RegGetMiscStatus.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
others\mfc\include\MIPS2ThunkBldr.h
others\mfc\include\MIPS4ThunkBldr.h
others\mfc\include\SH4ThunkBldr.h
others\mfc\src\oledisp1.cppothers\mfc\include\afxdisp.h
others\mfc\src\dispimpl.h
others\mfc\src\oledisp2.cppothers\mfc\src\wceole.cpp
Component: MLANG
050211_KB892488 - Internet Explorer may not display a document written in Unicode if it contains corrupted character codes.
Component: MSHTML
040305_KB835982 - IME may not get enabled when trying to click on editable fields on a webpage using IE with TV style navigation.
040608_KB842653 - Attaching a file from a directory other than the root to an email message composed using web-based email form may deliver the file truncated.
050211_KB893053 - MSHTML exception may occur in a low memory situation.
050217_KB892931 - When Internet Explorer TV-Style Navigation "Disable Vertical Scrollbar and Events" component is featured, a vertical scroll bar may still appear on the web page.
050217_KB892931 - A user may not be able to navigate a web page using "Up/Down" arrow keyboard keys with Internet Explorer TV-Style Navigation.
050505_KB897657 - Background sounds embedded in the web page may not be audible.
050819_KB901021 - An exception may occur when browsing certain web sites.
051019_KB909204 - A memory leak may occur when playing audio files.
060331_KB915586 - Internet Explorer errors may occur when trying to open certain HTML documents.
060421_KB917155 - On refresh, Internet Explorer may not send a request for certain objects (such as .gif, .css, .js) from sites that use an ISO-8859-1 character set to HTTP header.
071010_KB942554 - A failure to validate the return of a function call on a specific HTML/CSS construct may result in an error.
071023_KB943651 - Internet Explorer may terminate when processing a specific HMTL construct.
Component: MSPY2
031112_KB831310 - Converted Chinese characters may get deleted when using Chinese IME MSPY2
Component: MSXML
030605_KB821039 - Update to MSXML components in Windows CE .NET 4.2
030605_KB821039 - Feature added to allow MSXML components to use the Windows CE heap or a private heap (the default).
To have MSXML use the Windows CE heap add the following value to the Windows CE registry:
[HKEY_CURRENT_MACHINE\Software\Microsoft\MSXML]
"MiniHeap"=dword:1
030605_KB821039 - New optimizations added to reduce the amount memory used by MSXML
030605_KB821039 - Applications designed to use MSXML for Windows CE 4.1 .NET may fail to run on Windows CE 4.2 .NET.
To address this issue, in addition to applying this update, add the following information to the Windows CE registry (for example public\ie\oak\files\ie.reg):
[HKEY_CLASSES_ROOT\CLSID\{F6D90F11-9C73-11D3-B32E-00C04F990BB4}]
@="XML DOM Document"
[HKEY_CLASSES_ROOT\CLSID\{F6D90F11-9C73-11D3-B32E-00C04F990BB4}\InProcServer32] @="msxml3.dll"
"ThreadingModel"="Both"
[HKEY_CLASSES_ROOT\CLSID\{F6D90F11-9C73-11D3-B32E-00C04F990BB4}\ProgID]
@="Msxml2.DOMDocument"
[HKEY_CLASSES_ROOT\CLSID\{F6D90F11-9C73-11D3-B32E-00C04F990BB4}\TypeLib]
@="{f5078f18-c551-11d3-89b9-0000f81fe221}"
[HKEY_CLASSES_ROOT\CLSID\{F6D90F11-9C73-11D3-B32E-00C04F990BB4}\Version]
@="3.0"
040903_KB875507 - There may be a memory leak in XMLHTTP when it is called from a web page.
050203_KB889404 - IESample may not be able to refresh XML page.
061130_KB916644 - Security Update. This security update addresses areas such as cross-site scripting attacks, crashing MSXML, and putting it into infinite loops.
The file(s) with the new public source code changes for this component can be found in the directory %_WINCEROOT%\:
public\ie\oak\files\ie.reg
Component: Multimedia
030805_KB815794 - Windows Media Player may exhibit poor quality playback of 640x480 VBR video files. This issue has been resolved through the addition of write-combine support on the PCI Host Controller.
When mapping a frame buffer to virtual memory, write-combining may now be enabled by setting a memory attribute in the kernel. For example:
if(VirtualCopy((void *)(pVirtualAddress, (void *)(pPhysicalAddress >> 8), cbBytesToMap,
PAGE_READWRITE | PAGE_PHYSICAL | PAGE_NOCACHE))
{
CeSetMemoryAttributes(void *)(pVirtualAddress, (void *)(pPhysicalAddress >> 8), cbBytesToMap,
PAGE_WRITECOMBINE);
}
Hardware support must also be provided in the OAL via MTRR (Memory Type Range Registers) or the PAT (Page Attribute Table). Sample code changes are provided for the x86 processors. To implement, a user has to add the following lines to OEMInit():
g_dwCPUFeatures = IdentifyCPU();
InitializePATAndMTRR();
Several new functions have been added to cfwpc.c to implement these changes:
WriteMTRRRegPair()
DumpMTRR()
CheckExistingMTRR()
PATSetMemoryAttributes()
MTRRSetMemoryAttributes()
OEMSetMemoryAttributes()
InitializePATAndMTRR()
030820_KB825853 - Windows CE .NET 4.2 may be unable to create a 3rd wave audio device, failing with the following error message: "CAudioDeviceList: Add - device table full, could not reallocate".
031017_KB824030 - When paused and then restarted, an audio clip may restart at a position prior to where it paused.
031024_KB830177 - WaveCallbackProxyThread may spin indefinitely when process is abruptly terminated via TerminateProcess, resulting in degraded system performance.
The file(s) with the new public source code changes for this component can be found in directory %_WINCEROOT%\:
public\common\oak\csp\i486\inc\msr.h
public\common\oak\csp\i486\oal\cfwpc.c
public\common\oak\csp\i486\oal\oeminit.asm
public\common\oak\drivers\display\ati\ati.cpp
public\common\oak\drivers\display\mq200\config.cpp
public\common\oak\drivers\display\perm3\memory.c
public\common\oak\drivers\display\rflat\rflat.cpp
public\common\oak\drivers\display\tvia5000\config.cpp
public\common\oak\drivers\display\vgaflat\gpeflat.cpp
public\common\oak\inc\pkfuncs.hpublic\common\sdk\inc\winnt.h
private\winceos\COREOS\nk\inc\kernel.h
private\winceos\COREOS\nk\inc\kwin32.h
private\winceos\COREOS\nk\inc\mem_x86.hprivate\winceos\COREOS\nk\inc\nkx86.h
private\winceos\COREOS\nk\kernel\kdriver.c
private\winceos\COREOS\nk\kernel\kwin32.c
private\winceos\COREOS\nk\kernel\virtmem.cprivate\winceos\COREOS\nk\kernel\x86\fault.c
Component: NDIS
030509_KB819775 - While streaming data over the network, a failure in NDIS may occur. This gives the appearance of a hang in NDIS for approximately 20 minutes. A timer rollover condition is not checked properly.
040423_KB840880 - NdisOpenFile may cause an exception when trying to open a file that does not exist.
The following registry switches have to be applied to address this issue:For memory-mapped I/O:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NDIS]
"NeedsMapToScrap"=dword:1 ; any non-0 value
For bus I/O:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NDIS]
"NeedsMapToScrap"=dword:0
040811_KB875505 - There may be a memory leak in the NDIS on Suspend/Resume of the device.
Component: .Net Compact Framework
030616_KB822465 - .NET Compact Framework update for Windows CE .NET 4.2.
031231_KB834018 - .NET Compact Framework SP2 for Windows CE .NET 4.2.
Description of issues addressed in this update:
Performance & Other Improvements List:
· Improved performance of many data tasks, including populating DataSets, searching DataTables, DataSet.ReadXml()
· method when a schema is used, finding and indexing operations, setting DataSet.EnableConstraints property
· Improved resource loading performance
· Minor GUI performance improvements
· Extend keyboard events to be enabled on all controls (Control.KeyUp, KeyDown, KeyPress)
· Added support for ForeColor &/or BackColor for Button, Checkbox, ComboBox, DomainUpDown, Label, Listbox, ListView,
· NumericUpDown, RadioButton, Trackbar, and TreeView
· Added support for new SmartPhone languages: Finnish, Czech, Romanian, Slovakian, Norwegian, Hungarian, Polish, Turkish, and Russian
· Improved Control.Enabled and Control.Parent property changing performance
· Support menu hotkeys on Pocket PC
· Support raising context menus from assigned hardware key, Pocket PC
· Tab support for Pocket PC based on Z-Order
· XmlTextReader performance improvements
Fixed issues:
· Fixed crash when SQLClient or SQLServerCe is installed· DataRowCollection.Find() method throws wrong exception· Fixed erroneous parsing of HttpWebRequest response stream· Form does not get the focus when all controls are removed from the form· InputPanel Button disappears from MainMenu on Pocket PC 2002· InputPanel's EnabledChanged Event fires inspite of setting the enabled property to the same value.· IrDAClient.DiscoverDevices device names garbled· Memory leak in the NumericUpDown, DomainUpDown, ComboBox and TextBox controls· Native Exception occurs when using the get accessor for Control.Capture· Navigation bar flickers when new form is being loaded.· ObjectDisposedException occurs when DataBinding a control to a form shown via Show()· OK button eventually goes away when re-using recycled form for ShowDialog()· Setting the InputPanel.Enabled property when the form is closing throws an exception· SIP button does not go away when the toolbar control is removed from a form that does not have a menu· The Focus method does not work correctly for the NumericUpDown and DomainUpDown controls· The Text property of a ListView column is reset to "" when removing the column from the ListView and then adding it back· ContextMenu: Fixed TreeView issues on Pocket PC 2003· ContextMenu: Fixed side effects on controls like Scrollbar and Label· ContextMenu: erroneous functionality when bound to ListBox· ContextMenu: Showing a context menu on Pocket PC for a textbox unselects the selected text in the textbox· ContextMenu: Empty ContextMenu on Pocket PC should not pop up· Web services: After repeatedly canceling asynchronous web request, all web service calls fail· Conversion of 0.0F to a string and results in a memory leak· Web services: An XmlException is thrown when deserializing a qualified name that has no prefix and there is no default namespace defined· Web services: Incorrect handling of null headers in SOAP message
041119_KB888235 - .NET Compact Framework SP3 for Windows CE .NET 4.2.
Description of issues addressed in this update:· Transitions between managed and native code may cause memory leaks on ARM platforms.· A NullReferenceException may occur when a Web Method returns an empty array using the xsi:Nil attribute.· Modifying the SoapClientMessage.ContentType property does not modify the Http requests ContentType header.· Stack corruption may occur on SHx, MIPS and x86 platforms when local variables are created but never used.· Invoking a multicase delegate from a catch handler may cause a MissingMethodException on SHx, MIPS and x86 platforms.· Command line arguments containing double byte characters may get truncated to a single byte.· An ObjectDisposedException may occur when a asynchronous web request is aborted before the response is received.· Invoke on a disposed control may hang the application.· An array containing one or more elements may be sent to the Web Service incorrectly.· An application may hang when invoking a Web Method that uses multiple XmlElementAttributes on a single argument, member or property.· Memory corruption may occur on devices that have the native security model enabled and both .NET CF V1 SP3.· Deadlocks may occur when running under severe resource constraints.· The issue of the Tool Bars loosing their image on Windows Mobile 2003 SE when removed from the form is addressed by this update.· An ObjectDisposedException may occur when the server closes the socket connection· Setting the Minimum and Maximum properties of a progress bar may crash the application· An exception may occur when adding an image to an imagelist on an Hx4700 and Hx4705· Data misalignment may occur on decimal fields in MIPSIV devices
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\netcf\cesysgen\makefile
public\netcf\oak\files\netcf.bib
public\netcf\oak\files\netcf.reg
Component: .NET Compact Framework 2.0 SP1
060612_KB914829 - Integration of .NET Compact Framework 2.0 SP1 into Windows CE .NET 4.2.
Note:
.NET Compact Framework 2.0 does not support SH3 processors.
Added Features:
· Added the Serializable attribute
· Allow DataGrid cell drawing to be overridden
Fixed Issues:
· Changing VT_BYREF Variants in managed code could lead to a memory leak
· Inappropriate caching of current UI culture even after CultureInfo.ClearCachedData is called
· For the HttpWebRequest method, an uncatchable ObjectDisposedException could occur when exiting an application with
asynchronous requests· Visual Studio may hang on setting a Breakpoint in a function with an infinite loop when it is called from the Immediate Window
· Breakpoints do not work if the cached, managed dlls in the bcl directory differ from the ones on the device
· Environment.GetFolderPath may return an InvalidOperationException
· An access violation may occur when accessing .the Controls or .Controls.Count property of a control once it has begun the
disposing process· The WebBrowser.DocumentCompleted event is fired in a loop when the DocumentText property contains an image inside of a
table· For the HttpWebRequest method, an ArgumentOutOfRangeException may occur when accessing some https:// URLs
· Timer may break after GetTickCount wraps around (49.7 days)
· Error may occur when loading the .NET Compact Framework 2.0 on a device using an ActiveSync push
· Memory leaks may occur when using Com marshaling
· For the SerialPort class, an IOException may occur when opening a serial port on the IPAQ 4150
· A call to HttpWebRequest over SSL with a payload greater than 32 KB may hang on the client when SendChunked returns false
· For the SerialPort class,an uncatchable exception may occur when Bluetooth is turned off
· A finalizer for the FileStream class may cause the application to crash if a previous IO operation failed
· PInvoke return types of UIntPtr may throw a NotSupportedException
· The Debug.WriteLine method in the .NET Compact framework v2.0 is not working
· For the SerialPort class, virtual serial ports may not get reported by the SerialPort.GetPortNames method
· When using COM Interop, a VARIANT_BOOL type may get passed incorrectly on ARMV4I
· The .NET Compact Framework may performs version comparison incorrectly when loading assemblies
· Corrections needed for Http Abort semantics
· The DateTime.Now method may throw an ArgumentOutOfRangeException
· Under certain rare stress conditions, a crash may occur when using CurrentTimeZone.GetDaylightTime and CurrentTimeZone.GetStandardTime
Note:
Dependencies for .NET CF 2.0 are not displayed. This should not affect the build.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\iabase\oak\misc\cesysgen.bat
public\netcfv2\netcfv2.cec
public\netcfv2\cesysgen\makefile
public\netcfv2\cesysgen\sources
public\netcfv2\cesysgen\sources.gen
public\netcfv2\oak\files\netcfv2.bib
public\netcfv2\oak\files\netcfv2.reg
Component: .NET Compact Framework 2.0 SP2
070310_KB934174 - .NET CF 2.0 SP2 update addresses the following issues:
Finalizers may fail on RTF objects because COM bindings are already disposed
VS may crash when trying to attach without setting the Attach Enabled Registry Key
Potential memory corruption caused by circular reference
JIT assertion failure when non-existent COM port is addressed
TypeLoadException using generics with .NET CF 2.0
SerialPort: Data corruption may occur if DataReceived event is used to receive Unicode characters sent across serial ports
SerialPort: Cannot open a COM port beyond COM9
SerialPort: GetPortNames() may not return serial port names beyond COM9
NET CF 2.0 may deadlock on exit if native callback delegate has been called on native thread
XmlSerializerializationWriter: When GetSpecifiedMember returns false, serialization is halted resulting in loss of data
Access violation marshaling a class with a string field
Stepping out from a Breakpoint after Func eval may cause breakpoint to remain at same place and result in VS 2005 hang
COM: Access violation in N->M byref marshaling
Native exception in marshalling code when using Interlocked.Exchange
Access violation in StubPolicyAlloc (eestub\policy.cpp)
Type.GetDefaultMembers() may not return base type's default members
Debugger may not correctly handle new native threads entering through COM
HttpWebRequest: HTTPS request may fail when TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher is used
WebBrowser's NavigatingEventArgs does not allow to cancel navigation
XmlSerializer may fail to de-serialize enumerator's with spaces
070523_KB937895 - This update addresses an issue with command line building not working with NETCF 2.0 SP2.
Note:
.NET Compact Framework 2.0 does not support SH3 processors.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\netcfv2\cesysgen\makefile
Component: NetBIOS
040519_KB836632 - Attempts to access a local file share via a UNC path may cause Windows Explorer to hang.
The following registry keys are required to enable this fix:
[HKEY_LOCAL_MACHINE\Comm\NetBIOS]
"EnableLoopBack"=dword:1
"EnableLoopBack" must be set to any non-zero value to enable loopback on the device. The default behavior when this value is not present is to disable loopback. The fix also requires a registry entry for a dummy "localhost" adapter, e.g., as follows:
[HKEY_LOCAL_MACHINE\Services\SMBServer]
"AdapterList"="VMINI1;localhost"
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\servers\smbprint\transport\netbiostransport.cpp
Component: NETUI
040423_KB835950 - A roaming wireless client may not be able to authenticate via PEAP once the user's password has expired. The user may also receive no prompt to renew the password.
050805_KB904938 - PSK network key set to 64 Hex digits may not be handled correctly.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\oak\inc\netui.h
public\common\oak\drivers\netui\wzcprops.c
Component: NK
030603_KB822007 - Kernel loader may flush the CPU data cache incorrectly when loading DLLs into slot 1.
030606_KB818881 - The Windows CE .NET 4.2 kernel may only flush the CPU data cash when it decommits or pages out memory.
030617_KB822606 - This update to the Windows CE .NET 4.2 kernel allows to create a new system variable which can be used to manage byte ordering on ARM processors.
030617_KB822610 - Memory routine and string handling improvements for MIPS processors.
030718_KB821390 - Vulnerability of a phantom mutex owner may cause other threads to block forever.
030718_KB821390 - Update to allow unprivileged applications read-only access to SYSTEM files on ARM and x86 platforms.
This Registry setting allows unprivileged applications read-only access to SYSTEM files.
[HKEY_LOCAL_MACHINE\System\ObjectStore]
"AllowSystemAccess"=dword:1
031022_KB830768 - The signal to display an alarm or alert is sent asynchronously, causing it to sometimes be missed. Therefore, some PocketPC devices may not wake up on the alarm/alert.
040602_KB826381 - An untrusted application cannot be used with CeLog that may log worthless data for the timestamp.
040611_KB835854 - This update corrects first chance exceptions handling in a dialog procedure and allows them to be passed to the Just-In-Time (JIT) debugger.
This registry key enables a device-side JIT debugger:
[HKEY_LOCAL_MACHINE\Debug]
"LaunchJITOnFirstChance"=dword:1
060206_KB913641 - GetThreadTimes() API may return wrong value on retail build.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:private\winceos\COREOS\nk\kernel\kmisc.c
private\winceos\COREOS\nk\kernel\loader.c
private\winceos\COREOS\nk\kernel\schedule.c
private\winceos\COREOS\core\dll\apis.c
private\winceos\COREOS\nk\kernel\x86\mdx86.c
private\winceos\COREOS\nk\kernel\arm\mdarm.c
private\winceos\COREOS\nk\mapfile\mapfile.c
private\winceos\COREOS\nk\kernel\pgpool.c
private\winceos\COREOS\nk\kernel\virtmem.c
private\winceos\COREOS\nk\celog\celog.c
private\winceos\COREOS\nk\kernel\profiler.c
private\winceos\coreos\nk\kernel\objdisp.c
Component: OLE Headers
041119_KB887825 - This update to the header file resolves some issues that may not allow to retrieve OLE_xxx properties from the MFC ActiveX control.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\sdk\inc\olectl.h
Component: OLEAUT32
040409_KB838445 - The locale information may not be properly initialized for some Chinese sub-languages which may result in an issue with the locale specific API.
Component: PDF Viewer
031230_KB829213 - This is a major update to the PDF Viewer.
Description of issues addressed in this update:
· Provide Adobe Type 1 and Type 3 font support in the PDF viewer
· Add character mapping support for Korean, Japanese, Chinese (Simplified) and Chinese (Traditional) using the predefined Adobe Character mapping files (CMAPs)
· Allow PDF files created using Crystal Reports to be correctly opened
· Allow correct mapping of European characters to the proper Unicode value
· Support demand loading of pages, provide quick document load times
Viewer enhancements and updates
This PDF Viewer update adds character mapping support for Korean, Japanese, Chinese (Simplified) and Chinese (Traditional) using the predefined Adobe character mapping files (CMAPs). The Microsoft PDF viewer uses these character mapping files to map from the character index used in a document to a matching TrueType glyph, using the glyph’s Unicode value. When a document is opened that requires a predefined mapping, the PDF Viewer will attempt to locate the appropriate character mapping file in the \Windows directory.
There are a total of 16 predefined character mapping files provided, four files for each of the four Far East languages. The table below contains the files required for each language:
Japanese
Adobe-Japan1-UCS2
90ms-RKSJ-UCS2
90pv-RKSJ-UCS2
90pv-RKSJ-UCS2C
Korean
Adobe-Korea1-UCS2
KSCms-UHC-UCS2
KSCpc-EUC-UCS2
KSCpc-EUC-UCS2C
Chinese Simplified
Adobe-GB1-UCS2
GBK-EUC-UCS2
GBpc-EUC-UCS2
GBpc-EUC-UCS2C
Chinese Traditional
Adobe-CNS1-UCS2
ETen-B5-UCS2
B5pc-UCS2
B5pc-UCS2C
These tables are not automatically added to the image when the Microsoft PDF Viewer is selected. The files exist in the following location:
%_WINCEROOT%\public\viewers\oak\files\pdfviewertbls
During the build process all the files are copied to the %_FLATRELEASEDIR%. An OEM at that point can use a modified MyProject.BIB file to include the required files. The files should only be added to the FILES section of the BIB file and by default should be compressed to save space.
FILES
Adobe-Japan1-UCS2. %_FLATRELEASEDIR%\CEPC\x86\iabase\retail\ Adobe-Japan1-UCS2. NK
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\viewers\cesysgen\makefile
Component: Performance
031203_KB812950 - General performance issues for routing and bridging scenarios.
Description of issues addressed in this update:
· Optimized forwarding path in networking components (TCP/IP, NAT, firewall and bridge) to increase performance on CPUs with small instruction and data caches.
· Modified networking components to allocate memory from physical address region to reduce number of TLB misses (most benefit for platforms with SW TLB miss handler). See Enabling IMGLOADNETHIGH section.
· Modified networking components to allow them to be optionally run from physical address region to reduce number of TLB misses (most benefit for platforms with SW TLB miss handler).
· Modified interrupts to allow them to be shared among network controllers, which can reduce task switching (and increase performance) in routing scenarios. In order to take advantage of this change, the OEM will need to implement some changes in the OAL code. See Shared IST section for details.
There is an additional information for this update at the end of the document.
Component: pIE
040623_KB843372 - A GIF file with a large non-terminated comment block may cause Pocket IE to use up all the system memory.
Component: Platform Manager
030528_KB820922 - Embedded Visual C++ 4.0 may not download large binaries to a Smartphone or PocketPC device.
030725_KB823563 - Embedded Visual C++ 4.0 SDK PlatMan emulator image drop-down only remembers selection from the first 10 items in the list.
Component: Pocket Inbox
040402_KB838580 - IMAP4 may raise an exception when downloading an email message that contains an object attachment.
060920_KB924877 - pMail may fault when trying to parse an email with the second instance of a double-header field extended to a second line.
070419_KB934680 - This update addresses an issue with deletion of some messages when Send/Receive button is pressed at service disconnection time.
Component: PPP
030829_KB823253 - Windows CE .NET 4.2 may ignore duplicate CHAP challenge IDs during LCP renegotiation.
031203_KB812950 - On asynchronous links, sending the ACCM (Async-Control-Character-Map) should be reset to the default value whenever the LCP Option Negotiation Automaton enters the closed state. Failure to do so may prevent LCP renegotiation. There is an additional information for this update at the end of the document.
031203_KB812950 - PPPoE client may not determine connection loss. This update adds support for connection loss detection and auto-reconnect. There is an additional information for this update at the end of the document.
This update introduces an algorithm to detect if a PPP link is unresponsive by use of the LCP echo request mechanism. If a link is determined to be idle (no packets received for ½ of the disconnect timeout interval), then the CE PPP implementation will begin sending LCP echo request messages periodically until either a response is received from the peer, or the timeout is exceeded. If no packets are received for the disconnect timeout interval, the connection is terminated. Several registry settings exist to configure this behavior, described below:
By default, dead link detection is only enabled for PPPoE connections. The specific device types for which it is enabled can be specified by setting the registry value:
[HKEY_LOCAL_MACHINE\Comm\Ppp\Parms]
"LcpIdleDeviceTypes"=multi_sz:<values>
where values are device type strings such as vpn, direct, or pppoe. Default is pppoe.
The following setting can be used to configure the disconnect timeout. Values are in milliseconds. Default is 15000 (15 seconds).
[HKEY_LOCAL_MACHINE\Comm\Ppp\Parms]
“LcpIdleDisconnectMs”=DWORD:<value>
The following can be used to configure the time between sending echo requests when the line is idle. Values are in milliseconds. Default is 1000 (1 second).
[HKEY_LOCAL_MACHINE\Comm\Ppp\Parms]
“LcpEchoRequestIntervalMs”=DWORD:<value>
040405_KB838573 - A user may not be able to establish a VPN connection to 10.0.x.x network from 10.10.x.x address.
040405_KB838573 - PPTP client has to set the subnet mask to 255.255.255.255 with the Class A networks.
040423_KB835950 - A roaming wireless client may not be able to authenticate via PEAP once the user's password has expired. The user may also receive no prompt to renew the password.
040806_KB843538 - If during IPCP negotiations the peer requests a number of max slots lower then 16, some issues with the VJ compression may occur.
041008_KB885418 - PPP Server reads incorrect data from the registry at startup and may get improperly configured.
Component: PPPoE
031203_KB812950 - Over PPPoE, a packet which needs to be fragmented into 3 or more packets may not be transmitted successfully, such as when the packet size is equal to 2 * MTU (or greater). There is an additional information for this update at the end of the document.
The number of buffers was made registry configurable with this fix, using the following registry key:
[HKEY_LOCAL_MACHINE\Comm\PPPOE1\Parms]
"MaxSendPackets"=dword:30Where the dword value is the maximum number of transmit buffers.
040707_KB867791 - PPPoE may incorrectly send or receive packets which approach the Maximum Transmission Unit (MTU) size. This may cause unreliable TCP connections when transferring large files across a PPPoE link that has encryption enabled.
Component: PPTP
040419_KB838841 - RasHangUp may hang when a user uses a program that continually automatically connects to a VPN server and then automatically disconnects the user from it after performing some routine task such as checking mail.
Component: RAS
031017_KB822251 - RAS Server may fail to initialize PocketModem for receiving calls. At times when initialization does succeed, the connection may not hang up properly. The subsequent calls to connect will also fail.
The following registry key must be set in the project.reg file before building an image:
[HKEY_LOCAL_MACHINE\ExtModems\HayesCompat]
"CmdSendDelay"=dword:0xc8
NOTE: the 0xc8 is a preferred delay value (equating to a delay of 200 msec). The users may have to find a suitable ‘modem command send delay’ value pertaining to their own hardware.
The file(s) with the new public source code changes for this component can be found in directory %_WINCEROOT%\:
private\winceos\COMM\tapi\unimodem\modem.c
Component: RES2EXE.EXE
040319_KB837992 - When building images for some international languages, res2exe.exe may produce an error during localization phase resulting in failure to build the image.
Component: RDP
030910_KB821389 - When Windows CE .NET 4.2 based Thin Client devices enable redirection of local drives, the entire Windows CE .NET 4.2 file system is exposed to the User's server session.
Access to the local file system when RDP Drive Redirection is enabled is limited to OEM-selected directories, such as directories created by mounting an external media such as a Disk-On-Key or other USB mass storage.
040610_KB843041 - When connecting to a terminal server via an RDP client, the client's default printer may be shuffled to a different printer. This may cause a user's documents to be printed to a different location than expected.
041021_KB887695 - A failure may occur when trying to redirect a serial port.
041021_KB885296 - A user connects via RDP from Windows CE .NET 4.2 device to a desktop machine and uses the desktop Windows Explorer to view the contents of the redirected drive of the local CE device. Then, if a storage card (CF card) or other media is inserted into the CE device, the desktop may not refresh its Explorer view to show creation of a “Storage Card” folder on the CE device.
050805_KB904558 - A memory leak may occur when redirecting a serial device via RDP.
The file(s) with the new public source code changes for this component can be found in directory %_WINCEROOT%\:
public\rdp\cesysgen\makefile
public\rdp\oak\files\rdp.bib
public\rdp\oak\files\rdp.reg
public\rdp\oak\uit\dirs
public\rdp\oak\uit\filterfs\file.cpp
public\rdp\oak\uit\filterfs\filterfs.h
public\rdp\oak\uit\filterfs\find.cpp
public\rdp\oak\uit\filterfs\main.cpp
public\rdp\oak\uit\filterfs\makefile
public\rdp\oak\uit\filterfs\path.cpp
public\rdp\oak\uit\filterfs\sourcespublic\iabase\oak\misc\cesysgen.bat
Component: Redir
031121_KB832262 - A user may not be allowed to change or delete a stored username or password.
Component: Regcomp
031114_KB831793 - This is an update to improve Unicode support.
Component: ROMIMAGE
030822_KB826880 - Romimage reports it is out of space when there is space available. This happens because a significant amount of image space may be wasted if there are many or oddly placed areas in the image.
The file(s) with the new public source code changes for this component can be found in directory %_WINCEROOT%\:
private\winceos\COREOS\nk\tools\romimage\ribld.bat
private\winceos\COREOS\nk\tools\romimage\compbin\compbin.cpp
private\winceos\coreos\nk\tools\romimage\diffbin\reloc.cpp
private\winceos\coreos\nk\tools\romimage\romimage\config.cpp
private\winceos\COREOS\nk\tools\romimage\compbin\config.h
private\winceos\COREOS\nk\tools\romimage\compbin\memory.cpp
private\winceos\COREOS\nk\tools\romimage\compbin\memory.h
private\winceos\COREOS\nk\tools\romimage\compbin\module.cpp
private\winceos\COREOS\nk\tools\romimage\compbin\module.h
private\winceos\COREOS\nk\tools\romimage\compbin\pbtimebomb.h
private\winceos\COREOS\nk\tools\romimage\compbin\romimage.cpp
private\winceos\COREOS\nk\tools\romimage\stampbin\stampbin.c
Component: Security
030606_KB821606 - While trying to make a connection to an 802.1x-enabled network, a device using a French version of Windows CE .NET 4.2 may fail to authenticate using the certification information given by the user.
031008_KB829492 - ARMV4 only: When attempting to synchronize a POP3 Inbox that contains about 2000 messages, the device may hang, requiring a hard reset. An exception may also occur.
040330_KB837052 - ASN1 library may be susceptible to an integer overflow when allocating a heap block of a size specified by the BER-encoded ASN1 data. This may result in multiple vulnerabilities.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\oak\files\common.reg
Component: Script
070404_KB935317 - JavaScript Date object may return incorrect time under DST on second and subsequent calls to the object.
Component: SERVICES
030527_KB821040 - When services.exe initializes, it allocates a pool of 64 fixed size buffers, each about 600 bytes long. This corresponds to using 38KB of RAM before it has even done anything. In practice, services.exe only uses a handful of these buffers.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\servers\services\lib\servacpt.cpp
Component: SHDOCVW
031023_KB829096 - If there is an ATL control on a HTML page, and the page is reloaded within IE, a memory leak may occur.
040310_KB836634 - When an HTML file is located on the local file system and a user attempts to open it in a new window through a link of Jscript code, a blank window may be open instead of the web page.
040928_KB885410 - A memory leak may occur on a web page that has script errors and repeatedly refreshes or reposts.
Component: Shell
030605_KB819167 - WM_KEYUP and WM_KEYDOWN messages may not be handled correctly by Windows CE .NET 4.2.
030710_KB823680 - PropertySheet may fail when used by MFC's CPropertySheet.
030808_KB826115 - ListView may process WM_PAINT messages excessively, causing a significant degradation in overall system performance in certain scenarios. For example, file copy operation may be very slow.
030814_KB826768 - Command prompt "copy" operations on large files can be quite slow.
041028_KB875504 - This update addresses some potential security vulnerabilities in one of the Portable Network Graphics (PNG) decoding libraries used in Windows CE .NET 4.2.
041208_KB873450 - A data abort may occur when the File Open dialog is used on the device with the screen smaller than 240 pixels.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\shell\oak\hpc\explorer\taskbar\taskbar.cpp
private\shell\shellpsl\haveaygshell\keymap.cpp
Component: SMBFile
050516_KB897249 - Copying a file from one Windows CE .net 4.2 device to a second Windows CE .net 4.2 device using SMBFile server component over top of an existing file may fail to delete the previous file. It may also fail to truncate the file if the previous file was larger than the new file.
050516_KB897249 - An attempt to play a MP3 file, located on a Windows CE .NET 4.2 device, to another Windows CE .NET 4.2 device may result in failure.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\servers\smbprint\dialects\pc_net_prog.cpp
private\servers\smbprint\fileserver\code\fileserver.cpp
private\servers\smbprint\inc\fileserver.h
private\servers\smbprint\inc\smbpackets.h
Component: SNMP
040128_KB834845 - SNMP query may not return the system's description value specified in the registry.
Component: SNTP
061113_KB923637 - SNTP client may not account for DST setting when a device synchronizes its time using SNTP client.
070727_KB939848 - When SNTP client sets the clock during daylight saving time, the system time may be off by one hour for a brief moment.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\shell\oak\hpc\explorer\main\dst.cpp
public\shell\oak\hpc\explorer\main\dst.h
public\wceshellfe\oak\taskman\dst.cpp
public\wceshellfe\oak\taskman\dst.h
private\servers\timesvc\timesvc.cxx
Component: Software Mixer
050819_KB905202 - When two or more threads use the mixer system resources, one may get blocked by others and time out. This may result in software mixer deadlock.
Component: SQL Mobile
060729_KB923390 - Integration of SQL Mobile into Platform Builder 4.2.
Overview:
SQL Mobile update provides SQL Mobile functionality in a new catalog item. This new catalog item is in the Application and Services Development node next to the SQL Server CE 2.0 catalog. These catalog items are mutually exclusive; one can be included in a project at a time.
SQL Mobile on Windows CE .NET 4.2 is not supported for Headless devices.
SQL Mobile on Windows CE .NET 4.2 is not supported on SH3 processors.
Details:
The SQL Mobile catalog item group contains the following items:
SQL Mobile
This catalog item corresponds to the SQL Mobile native components for Windows CE .NET 4.2. Selecting this item would allow users to run native C++ applications (OLEDB) on the target Windows CE board.
SQL Mobile .Net 2.0 Data ProviderThis catalog item corresponds to the System.data.Sqlserverce managed data provider for .NET CF 2.0 SP1. Selecting this item would allow users to run managed C# or VB .NET applications using the system.data.sqlserverce namespace. This catalog item adds SQL Mobile native components and .NET CF 2.0 SP1 to the target Windows CE .NET 4.2 image.
SQL Server .NET 2.0 Data Provider
This catalog item corresponds to the System.data.Sqlclient managed data provider of .NET CF 2.0 SP1. Selecting this item would allow users to run managed C# or VB .NET applications using the system.data.sqlclient namespace. This catalog item adds .NET CF 2.0 SP1 to the target Windows CE .NET 4.2 image.
Note:
Dependencies for the components are not displayed. This should not affect the build.
To enable support for SQL Mobile .Net 2.0 Data Provider and SQL Server .NET 2.0 Data Provider, a user needs to install .NET CF 2.0 SP1 for Platform Builder 4.2. NetCF 2.0 SP1 is available in the Windows CE .NET 4.2 June monthly update for 2006 and can be downloaded from the following link:
Installation Instruction:
1. Close Platform Builder 4.2.
2. Run the update.
3. Run Platform Builder 4.2 and add the new SQL Mobile Catalog item to your workspace.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\iabase\oak\misc\cesysgen.bat
public\sqlmobile\sqlmobile.cec
public\sqlmobile\cesysgen\makefile
public\sqlmobile\cesysgen\sources
public\sqlmobile\cesysgen\sources.gen
public\sqlmobile\oak\files\sqlmobile.bib
public\sqlmobile\oak\files\sqlmobile.reg
Component: Stampbin
050526_KB899021 - A failure may occur when trying to stamp the binary image with the license in command prompt.
Component: TAPI
050616_KB900710 - Pressing the 'Send' key may not always initiate a dial sequence.
Component: TCP/IP
031009_KB829607 - A thread associated with the CxPort component, running at a default priority of 132, consumes CPU cycles without yielding for a variable time period to lower priority threads, when network activity is initiated after a long idle period.
040810_KB873427 - There may be a memory leak when the device is suspended and resumed with a wireless LAN adapter installed.
041231_KB887697 - TCP retransmit timeout may be very large after a long period of no activity on the socket.
051010_KB908362 - A device when set up as a server can be attacked by a client device.This security update addresses this issue.
060830_KB923805 - An error may occur when loopback and incoming access occur simultaneously. The device must be reset to regain network access.
071218_KB945923 - Security update. Vulnerability in TCP/IP could allow denial of service.
Component: TFAT
040521_KB842067 - This is an update to improve TFAT performance on Windows CE .NET 4.2.
040521_KB842067 - When a removable TFAT volume (SD card) is unmounted while another volume (HDD) is being written to, a FAT table, directory clusters, and data clusters on the TFAT volume may get corrupted; and the TFAT volume may become unusable.
040521_KB842067 - MoveFile API and SetFileAttributes API may not be transaction safe in some cases.
040521_KB842067 - If the cache is enabled, a data corruption may occur when the files on the removable storage card are being used by more than one process at the same time.
040709_KB843287 - In some cases requests to allocate multiple FAT clusters may result in a low disk space and data corruption.
050317_KB893415 - Under heavy stress conditions, a WriteFile to a TFAT volume may sometimes return ERROR_DISK_FULL even though there is plenty of free space on the media.
050421_KB896364 - Files copied to a storage card may fail to display if the card was formatted as FAT on the desktop.
In the case of FAT12 or FAT16, it is also necessary to specify FATFS_DISABLE_TFAT_REDIR (bit-wise OR with 0x00100000) in the
registry flags to fix the issue:
[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
“Flags”=dword:01540054
060331_KB916628 - TFAT volume corrupts when multiple threads write files under the same directory.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\COREOS\fsd\fatfs\api.c
private\winceos\COREOS\fsd\fatfs\buffer.c
private\winceos\COREOS\fsd\fatfs\cache.c
private\winceos\COREOS\fsd\fatfs\cacherw.c
private\winceos\COREOS\fsd\fatfs\disk.c
private\winceos\COREOS\fsd\fatfs\fatfs.h
private\winceos\COREOS\fsd\fatfs\find.c
private\winceos\COREOS\fsd\fatfs\path.c
private\winceos\COREOS\fsd\fatfs\volume.cprivate\winceos\COREOS\fsd\fatfs\fat.c
Component: TimeSVC
060721_KB921327 - Timezones/DST may not update correctly for 2007 US Timezone change.
070219_KB931927 - This release updates time zone registry data to resolve some DST 2007 related issues.
070823_KB940980 - This release updates time zone registry data according to new daylight savings changes for New Zealand and Western Australia.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\shell\oak\hpc\explorer\main\dst.cpp
public\shell\oak\hpc\explorer\main\dst.h
public\wceshellfe\oak\taskman\dst.cpp
public\wceshellfe\oak\taskman\dst.h
public\wceshellfe\oak\ctlpnl\cplmain\cplmain.rc
public\wceshellfe\oak\ctlpnl\cplmain\cplres.h
Component: Transcriber
041022_KB885852 - When selecting the Letter Shape Selector, the Help, OK, and Close buttons may not be displayed.
Component: TV Lens
040203_KB833271 - When using TV style navigation components, some images may resize for no apparent reason as the user moves the focus around the page with the Tab key.
050126_KB832123 - In case if some web pages are not loading and cause IE to spin, out-of-memory condition may occur.
050217_KB892931 - When Internet Explorer TV-Style Navigation "Disable Vertical Scrollbar and Events" component is featured, a vertical scroll bar may still appear on the web page.
050217_KB892931 - A user may not be able to navigate a web page using "Up/Down" arrow keyboard keys with Internet Explorer TV-Style Navigation.
Component: UDFS
040416_KB839426 - This is an update to the memory leaks that may occur on media insertion/removal, on volume mount/dismount, and while browsing folders on the media.
040521_KB840942 - The UDFS heap may grow unbounded as long as the file system driver remains loaded. This may cause memory issues when enumerating media that contains a large number of files and folders.
The following registry values have to be added in order to enable a configurable upper bound on the custom heap and the option to destroy/recreate the heap on media change:
[HKEY_LOCAL_MACHINE\System\Storage Manager\UDFS]
"HeapMaxSize"=dword:
<value> "DestroyHeapOnUnmount"=dword:
1 Where <value> is a maximum heap size in KB; setting it to 0 = "unbounded".
040714_KB872814 - UDFS may not properly handle a filename containing certain Unicode characters.
050609_KB900631 - UDFS may handle 8-bit per character OSTA Compressed Unicode strings incorrectly.
050610_KB900091 - An error may occur when attempting to access CD-ROM media while the file system is mounting.
071218_KB945933 - This update adds support for a long allocation descriptor.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\winceos\COREOS\fsd\udfs\udfs.h
private\winceos\COREOS\fsd\udfs\udfscdda.cpp
private\winceos\COREOS\fsd\udfs\udfscdfs.cpp
private\winceos\COREOS\fsd\udfs\udfsinit.cpp
private\winceos\COREOS\fsd\udfs\udfsmain.cpp
private\winceos\COREOS\fsd\udfs\udfsmnt.cpp
private\winceos\COREOS\fsd\udfs\udfssrch.cpp
private\winceos\COREOS\fsd\udfs\udfsudfs.cpp
private\winceos\COREOS\fsd\udfs\udfscln.cpp
private\winceos\COREOS\fsd\udfs\udfshelper.hprivate\winceos\coreos\fsd\udfs\udfsfind.cpp
Component: Unimodem
030916_KB824405 - Unimodem may not complete its hang-up routine after a successful RAS connection is made, resulting in the RAS server not allowing any further connections.
A new configurable registry key was added in order to provide a delay between commands sent to a modem to accommodate slower-responding modems:
[HKEY_LOCAL_MACHINE\ExtModems]
value: "CmdSendDelay"=DWORD:FA
Where the DWORD value is 0-500ms, entered as a hexadecimal. 250ms (FAh) as shown above is for example purposes only. Your modem may require a larger, smaller or no delay value.
No delay is introduced between commands if the CmdSendDelay value is not present.
If a value greater than 500ms is used it will default to 500ms, as 500ms is the maximum allowable delay this update allows.
The CmdSendDelay value is read from the registry during modem enumeration, so a device reset is generally required if the CmdSendDelay value is added or modified.
060113_KB911758 - A potential race condition in Unimodem may prevent connections to a Windows CE .NET 4.2 RAS server.
The file(s) with the new public source code changes for this component can be found in directory %_WINCEROOT%\:
private\winceos\COMM\tapi\unimodem\modem.c
private\winceos\COMM\tapi\unimodem\dial.c
private\winceos\COMM\tapi\unimodem\misc.c
private\winceos\COMM\tapi\unimodem\tspip.c
Component: UPnP, TCPIPv6
071207_KB945369 - This update addresses memory leaks that may occur if there are no UPnP devices available in network.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\servers\upnp\upnpcapi\upnpcapi.cpp
Component: URLMON
031024_KB830278 - Access violation may occur when accessing a page with .shtml extension. The extension gets replaced with .htm, but the code copies double the number of characters as it should.
031219_KB822914 - This update causes improperly formatted file:// access requests to be treated as the local security zone, preventing untrusted web pages in the Internet or Unknown zones from accessing local files.
040216_KB835846 - This is an update to a memory leak in URLMON that may cause a memory leak in FILESYS.
040305_KB835871 - Windows Media Player downloads a large multimedia file to the Internet cache without checking for available space. If the file is too large to fit into the cache, only part of the file is downloaded, filling all of the available storage space, and no cleanup operation is ever called. Any subsequent attempts to cache remote media files for playback may result in an exception in DirectShow, and no other files of any type may be accessed or cached through the Internet.
040726_KB872807 - This is an update to a memory leak in URLMON that may happen with web pages that regularly update information.
040928_KB885282 - When an integer value is entered in the address bar, an exception in URLMON and Internet Explorer termination may occur.
041103_KB888517 - An exception may occur when parsing HTML file using Wininet API.
041216_KB887584 - The issue with the index counting may cause HIDP status report not being read correctly.
050124_KB891435 - A buffer overrun in URLMON may occur when clicking on a HREF link to a really long URL.
050406_KB893227 - SH4 processor only: This update addresses the issue of possible decompression failure in URLMON.
060221_KB914067 - Wait cursor may not disappear on certain web pages that contain long URLs.
060523_KB918556 - Download to a file dialog opens when a user attempts to navigate to a web page. This may occur if a registry is set to use HTTP1.0 proxy.
060912_KB924290 - Internet Explorer may not completely load certain secure web pages.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\directx\cesysgen\makefile
Component: Viewers
040423_KB835850 - Image Viewer may not be started using the command line.
Component: WDMLIB
050204_KB893095 - CXPORT may not properly interpret a timeout value specified at load time by WDMLIB. This may cause some previously queued events to not fire.
Component: Web Server
040430_KB833270 - Security issue resolved: buffer overrun may occur when using ASP parser on the web server.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
private\servers\asp\parseext\parseext.cpp
Component: Windows Media Player
031114_KB830765 - Windows Media Player control may not display when loaded again as a "Windowed" control and displays an assert.
Component: WININET
030825_KB822540 - Certificate verification may fail for certificates with more than one Common Name.
Special build instructions:
After applying this update, please perform the "File\Build\Rebuild Platform" operation and perform a clean build of your project.
031023_KB829094 - ICSocket::IsReset is failing to detect that an idle socket has been closed. This results in an invalid server response when attempting to navigate to a previously opened page. IsDialogBoxHandled cannot be used to disable certificate warning dialogs.
040113_KB833564 - Multi-byte characters in the hard disk's root folder name may get corrupted internally preventing IE from saving cache, cookie or history files.
040506_KB838785 - When repeatedly browsing to new pages and prior to pages fully loading, the browser may hang for a while and then display a message "The page is not found".
040611_KB843624 - If index.dat does not exist or corrupted, new index.dat and cache folders will be created. Old cache folders may not get deleted if they contain no cached files.
041201_KB890216 - HTTP request may not be sent to the web server after canceling previous requests.
050127_KB891786 - This update addresses possible Passport security vulnerability issue.
050127_KB891784 - This update resolves a possible buffer overflow issue in WININET.
070320_KB933681 - This update addresses an error that may occur when handling some HTTP responces.
070531_KB937712 - This update addresses possible small memory leak when navigating with Internet Explorer.
071031_KB943504 - Internet Explorer and other WinInet applications may return incorrect free storage space. In low memory condition, temporary Internet files may get deleted.
071031_KB944657 - This update addresses an issue with the cache file not being created.
Component: WinMgr
040206_KB832266 - This update corrects second chance exceptions handling and allows them to be passed to the Just-In-Time (JIT) debugger.
Component: WMP Control
041015_KB887538 - A buffer overrun may occur when trying to open a URL of greater than 248 characters.
Component: WPA
040422_KB839933 - A device may not disconnect/disassociate from a WPA Access Point after receiving a series of bad packets from it.
The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\ddk\inc\nuiouser.h
public\common\oak\drivers\ndisuio\ndisuio.h
public\common\oak\drivers\ndisuio\uio_ce.c
Component: ZeroConfig 802.11
040908_KB884036 - Roaming and re-association events between non-EAPOL Access Points on the same network may not get logged.
050201_KB884847 - EAPOL authentication may take too long to complete, which may cause issues in certain network features, such as VoIP. 4-way handshaking may ignore EAPOL keys and result in a timeout.
050331_KB895105 - Under certain circumstances wireless authentication may fail in the very first part of the 4-way handshake.
050201_KB884847 - Some WPA Registry settings might not work as expected. Possible issues with the improper destruction of an EAPOL session are resolved.
060908_KB923880 - A device may hang under conditions of heavy 802.11x wireless traffic.
The file(s) with the new public source code changes for this component can be found in the directory %_WINCEROOT%\:
public\common\ddk\inc\ntddndis.h
public\common\oak\inc\eapol.h
Additional information for the fixes in the update 031203_KB812950:
Coding Techniques
Shared IST
The performance gain can only be achieved if the miniport driver indicates multiple packets (i.e. using NdisMIndicateReceivePacket ()) and with NDIS_STATUS_SUCCESS (i.e. letting the protocol driver keep the packets for processing).
Before enabling this functionality, please note the following concerns:
NDIS assumes that the system runs in ALLKMODE.
OEMIntrMask stores the bits mask value of the 1 << IRQ, whereas OEMIntrEnable stores the IRQ number.
To enable the shared IST behavior, the OEM must implement changes in the OEM Abstraction Layer (OAL) code, as illustrated below. If the query for IOCTL_HAL_SYSINTR_NETWORK returns false, the shared IST functionality is not enabled, and the system will behave as before.
Once shared IST changes are enabled, the priority to run MBridge must be overridden in order to effectively implement the MBridge optimizations. This is accomplished with the following registry key:
[HKEY_LOCAL_MACHINE\Comm\MBRIDGE]
"PRIORITY256"=dword:74
There are 2 shared global variables that are needed between NDIS and the ISR code. OEMIntrMask stores the bits mask value of the 1 << IRQ, where as OEMIntrEnable stores the IRQ number.
NDIS uses the IOCTL_HAL_SYSINTR_NETWORK to query the address of these variables as shown below:
ULONG OEMIntrEnable = 0;
ULONG OEMIntrMask = 0;BOOL OEMIoControl(
DWORD code, PVOID pInpBuffer, DWORD inpSize, PVOID pOutBuffer, DWORD outSize,
DWORD *pOutSize
) {
BOOL ok = TRUE;
….
case IOCTL_HAL_SYSINTR_NETWORK:
if (outSize < 2*sizeof(ULONG) || pOutBuffer == NULL) {
ok = FALSE;
SetLastError(ERROR_INVALID_PARAMETER);
break;
}
((ULONG*)pOutBuffer)[0] = (ULONG)&OEMIntrMask;
((ULONG*)pOutBuffer)[1] = (ULONG)&OEMIntrEnable;
if (pOutSize != NULL) *pOutSize = 2*sizeof(ULONG);
break;...
return ok;
}
The OEMIntrMask variable is updated by the ISR code as the SYSINTR_NETWORK is returned as shown below (MIPS example):
la a0, OEMIntrMask
lw a1, 0(a0)
or a1, (1 << IRQ_MAC1)
sw a1, 0(a0)
j ra
li v0, SYSINTR_NETWORK
The OEMIntrEnable variable is updated by NDIS before it calls InterruptDone( ) and InterurptDisable( ) which map to OEMInterruptEnable( ) and OEMInterruptDisable( ) respectively. The HAL code will then need to consider OEMIntrEnable to determine which interrupt to enable or disable.
Code sample below:
BOOL OEMInterruptEnable(DWORD sysIntr, LPVOID pvData, DWORD cbData)
{
DEBUGMSG(FALSE, (L"+OEMInterruptEnable %d\n", sysIntr));
switch (sysIntr) {
case SYSINTR_NETWORK:
if (OEMIntrEnable == IRQ_PCI) {
OUT32(PCI_BASE + PCI_INTMASK, PCI_INT_PA);OEMIntrEnable = 0x00;
}
break;
Enabling IMGLOADNETHIGH and cxport alloc from physical memory.
On certain architectures and performance-critical scenarios such as network routing, the translation lookaside buffer (TLB) miss handling can have a large impact on performance. To address this, two optional changes were made to Windows CE .NET 4.2 which enable the network stack direct access to physical memory for critical code and data. First was an option to allocate memory for use by the networking stack out of the kernel memory region (above address 0x80000000). The second change was loading some DLLs’ code into the same region. In Windows CE memory above 0x80000000 is partitioned into two blocks, 0x80000000-0xa0000000 that is mapped to contiguous CACHED physical memory, and 0xa0000000-0xc0000000 which is mapped to UNCACHED physical memory. Both regions are either mapped with larg TLB entries (on x86 or ARM), or CPU architecture defined (SHx or MIPS). Therefore, code running out of it, as well as data addressed from it generates no TLB miss penalties.
To enable the networking stack to allocate from this high memory region, set the following registry key:
[HKEY_LOCAL_MACHINE\Comm\Cxport]
“PhysHeap”=dword:1
Note1: The heap created in high-memory region will not be tracked with LMEMDEBUG.
Note2: The heap in high memory region is committed in large blocks (192K, as opposed to page granularity of normal heap), and is not subject to per-page decommit on compacting. As such it is considerably less memory-efficient than the normal heap.
Note3: The file(s) to be loaded high must be in the FILES section in the .BIB file.
To force loading DLLs into high memory region, in the HAL code, set the following variable early in your OEMInit() function:
extern BOOL (*pfnOEMIsKernelSpaceDll) (LPCWSTR pszDllName);
to a pointer to a function that will be called by the loader every time a DLL is about to load. The function will be passed a pointer to DLL’s name. Return TRUE if the DLL needs to be loaded into high memory space.
Examples of DLLs that could be loaded in high memory region for high-performance networking/routing scenario are: tcpstk, cxport, ndis, mbridge, ipnat, fw6 as well as network and/or wireless network miniport drivers.
Modules that are intended to be loaded into high memory area of the kernel space need to have their placement in image adjusted by ROMIMAGE tool (part of makeimg process). This can be done by listing the modules under the FILES section:
Ex. common.bib:
...
FILES
...
ndis.dll $(_FLATRELEASEDIR)\ndis.dll NK SH
...
or under the MODULES section with the 'K' flag set:Ex. common.bib:
...
MODULES
...
ndis.dll $(_FLATRELEASEDIR)\ndis.dll NK SHM
...
Failure to place modules in the FILES section may result in exceptions during device boot time when loading these modules.
Note that an uncaught exception in the high-memory region is treated as a kernel exception and causes the entire system to halt! Debug your platform fully before putting DLLs into the high memory region.
Also note that DLLs loaded into a high memory region can only be loaded by a single process. That is, if a DLL is being used by more than one process, it cannot be loaded into a high memory region or it will fail when the second process tries to load the DLL. These DLLs are also need to be moved to the FILES section from the MODULES section where they reside by default in ce.bib file.
Sample implementation of aforementioned logic would be:
#if defined (IMGLOADNETHIGH)
static LPCWSTR pszSpecialDlls[] = {
L"tcpstk",
L"cxport",
L"ndis",
L"mbridge",
L"ipnat",
L"fw6",
L"myminiportdriver",
L”mywirelessminiportdriver”
};
static WCHAR lowerW(WCHAR ch) {
return ((ch >= 'A') && (ch <= 'Z')) ? (ch - 'A' + 'a') : ch;
}
static int strcmponeiW(const wchar_t *pwc1, const wchar_t *pwc2) {
while (*pwc1 && (lowerW(*pwc1) == *pwc2)) {
pwc1++;
pwc2++;
}
return (*pwc1 ? 1 : 0);
}
static int strcmpdllnameW(LPCWSTR src, LPCWSTR tgt) {
while (*src && (*src == lowerW(*tgt))) {
src++;
tgt++;
}
return ((*tgt && strcmponeiW(tgt,L".dll") && strcmponeiW(tgt,L".cpl")) || (*src && memcmp(src,L".dll",10) && memcmp(src,L".cpl",10))) ? 1 : 0;
}
static BOOL CheckDlls (LPCWSTR pszDllName) {
int i;
for (i = 0; i < sizeof(pszSpecialDlls)/sizeof(pszSpecialDlls[0]); i ++) {
if (!strcmpdllnameW (pszSpecialDlls[i], pszDllName)) {
RETAILMSG (1, (L"CheckDll: %s returns TRUE\r\n", pszDllName));
return TRUE;
}
}
return FALSE;
}
extern BOOL (* pfnOEMIsKernelSpaceDll) (LPCWSTR pszDllName);
#endif
void OEMInit(void)
{
…
#if defined (IMGLOADNETHIGH)
pfnOEMIsKernelSpaceDll = CheckDlls;
#endif
Sample steps to pragmatically move the DLLs to the FILES section (This will update ce.bib file during the makeimage process):
Create a preromimage.bat file in % _TARGETPLATROOT%\FILES directory with the following text; you may need to modify this script to include/exclude files based on the pszSpecialDlls list.
@echo off
IF not "%IMGLOADNETHIGH%"=="1" goto :endfile
echo Moving DLLs to the file region
pushd %_FLATRELEASEDIR%
findstr /I " mbridge.dll ipnat.dll fw6.dll tcpstk.dll cxport.dll ndis.dll myminiportdriver mywirelessminiportdriver " ce.bib > ce_net.bib
findstr /I /v " mbridge.dll ipnat.dll fw6.dll tcpstk.dll cxport.dll ndis.dll myminiportdriver mywirelessminiportdriver " ce.bib > ce_nonet.bib
copy /A ce_nonet.bib+ce_net.bib ce.bib
popd
:endfile
The file(s) with the new source code changes for this update can be found in the directory %_WINCEROOT%\
public\common\cesysgen\makefile
public\common\ddk\inc\ntcompat.h
public\common\oak\drivers\ceddk\ddk_time\ddk_time.c
public\common\oak\inc\nkintr.h
public\common\oak\inc\pkfuncs.h
public\common\sdk\inc\winbase.h
platform\Aspen\inc\oalintr.h
platform\Aspen\inc\oalintr.inc
platform\keywest\inc\OALINTR.H
platform\keywest\inc\OALINTR.INC
private\winceos\COMM\tcpipw\ipnat\autodial\autodial.c
private\winceos\COMM\tcpipw\ipnat\autodial\autodprv.h
private\winceos\COMM\tcpipw\ipnat\autodial\sources
private\winceos\COMM\tcpipw\ipnat\autodial\status.cpp
private\winceos\COREOS\core\inc\coredll.h
private\winceos\COREOS\core\lmem\heap.c
private\winceos\COREOS\core\lmem\heap.h
private\winceos\COREOS\core\lmem\rmem.c
private\winceos\COREOS\nk\kernel\loader.c