WinCE Drive development issues Highlights

Source: Internet
Author: User
Tags builtin readfile

How do I get the system to load my own written driver?  Two ways: 1, add the registration key under [Hkey_local_machine/drivers/builtin].     2. Call Activatedeviceex in the application. In some files, a semicolon is used to express comments, such as the following content; @CESYSGEN IF servers_modules_httpd;  @CESYSGEN ENDIF added "@" before "Cesysgen ...", is there any special meaning? In some documents of wince, use ";" As a comment and use @cesysgen as the tag in the comment text, followed by the conditional statement.     The Cefilter.exe tool is responsible for filtering the contents of the file according to the criteria, so do not easily delete the comment statement that contains the @cesysgen.   Through the serial port to establish ActiveSync connection, serial line with three-wire can it?          No, because using the serial port synchronization to use the rest of the state of the port.  Does wince support MAPI? Not supported. WinCE's own Pmail.exe software is also not very useful. It is recommended that you develop your own mail messaging software.     If you need to purchase wince mail software, you can contact me.  How do I rotate what the screen displays?   The example code is as follows (provided the display driver supports rotation): DEVMODE DEVMODE = {0};   devmode.dmsize = sizeof (DEVMODE);       Devmode.dmdisplayorientation = dmdo_90;   Vertical mode devmode.dmfields = dm_displayorientation;  ChangeDisplaySettingsEx (NULL, &devmode, NULL, 0, NULL);    Change the display settings CRect rcworkarea (0, 0, 320, 240); Entire screen size///Set the client area size and broadcast the message so that all software changes to show SystemParametersInfo (Spi_setworkarea, 0, (void*) &rcworkarea, spif_      Sendchange);  How can I modify the capacity of the glyph cache?  [Hkey_local_machine/system/gdi/glyphcache] "Limit" =dwoHow does rd:0400 get started from wince to the present time?     Calling API GetTickCount, the resulting value is a 32-bit integer in milliseconds.  How do I call WinCE's soft keyboard?     Call API Sipshowim (SIPF_ON), provided the kernel joins the soft keyboard component.  Hive-based registry, how to save the registry data to file SYSTEM.HV before the system shuts down?     Call the API RegFlushKey function.  What do I need to be aware of when using VirtualAlloc and virtualcopy? 1, the role of VirtualAlloc is to apply for virtual address space, which is certainly not the ultimate goal, the ultimate goal may be to apply for physical memory, mapping registers, submit files and so on. There is no purpose to care about the location of the virtual address space, so try to pass the parameter 1 to 0, that is, let wince automatically allocate the virtual address space.  The VirtualAlloc allocation address space is actually in 64KB, so to specify the first address of the requested virtual space, the parameter 1 should be an integer multiple of 64KB, the length of the request should also be an integer multiple of 64KB, even if you do not need that large. 2, the main role of Virtualcopy is to map the physical address space, if the parameter 2 is a physical address, then the last parameter to add page_physical, parameter 2 must be 256 integer times.     If the parameter 2 is a virtual address (above 0x80000000), then the last parameter does not add the Page_physical,wince kernel will find the corresponding physical address according to this virtual address.  When is the mapptrtoprocess called when data is passed between the driver and the application? Because Device Manager is responsible for loading the driver DLL, this means that when the application calls the driver interface function, the wince kernel transfers the thread that invokes the driver interface function to the process space of the Device Manager and executes the specific driver code, and the application and Device Manager are in two process spaces. This causes the Device Manager to be unable to access the pointer (virtual address) passed by the application, so when we pass the pointer to the stream driver interface function in the application, the WinCE kernel makes an address map from it, such as ReadFile, WriteFile, The parameters of the DeviceIoControl function are usually mapped before passing to the driver, so many driver developers do not understand the mysteries of the program. However, if the parameter is a pointer to a struct, and the struct contains one or more pointers, then the WinCE kernel is not responsible for mapping, so it is necessary for the developer to invoke the API function m in the driver interface functionApptrtoprocess to map the address.      For example: Ppointer_retval = mapptrtoprocess (Ppointer, getcallerprocess ());  How can I tell if a pluggable device exists? 1. By looking up the value of the registry. Any driver loaded by API Activatedeviceex has a registration key under the [Hkey_local_machine/drivers/active] key, which can be found by looking for "name" or other key values. This API is called by Device Manager.  If it is a PCI device, look for the keyword under the registry [Hlm/drivers/builtin/pci/instance], for example [Hlm/drivers/builtin/pci/instance/wavedev1], which indicates that the audio driver has been loaded.     2, call the driver interface function, according to the return value or execution results to judge.  How to do a signal through the serial port to start their own development of the application? Create a thread responsible for waiting for the serial port to come over the signal, call API Setcommmask set to wait for the type of signal, the specific can wait for the type of signal see parameter 2 description.     Then call the API Waitcommevent function to wait for this signal, and then call the API CreateProcess to launch the application after receiving it.  How can I launch only one instance of the application in wince?  Two common approaches: 1. If the application instance creates a window, it can be found through the API FindWindow function through the window class name and window title name, provided that the window name duplication does not occur within the system.     2. When the application initializes, create a kernel object such as an event or mutex, because the kernel object is created by the kernel and the name is unique within the system.  Can you edit a digital signature file to be imported to your phone so that you could sign your own program with this signature? The purpose of WinCE's kernel signing mechanism is to restrict illegal executable module EXE, DLL, etc. to run on the device.     It is required that the kernel's loading module use the public key to verify that the EXE, DLL's signature is valid, and that the public key is added to the custom kernel, so that someone other than the kernel Customizer cannot modify the authentication mechanism.  I follow the moderator's article, "Encryption wince system," the operation, the following errors: Error 80090016 during Cryptsignhash 1! Error signing Hash This is because the invalid key container name was passed and the CryptoAPI call failed. You should use signFile tool before creating a key container, calling API CryptAcquireContext in desktop Windows to create a key container with the specified name, and then creating a signing key pair, then use the SignFile tool.     I wrote-kfulinlin in the article because I did not specify a name when I created the key container, and the system uses the name of the user that is currently logged in as the container name. Compilation error: Cvtres:fatal error cvt1102:out of memory;  Bytes required? In most cases this error is due to EVC bug, should install EVC immediately after installing the eVC SP patch.     In addition, in order to avoid the bug, use EVC programming should develop some habits, such as regular backup project all files, each compile with clean + Rebuild all, while debugging do not close the emulator and so on.  Is it possible to get the total amount of physical memory used by a process under wince? There is no one API that can get the total amount of physical memory used by the specified process.     Only GlobalMemoryStatus can get the total amount of physical memory used by the entire system. How does the application control the brightness of the LCD?  How do I get the battery power? From common platforms such as Geode, Samsung Arm series, it is true that there is no unified interface function for controlling LCD or other kinds of screen brightness in the driver, so it can only be done according to the interface provided by the specific platform.  From the help document, Microsoft's display driver with the DirectDraw feature does have a standard interface function for increasing brightness, see the help document titled "Enabling a Backlight" for background light.     There is a standard interface function getsystempowerstatusex to get the battery power, provided the driver and hardware are supported.  Does the wince socket function seem to support send/receive timeouts?     Yes, the earliest version of the WinCE support option So_rcvtimeo, So_sndtimeo, and later did not support it.  WinCE how to set the window to maximize and minimize? WinCE's help document describes the parameters of the API ShowWindow function sw_maximize, sw_minimize, Sw_restore, Sw_showdefault, sw_showmaximized, Sw_        Showminimized, sw_showminnoactive are not supported, but actually not exactly, specifically: sw_maximize    Larger than the original window, but not maximized Sw_minimize compilation succeeds, but does not work sw_showmaximized maximizes sw_showminimized compilation error Sw_restore Can recover Sw_showdefault compile error sw_showminnoactive compile error sw_hide can hide how to call the Control Panel using the Program Touch Screen School   To the program?     Two ways: 1, call API Touchcalibrate function 2, call CreateProcess, parameter 1 is L "//windows//ctlpnl.exe", Parameter 2 is L "cplmain.cpl,9".  How do I get the USB stick or other types of memory and the remaining available capacity? Call API Getstoreinfo to get the number of sectors, bytes per sector, multiplied by the total capacity.     Call API GetDiskFreeSpaceEx to get the remaining usable capacity.  Samsung 2440 header file defines the # define Iic_base 0xb1400000//54000000,datasheet is 54000000, then how to turn into 0xb1400000? There are two kinds of physical address mapping methods, one is static mapping and the other is dynamic mapping. In oemaddresstable, the mapping relationship between physical address and virtual address belongs to static mapping, and virtualcopy mapping belongs to dynamic mapping, which method can be used.  The problem refers to the static mapping, 2440 of the BSP in the Map.a file defines the IIC control register physical start address and corresponding virtual address as follows: DCD 0x91400000, 0x54000000, 1; The range of virtual addresses defined in Oemaddresstable is 0x8000 0000-0x9fff FFFF, which can be cached for use by kernel programs and applications, while the wince kernel maps another copy in 0xa000 0000-0xbfff FFFF. Points to the same physical address, which is not cacheable and is suitable for use by the driver. The Samsung ARM processor comes with a L1 cache, which improves execution efficiency.  For special device registers, it is appropriate to map to a non-cacheable virtual address. When the driver calls Virtualcopy to read and write to the 0xb1400000 address, WinCE automatically subtracts the address from 0x2000 0000, that is, 0x91400000, the corresponding physical address is 0x54000000, which is the physical starting address of the IIC control register.  How does the RAM-based registry save data? Call API Regcopyfile to back up the registry.     Call the API RegRestoreFile restore the registry, and then call KernelIoControl hot start to make the recovery take effect.   How do I hide and show the taskbar for a standard shell under wince?    HANDLE Htaskbar = FindWindow (L "Hhtaskbar", NULL);    ShowWindow (Htaskbar, sw_hide);      ShowWindow (Htaskbar, SW_SHOWNORMAL);  What if I can get wince's IE browser to play Flash animation? Play Flash requires Macromedia Flash Player SDK, see http://www.adobe.com/products/flashplayer_sdk/.     This is similar to Real player and requires the SDK for the WinCE platform.  What is the difference between kernel mode and user mode under wince? In order to enable readers to learn more about WinCE's address mapping principle there are two modes, here I divided into several parts: 1, WinCE kernel Nk.exe The task is to manage the core functions of the operating system. According to oemaddresstable mapping requirements, all physical addresses are mapped to more than 0x80000000, Therefore, for kernel program Nk.exe and kernel mode threads, it is a feature of kernel mode that no re-mapping is required as long as the valid virtual address above 0x80000000 is able to access the physical address via the MMU.  The second feature of kernel mode is that there is no address access restriction, and kernel-mode threads can access any valid virtual address, so-called valid virtual address refers to the actual thing correspondence. 2, the user-mode thread can only access the virtual address space below 0x80000000, WINCE6.0 the previous version of the kernel for each process partition 32MB address space, without calling special functions can not access each other, such a design makes wince system more secure, more stable, Restricting access to addresses is the first feature of user mode.  The second feature is the need for more than one layer of mapping, if the thread to access physical memory, the need to map to 0x80000000 above, and then access the physical memory address by the MMU. WinCE thread has a transfer (refer to API getcallerprocess for a good example) when the application thread calls aPi or call the driver interface function, the thread will be transferred to Gwes.exe, Device.exe, Filesys.exe and other processes to execute, the transfer is operated by the WinCE kernel, it modifies the thread's context, records the thread's current process, the caller process,  Owner process three values. 3. If you select "Full Kernel mode" When customizing the kernel, all threads running on this kernel are in kernel mode, even if the thread still has kernel mode after calling Setkmode (FALSE), can access any valid virtual address. Assuming that an existing 64MB Ram wince product, RAM mapping from 0x80000000 to 0x84000000, if the thread is in kernel mode, it can directly access the virtual address of this range: write a DWORD in OnButton1 () Oldmode =  Setkmode (FALSE); volatile int *pitemp = (volatile int*) (0x20000000+0x84000000-0x00019000);  or (0x84000000-0x00019000) *pitemp = 12345;  Write DWORD Oldmode = Setkmode (FALSE) in OnButton2 (); volatile int *pitemp = (volatile int*) (0x20000000+0x84000000-0x00019000);  or (0x84000000-0x00019000) int iTemp = *pitemp; Just execute OnButton1 () and then close the program, restart the program, and then execute OnButton2 (), itemp still equals 12345.  The results illustrate two points: kernel-mode threads have direct access to valid virtual addresses above 0x80000000; We write that the data in RAM is not lost, indicating that the virtual address is valid. If "Full Kernel mode" is not selected when customizing the kernel, then all threads running on this kernel are in user mode.  You can call Setkmode (true) to have the calling thread temporarily in kernel mode or the original hypothetical environment, I'll give you another example: Write a DWORD Oldmode = Setkmode (TRUE) in OnButton1 (); volatile int *pitemp = (volatile int*) (0x20000000+0x84000000-0x00019000);  or (0x84000000-0x00019000) *pitemp = 12345; In user mode, if you do not call Setkmode (true), the Execute *pitemp = 123,451 will pop up the dialog box, prompting for address access is illegal, if the call Setkmode (TRUE) will not prompt the address access is illegal, and in the OnButton2 ()  Can still get 12345 of this value.  Through these two examples I believe the reader can fully understand the differences between the two modes. 4. WinCE provides two functions Setkmode and setprocpermissions, where setkmode can switch the calling thread to kernel mode and switch back to user mode. Setprocpermissions + Getcurrentpermissions Adds the current process access to the calling thread, Setprocpermissions (0xFFFFFFFF) allows the calling thread to access all process space, But the calling thread is still in user mode.  The Setkmode and setprocpermissions functions make the user-mode feature less clear. As mentioned above, the thread of one application may be transferred to read and write data in the other two process address space, and each thread is created with access to the process address space that created it. So the driver developer must call Setkmode before the driver reads or writes the data, or setprocpermissions increase the access to other process space by the thread calling this function. If the thread of an application is only transferred to a process address space, Typically, the Device Manager process Device.exe, in which case you do not have to increase the permissions of the thread to access other process space, but if the driver itself creates a thread, it is still necessary to call Setkmode or setprocpermissions to add new threads to access other processes because the driver creates the line  , the current process is Device Manager, so the new thread only has access to the Device Manager process space and does not have permission to access the application process space. 5. Perhaps a beginner who has written a simple stream driver will be puzzled because developing a simple stream driver does not need to call these functions at all, nor does it call mapptrtoprocess, because if the parameters of the standard stream-driven interface function are pointers (ReadFile, WriteFile, DeviceIoControl parameters have pointers), the WinCE kernel will automatically map the address that the pointer contains, but that's all, the rest of the situation requires the developer to handle it, such as the flow interface function parameter is a pointer to the structure of the PA, and the structure of the bodyPB,PB pointers, including pointers, must be mapped in the Stream interface function before they can be accessed, otherwise it will result in illegal address access.  So each pointer in the struct is mapped. For the reader to understand the reasons, let me give an example: Assuming the Device Manager is loaded into SLOT4, application A is loaded into the slot 8,a only one main thread t,t start execution, according to WinCE, the process that is getting the CPU must map to Slot0, Then at the time of executing the code, all the virtual addresses of a are subtracted by an offset value, that is, 8x0x02000000,a call DeviceIoControl, passing a pointer to a struct B, and this struct contains a pointer C, Pointer c contains an address that is assumed to be 0x00030000 and wince the process address space of the Device Manager to Slot0 when executing DeviceIoControl because it is placed in the registry [Hklm/drivers/builtin] The driver is loaded by Device Manager, the natural driver's code snippet is loaded into the Device Manager process space, but the thread is still t, and the current process for T is Device Manager (currentprocess), and a becomes the caller process of T (callerprocess), T automatically has access to the caller process space. In this case, access to the virtual address in the Slot0 is essentially the process address space to access the Device Manager, to add an offset value, that is, 4x0x02000000, so DeviceIoControl access to the pointer C contains the address should be added 8x0x02000000, But add 4x0x02000000, the result address is not the Device Manager's legitimate zone, the system will prompt the address access is illegal.     If a mapping is made, the address contained in the pointer C will be given a correct offset value, so that the address in the address space of a is slot 8, T has access to the a process space, access to the correct virtual address will of course get the correct data.  Why does the example under the WinCE directory be compiled into EXE files with Build+sysgen, and the examples I add cannot be compiled? If this example is an application, then certainly includes the code file (. h. C. CPP) and resource files (. rc and other resource files), the build tool compiles the code files into Lib files based on the contents of the source file, compiles the resource files into a. res file, and the Sysgen tool merges each library file listed in the source file into an ex based on the contents of the makefile file E file. So the key is that the makefile file, WinCE directory is able to build+sysgen compiled by the makefileThere are settings in how to link, and the example we added is of course not found in makefile how to link the settings, the NMAKE tool will prompt do not know how to create.  What's with Pcienum.exe? If you are developing a driver for a PCI device, you first need to know the information for this PCI device (such as VendorID, DeviceID, BaseClass, subclass), and the PCI bus. Run this pcienum.exe to get the relevant information.     Pcienum.exe provides the source code, location/public/common/oak/drivers/ceddk/test/pcienum. WinCE how to get the operating system into Standby mode?  And how to activate it? It can be set up via the registry, provided your drivers and hardware are supported.  See the help document titled "GWES Suspend Time-outs" for the registry key.      [Hkey_local_machine/system/currentcontrolset/control/power]      "Battpoweroff" =dword:300 "Extpoweroff" =dword:0     "Wakeuppoweroff" =dword:60 "Screenpoweroff" =dword:0  Existing GPRS module, how to connect to the Internet via GPRS? 1. Add several components under the WAN to the kernel first, such as RAS/PPP, TAPI.  The wince is unimodem driven, so there's no need to worry about modem-driven support. 2, wince after the start of a new dial-up connection, such as the name "Gprs1", enter the user name, password, phone number.  Phone numbers are different, the mode used is not the same, for example, "*99#" is the GPRS mode, "17201" is the normal data mode, the speed is much worse, the price is much worse.  3. Start the connection, and the connection process will be displayed in the dialog box until the connection is successful.  4, open the browser or your own development of communication software testing network connectivity.  5, close the connection.  6, save all the data under [Hkey_current_user/comm/rasbook/gprs1], add to Project.reg, after recompiling, there is a dial-up connection "gprs1" in the kernel. 7, call the RAS function can modify the dial-up connection "gprs1" parameters, such as user name, password, phone number, but can not modify the hardware settings, such as baud rate, serial port, data bits, stop bit and so on. RAS functions can also dial,Hang up.     In order to modify the baud rate can save several dial-up connections, you can also directly call TAPI development dial-up software, in addition to the wince comes with the dial-up connection is source, location in/PUBLIC/COMMON/OAK/DRIVERS/NETSAMP/CONNMC.  How does the hive-based registry Delete the data that the user has in the registry and restores it to the factory registry? The user modified data is saved in the USER.HV file, the deletion must fail, so the factory settings cannot be restored by deleting the file. With this in mind, Microsoft calls the Oemiocontrol function when Filesys.exe loads the registry during wince startup and passes an IOCTL, which is defined in Pkfuncs.h as follows: #define Ioctl_hal_get _hive_clean_flag Ctl_code (File_device_hal, method_buffered, file_any_access) Filesys.exe will pass the parameters separately Hivecleanflag_ System and Hivecleanflag_users, if the return value is True then Filesys.exe clears the original registry file, and if the return value is False then Filesys.exe retains the original registry file. The default wince does not implement this IOCTL, so OEMs must first write this IOCTL code to delete the registry file. The code example can refer to the Help document titled "Ioctl_hal_get_hive_clean_flag". This code must also be written in the ioctl.h and ioctl.c two files. Find the const Oal_ioctl_handler g_oalioctltable[] in the ioctl.c file and add the IOCTL and corresponding handler functions.    To learn more about this global array, see the help documentation titled "IOCTL Library."  How can I reduce the length of the kernel file without removing the necessary components? To reduce the kernel file length first, choose Custom in the PB-only custom Kernel Wizard, which means that each component is chosen by itself rather than the PB standard configuration.  However, the most effective way to reduce the kernel file length is to reduce the font, especially for East Asian fonts, using font compression technology and choosing a reasonable library file will significantly reduce the file length. 1. Select the Agfa AC3 Font compression component when customizing the kernel.  The Sysgen variable is sysgen_agfa_font. 2, the reference title is "East asIan Font Versions "help document, from which you choose the font file you need to add to the kernel, from the document can be seen AC3 compression ratio is not compressed in the file length gap is very large.  How to get the total time of WAV file playback?  1, directly read the WAV file header information, from the file start address offset 28 bytes Length of 4 bytes is the number of bytes played per second, from the file start address offset 40 bytes length of 4 bytes is the total number of bytes of sound data, dividing is the playback time. 2, call Igraphbuilder::renderfile Open a WAV file, and then get imediaseeking pointer through Igraphbuilder, and then call Imediaseeking::     Getduration Gets the total time (the result is divided by 10000000), Imediaseeking::getcurrentposition gets the current playback time.  How do I add menubar to the dialog-based program?     Call Commandbar_create before calling Commandbar_insertmenubar.  Excuse me MultiByteToWideChar and _t, L, text difference? The MultiByteToWideChar function converts an object that can be a constant or a variable. Other constants can only be converted.     _t and text will decide whether to convert based on whether the current system defines _UNICODE macros, and L is converted to wide characters, and of course other types of constants are converted.  How do I plug in the USB cable and wince automatically sync with the PC when using the UBS cable through ActiveSync Sync is effective?  1. Create a new dial-up connection, assuming the name is "USB1", select the connection type "direct connection" and select Connect via USB cable in the connecting device.  2. Add the data under the registry [HKEY_CURRENT_USER/COMM/RASBOOK/USB1] to the Project.reg or Platform.reg. 3. Under [Hkey_current_user/controlpanel/comm], add the following: "Autocnct" =dword:1///Direct connection "cnct" = "usb1"///Connection name 4, recompile kernel.     To save compilation time, you can search for the *.reg file under Kernel Engineering, add the registry data from 2, 3 steps, and make the image directly.  How can I get the main window handle of the process through a process handle? There seems to be no API to passThe handle to the main window is obtained directly from the process handle, because not every application has a UI.     However, you can, in turn, enumerate all the main windows of the current system, then call the GetWindowThreadProcessId function to get the process ID based on the handle of each window, and then call OpenProcess to get the process handle compared to the existing process handle. I made the display driver DLL has been compiled successfully, but in the loading display driver process pop-up box, prompt as follows: Unhandled exception in Gwes.exe (0xc0000005 access violation) Prompt error--address access is illegal Indicates that your driver code does not add Setkmode (TRUE) or the setprocpermissions (0xFFFFFFFF) function before reading and writing the data to allow the thread to access the address space of any process. You can call the IsBadReadPtr and ISBADWRITEPTR functions to detect if an address is legally accessible.     It is a good practice to write and Gwes related drivers first by calling Setkmode (TRUE) or the setprocpermissions (0xFFFFFFFF) function.  How to set the APN for GPRS dialing in the embedded system? For a dial-up connection such as "My Connections" right-click, select "Properties" in the pop-up menu, then click "Configure"-"Dialing Options" and add the AT command in "Additional settings" such as "+cgdcont=1," "IP", "Cmnet".     The "cmnet" location is the APN.  What is the WinCE IP Phone feature? WinCE VoIP needs C-S-C structure, not only need the server relay, and Skype uses the third-generation peer-to technology does not need to relay, but in the GPRS also do not have voice fluency.     Skype has a Pocket PC version, but wireless requires WLAN or CDMA.  How does the Samsung arm platform define its own interrupt ID? Take s3c2410 as an example, define the interrupt ID in the Oalintr.h file, also known as SYSINTR, such as #define SYSINTR_MYINT (SYSINTR_FIRMWARE+20), and the maximum value cannot exceed sysintr_firmware+ 23. Then find the Oeminterrupthandler function in the armint.c file, use if (Intpendval = = intsrc_xxx) to determine the current interrupt source number, and then return to Sysintr_myint. The kernel calls Oeminterrup separatelyTdisable (prohibit current interrupt), Oeminterruptdone (interrupt processing end), oeminterruptenable (current interrupt active) Three functions, parameters are interrupt ID, in these three functions with case sysintr_     Myint determines the current interrupt to be processed.  How to develop software to copy files from PC to wince-based devices? Call the RAPI (Remote application Programming Interface) function, which is called by the desktop computer and executed by a wince-based device. Once connected, you can call RAPI on the desktop computer side. The registry also allows you to restrict the scope of RAPI access to the directory.     Refer specifically to RAPI and RDP (Remote Desktop Protocol).  How do I partition and format the Nandflash? You look at Wince420/public/common/oak/drivers/ethdbg/bootpart/bootpart.cpp, in eboot first call Bp_lowlevelformat (DWORD Dwstartblock, DWORD Dwnumblocks, DWORD dwFlags) re-create an empty MBR in a region of Flash, and then call Bp_openpartition twice in a row (DWORD dwStartSector, DWORD Dwnumsectors, DWORD Dwparttype, BOOL Factive, DWORD dwcreationflags) functions to establish BINFS and fat partitions.      Once built, burn the nk.bin into the Binfs partition.  To make a pop-up dialog box with the always on top property, how do I do it?     Call SetWindowPos (.., Hwnd_topmost, ......., swp_noactivate).  S3c2410+wince under the network ping A will be broken, how to solve? The reason is that the interrupt handler clears the interrupt flag that has been generated, thus losing one interrupt. Because the configuration interrupt in the original drive is triggered by the rising edge, a loss of one interrupt will result in no more interrupt signal jumps, because the next interrupt will only occur if the cs8900 Interrupt status queue Register is read in the Interrupt service! WORKAROUND: 1, globally define BOOL inited = FALSE 2 in the cfw.c file, modify case SysIntr in Oeminterruptenable ()_ether: The following statement is: if (inited = = FALSE) {s2410iop->reintpend = 0x200;     S2410INT->RSRCPND = bit_eint8_23;     if (S2410INT->RINTPND & bit_eint8_23) S2410INT->RINTPND = bit_eint8_23;   inited = TRUE;   } s2410iop->reintmask &= ~0x200;   S2410int->rintmsk &= ~bit_eint8_23;     break; Note: This solution is reproduced in http://stoned.blogchina.com/stoned/3083045.html, not my own research results.  Already searched for the file, how to display it in icon form with CListBox?  CListCtrl Listctrl;  CImageList ImageList;  Imagelist.create (Idb_bitmap, 2, RGB (0,0,0));  Listctrl.setimagelist (&imagelist, lvsil_normal);      Listctrl.insertitem (Ilistindex, stritem, 1);   How do I change the size of the Power Properties dialog box in the Control Panel?  1. The size of the dialog box needs to be modified because the dialog box is loaded as a resource and does not resize itself according to the current system display resolution. 2, install wince after some components (feature) resource file *.res already have, if you do not change, then the build kernel when PB just copy these. Res to the project directory, and then merge with *.obj into EXE, DLL, CPL.  So modify the dialog box size inside the. rc file to recompile the. rc file to a. res file, and then overwrite the original wince. res file. 3, change the size of the dialog box two ways: One way is to change the system font size, system font size changes will affect the size of the dialog box, but the disadvantage is that all system fonts related to the UI will change. The other is to resize the dialog box in the. rc file, compile it into a. res file, and then copy the. res into the corresponding language directory, such as the directory nameTo 0804 (Chinese), then execute the rebuild command to recompile the kernel, or execute sysgen+build. In the study I found that although the. res file can be opened, modified, and saved directly with EVC, but with other obj linked to EXE, DLL, CPL and can not run, it is recommended that the reader with the CE with the RC tools compiled best. Readers can type "RC/?" in the PB command line     Learn about the purpose and parameters of the Rc.exe tool.  After using the EVC build to connect to the emulator, prompted download file wait a while and then appear download failed?  Generally this problem is resolved from the following steps: 1, if you can start the emulator and now not, then clean and then restart the computer and build.  2, if the development of the host for WINXP+SP2, there may be incompatible with the EVC simulator, check C:/boot.ini, will/noexecute=optin changed to/execute. 3, check whether your simulator can run, assuming you are using the SDK name called MYSDK, click the menu tools-configure Platform Manager, select MYSDK-MYSDK Emulator, and then click Properties-test,  See if the simulator can start, and if it does, it won't be a problem.  4. Click the menu build-update remote output files to see if the emulator can be started.     5, if the above methods are not, close eVC and then re-establish a new project, compile, see if the simulator can start, if you can start to explain the original project problems, it is best to restore the original project backup.  How do I set the ability to automatically dial and disable automatic dialing?  Under [Hkey_local_machine/comm/autodial] is the registry setting for automatic dialing. Enabled=dword:1///Whether it is able to dial automatically failretrywaitms=dword//or if the wait time for the dial-up is rasentryname1= REG_SZ//AutoDial with dial-up connection name    For more details, refer to the help document titled "Auto Dial Registry Settings".

WinCE Drive development issues Highlights

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.