Index

#define 3–4, 8, 18–19, 27–8, <= (less-than-or-equal-to abstract base classes 62–4, 77–8 246 comparison operator) abstraction 31–6, 62–4, 77–8 #endif 27 16–17 Accept 236–8 != #ifdef 27–8 (not equal comparison operator) access rules, classes 41–7, 12, 16–17 #include 27–9 290–2 , (comma operator) 16–17 && (AND Boolean operator) ACS see Authenticated Content . (dot operator) 15–17, 35–6 10–11, 14–17 > (greater-than comparison Signing & 16–17 operator) 16–17 active object framework, &= (and_eq compound assignment >> (input operator) 218–20, 226 components 149 operator) 16–17 << (left-shift bitwise operator) active objects & (address-of/reference operator) 16–17 see also asynchronous functions 4–7, 15–18, 21, 23–4, 44–7 < (less-than comparison operator) asynchronous service requests * 4–7, 10–11, 15–17, 23–4, 16–17 151–2, 199–200 43–7 ! (NOT Boolean operator) background tasks 163–5 ++ (increment operator) 5–6, 10–12, 14–17 blocks 147–8, 166 14–17 << (output operator) 218–20, CActive 150–67 += (assignment operator) 16–17, 226 59–64 >> (right-shift bitwise operator) cancelled outstanding request + (addition operator) 14–17 14–17 153, 161–3 COPYRIGHTED:: MATERIAL + (unary plus) 15–17 (scope resolution operator) cleanup stack 154–5, 162–3 15–17, 32–6, 44–7, 54–69 ; 249–50 client–server frameworks -> (arrow operator) 15–17 == (equal comparison operator) 199–208 - (subtraction operator) 15–17 common problems 165–7 16–17 - (unary minus) 15–17 concepts 147–67, 199–208 = (assignment operator) 16–17, -- (decrement operator) 5–6, 34–40, 54, 75–6, 118–20 14–17 construction 151–2, 165–6 >= (greater-than-or-equal-to / (division operator) 16 CTimer 155–7 comparison operator) a: drive 215 destruction 154–5, 162–3 16–17 abld 239–48 error handling 153–60 298 INDEX active objects (continued) documented semantics 288–9 assignment operator (=) 16–17, examples 155–7 extensions 290–1 34–40, 54, 75–6, 118–20 multiple active objects stream store APIs 208, 216–27 associativity, operators 14–17 149–50 Apparc 185–6 asynchronous functions non-pre-emptive multitasking Append 138–9, 144–5 see also active objects model 149–50, 153–7 AppendL 138 cancelled outstanding request priorities 150, 151–2, 163–5 application design, platform 153, 161–3 real-time event handling 150 security 272–6 concepts 147–67, 179–80, request methods 152–3 application layer, OSI 231–3 191–4, 195–6, 199–200, stray signal panics 160, 165–6 application servers, concepts 192 206–8, 214, 230–1 unresponsive event handling arithmetic, pointers 5–6 definition 147 166 arithmetic operators examples 147 TRequestStatus active scheduler see also entries at start of index 151–66 asynchronous service requests cancelled outstanding request concepts 14–17 151–2 153, 161–3 arithmetic types, concepts 2–3 At 146, 225 concepts 149–67 arity concepts 14, 61 Att 212 creation 158 ARM processors 240, 246–8 Attach 183 error handling 153–60 ARMV5 240, 247–8 Authenticated Content Signing event-processing wait loop array 21–2 (ACS) 279–80 158–60 arrays exceptions 161 auto 25–6 see also CArray ...; pointers; extension 160–1 automatic storage RArray ...; installation 158–60 see also stack RPointerArray; concepts 25, 77 leave/trap mechanism 153–7 TFixedArray starting 158–60 concepts 1, 5–6, 18, 21–2, stopping 160 25–7, 133–46, 189 stray signal panics 160, 165–6 decay 21–2 background tasks, active objects ADD 18–19, 151–2, 165–6 163–5 definition 5–6 AddFileSystem 213 backward/forward compatibility dynamic arrays 25–6, 133–46 addition operator (+)14–17 283–4 fixed-length arrays 133, address-of operator (&)4–7, base classes 145–6 15–17, 23–4, 44–7 see also inheritance; TDes... functions 21–2 After 166 concepts 51–69, 77–8, 102, granularities 139–40 aggregation relationships 109–32, 134–6, 178 out-of-range errors 22, 145–6, see also composition ... BaseConstructL 105–6 concepts 49–69 189 batteries 149 AllFiles 262–9, 274–80 performance issues 137–9 Begin 146 Alloc... 99–100, 113–14, searching 140–5 BenQ 169 120–7, 187 sorting 140–5 bin directory 267–9, 275–7 ALWAYS_BUILD_AS_ARM 248 ASCII characters 3, 234 binary compatibility, concepts AND (&&) Boolean operator ASSERT 28–9, 138, 143–4, 284, 288–9, 294 10–11, 14–17 187–90 binary data, descriptors 108–9, and_eq (&=) compound __ASSERT_ALWAYS 138, 126–7 assignment operator 16–17 142–6, 187–90 binary operators, concepts 14, anti-piracy information 272 __ASSERT_DEBUG 187–90 17, 60–1 APIs 108, 117–20, 208, 287–9 assertions, concepts 187–90 Bind 235–8 compatibility issues 287–9, Assign 123–4 bitwise operators 16–17 290–1 assignment operator (+=) 16–17, bld.inf 239–41, 248 descriptors 117–20 59–64 bldmake tool 239–48 INDEX 299 block braces (curly brackets) Cancel 154–7, 161–3 compatibility issues 284–6, 9–10 CancelAll 237 290–4 block scope, concepts 9–10, 19, CAPABILITY 242–5, 263–6 concepts 9, 31–47, 49–52, 24, 36 capability model 242–5, 260–6, 71–81, 290–4 blocking/non-blocking modes, 274–6 data storage 35–6 sockets 230–1 assigning 263–4 declarations 31–6, 42–3 blocks, active objects 147–8, concepts 260–6, 274–6 definitions 31–6 166 discrete and orthogonal design issues 49–69 Bluetooth 229, 232–3, 234–5 capabilities 260–6 members 36–47, 286–7, 290, bool 2, 72–3 rules 264–6 293–4 Booleans, concepts 2, 72–3 system capabilities 261–6 naming conventions 71–81 bootstrap 252 TCB capability 263 nested classes 42–3, 46–7, break 11–13, 143–4 user capabilities 260–1 66–7 breaks, compatibility issues CApaDataRecognizerType properties 33–5, 49 285–6 185–6 purposes 33, 49–52 BSD 229, 232 Carbide.c++ 247–8, 251 relationships 40–7, 49–52 buffer descriptors CArray... 134–46 reuse issues 49–52 see also descriptors; TBuf... CArrayFixBase 134–46 scope 9 concepts 109–32 CArrayFixFlat 134–46 template classes 65–9 build tools 239–48 CArrayFixSeg 134–46 cleanup stack BUILD_AS_ARM 248 CArrayPakBase 134–46 active objects 154–5, 162–3, CArrayPakFlat 134–46 212–27 CArrayPtrSeg 134–46 C (heap-allocated) classes C++ CArrayVarBase 134–46 92–100 concepts 1–29, 31–6, 64–9, CArrayVarFlat 134–46 concepts 78, 91–100, 101–6, 107 CArrayVarSeg 134–46 124–5, 154–5, 162–3, tools 27–9 case 11–12, 20, 143–4 204–6, 212–27 C 1, 107, 134, 161 catch 84, 86 creation 98–9 c: drive 215, 253–4, 267–9 CBase, concepts 75–8, 92–3, item-removal timing decisions C (heap-allocated) classes 95–6, 105–6, 146, 286 94–5 see also heap CBufBase 134–8 pointer decisions 95–6, cleanup stack 92–100 CBufFlat 134–6 104–5 concepts 71, 74–8, 92–100, CBufSeg 134–6 T/R/M classes 96–9 138–9, 203–8 CBufStore 220–6 uses 92–4 safe construction/destruction CDirectFileStore 220–6 CleanupArrayDeletePushL 75–6 CEikDialog::ExecuteLD 96 98–9 C suffixes, naming conventions CEmbeddedStore 220–6 CleanupClosePushL 78, 75–6, 80, 92–3, 96–9 CFileStore 220–6 98–9, 124–5, 204–6, 212 CActive 150–67, 199 char 2–3, 61, 110, 126–7 CleanupDeletePushL 97–9 see also active objects character size 107–8, 118, CleanupReleasePushL 78, CActive::Cancel 154–7, 128–9 97–9 161–3 charconv.lib 129 CleanupStack 77–8, 87–8, CActive::IsActive 161–3 classes 92–100, 104–5, 124–5, CActiveScheduler 151–66 see also C ...; M ...; R ...; T ...; 204–6, 218–19, 223–6 see also active scheduler types CleanupStack::Pop 87–8, CActiveScheduler::Add access rules 41–7, 290–2 92–9, 104–5, 218–19 151–2, 165–6 arrays 133–46 CleanupStack::PopAnd- CActiveScheduler::Stop client–server frameworks Destroy 92–9, 124–5, 158–61 194–209 204–6, 223–6 300 INDEX

CleanupStack::PushL 77–8, concepts 283–94 constants 3–4, 7–8, 11–12, 87–8, 92–9, 204–6, 218–19 disallowed changes 285–90 38–40, 45–7, 67–8, 286–9, client–server frameworks forward/backward compatibility 291–2 see also CServer ...; 283–4 ConstructL 95–6, 102–6 RSessionBase levels 283–4 constructors active objects 199–208 libraries 284–5, 292 see also copy...; default...; classes 194–209 objects 285–6 member functions concepts 76, 181–2, removed items 286 active objects 151–2, 165–6 191–209, 211–27, source compatibility 284, C classes 75–6 229–38, 256 288–9 concepts 34–40, 52–69, custom data transfers 202–8 virtual functions 287–8, 74–6, 88–9, 101–6 data transfers 201–6 292–4 leave/trap mechanism 88–9, fundamentals 192–4 compilation 3–4, 9, 17–18, 102, 105 Hercules example 201–8 27–9, 38–40, 57–69, 83–4, T classes 74, 105 impact 206–8 246–8 two-phase construction 101–6 implementation 191–209 concepts 27–9, 38–40, containers overheads 206–8 57–69, 83–4 see also arrays performance issues 206–8 constructors/destructors concepts 13–46 R (resource) classes 76 39–40 context switches, concepts 148, read–write request parameters errors 38 180–1, 207–8 205–6 linking 28–9 continue 13 request arguments 197–8 separate compilation 28 conversions security issues 191–2, 195–6, static polymorphism 65–9 concepts 2–3, 21–2, 37–8, 197, 199–200 compile-time polymorphism see 61, 128–32 sockets 229–38 static polymorphism descriptors 128–32 startup 192, 200–1 Complete 199 Copy 118–20, 128–9 subsessions 207–8 component description file copy constructors client–server pattern, concepts 239–48 see also constructors 191–2 composition relationships concepts 38–40, 75–6, Close 76–8, 92, 98, 123–4, see also aggregation ... 111–12 137, 196–208, 212–27, concepts 49–69 Count 146 233–8 concrete classes 160–1 coupling 51 ‘closed’ phones 256–7 conditional statements CPermanentFileStore CnvUtfConverter 129–32 see also if ...; switch ...; 220–6 codes, errors 89–90, 96 concepts 9–11, 17 CPersistentStore 220–6 CodeWarrior 247, 251 configuration, platform security CPolicyServer 199–201 comma operator (,)16–17 276–80 cpp file extensions 28, 172 CommDD 262–6, 278–80 Connect 105, 193–208, 233–8 Create 76–7, 114–15, 123, commercial developers 272–4 connection-oriented 178–81, 213–27 CommitL 208 communication protocol, CreateL 123 communication protocols, sockets concepts 230–3, 235–6 CreateLC 223–4 230–8 connectionless communication CreateMax 123 compatibility issues protocol, concepts 230–3, CreateSession 195–205 allowed changes 290–4 235–6 CreateSIS 277–8 best practice 292–4 const, concepts 3–4, 7–8, 18, critical sections binary compatibility 284, 20–1, 39, 45–7, 67–8, see also synchronization 288–9, 294 110–11, 125–6, 175–6, code 180 breaks 285–6 287–9, 291–2 CSecureStore 220–6 classes 284–6, 290–4 const pointers, concepts 7–8 CServer2 199–201 INDEX 301

CSession2 198–208 see also constructors active objects 154–5, 162–3 CStoreMap 224–6 Define 182–4 C classes 75–6, 154–5 CStreamDictionary 221–2, definition statements concepts 38–40, 46–7, 73–7, 224–6 classes 31–6 88–9, 96–9, 101–6, CStreamStore 220–6 concepts 8–13, 17–19, 28–9, 155–6 CString 107 31–6 leave/trap mechanism 84, CTestClass 188–90 delete 14, 15–17, 25–7, 88–9 CTimer 155–7 46–7, 58–64, 78, 91–9, R curly brackets (block braces) 105–6, 194–208, 212 (resource) classes 76–7 9–10 see also dynamic memory T classes 73–4, 84–5 custom data transfers, client–server allocation two-phase construction 105–6 frameworks 202–8 concepts 25–7, 91–2, 105–6 developer certificates 278–9 DeleteAll 146 dialogs, resource files 245–6 dereferencing, concepts 4, digital signatures, installation d: drive 215 10–11, 23–4, 105–6, 126–7 packages 249, 277–8 D suffixes, naming conventions derived classes direct file stores 220–6 89–90, 96 see also inheritance see also stores concepts 52–69, 77–8, data abstraction 31–6 directives, concepts 27–9 104–5, 110–32, 287–8, data caging, concepts 266–9 directories 211–27, 253–4, data storage, classes 35–6 292–3 267–9 data transfers, client–server descriptors 110–32 discrete and orthogonal frameworks 201–6 two-phase construction 104–5 data-link layer, OSI 231–3 Des 111, 113–14, 119–20 capabilities, concepts datagram socket 230–8 descriptors 260–6 _DEBUG 28, 188–90 see also HBufC ...; RBuf ...; DiskAdmin 262–6, 278–80 debuggers 28–9, 99–100, TBuf ...; TDes ...; DismountFileSystem 213 145–6, 155–7, 187–90, 247, TPtr ... division operator (/)16 251, 274–6 APIs 117–20 Dll 174–5 assertion macros 187–90 binary data 108–9, 126–7 dll file extensions 170, 193–4, character size 107–8, 118, concepts 28–9, 187–90 211, 233 128–9 log files 274 DLLs see dynamic link libraries on-target debugging 28–9 concepts 107–32 DNS see Domain Name System decay, array-to-pointer decay conversions 128–32 do 21–2 correct use of dynamic , concepts 11–13 declarations descriptors 120–7 DoCancel 151–66 classes 31–6, 42–3 definition 107, 108 documented semantics, APIs concepts 8–13, 17–20, 22, derived classes 110–32 288–9 28–9, 31–6 function parameters 120 domain, sockets 230 functions 17–20 inefficiencies 125–6 Domain Name System (DNS) multi-dimensional arrays 22 inheritance 116–17 233, 234 scope 9–10 literal descriptors 110–19, DoRecognizeL 185–6 123, 126–7, 130 OS 71–81 DoTaskStep 163–5 decrement operator ( – )5–6, memory management 108–9 double 2, 72 14–17 number conversions 129–32 def file extensions 170, 172, packaging objects 130–2 doubles, concepts 2, 72 245, 247, 287 text data 108–9 Drive 212 default 11–12, 20, 24 design issues, classes 49–69 drives 215–16 default constructors 38–40, destructors DRM 262–6, 273, 276, 53–69, 104–5, 286 see also member functions 278–80 302 INDEX dynamic arrays E32USER-CBASE 40 162–3 EPOC.EXE 251–4 see also CArray ...; pointers; E32USER-CBASE 46 160, EPOCHEAPSIZE 245 RArray ...; 165–6 epoc.ini 252–4, 276–7 RPointerArray E32USER-CBASE 47 160 epocrc 246 concepts 25–6, 133–46 E32USER-CBASE 71 96–7 EPOCSTACKSIZE 244–5 granularities 139–40 EABI see Embedded Application EPriorityIdle 163–4 memory layout 133–5 Binary Interface EPriorityStandard 151–2 performance issues 137–9 ECOM plug-ins 170–1, 185–6, equal comparison operator (==) searching and sorting 140–5 242–5 16–17 dynamic binding 53–4, 57–64 EFalse 72 Error 160 dynamic descriptors efficiency issues 101, 107–17, errors 22, 38, 83–100, 130, see also descriptors 125–6, 137–9, 174, 206–8, 153–60, 186–90, 213, concepts 113–32 216–17 216–17 correct usage 120–5 efile.exe 193–4, 211 see also leave/trap mechanism; dynamic link libraries (DLLs) 4, efsrv.dll 193–4, 211 panics 46–7, 169–76, 211, 242–5, EKA1 169–70, 174, 176, 178–9, active scheduler 153–60 263–6, 285–6 242 codes 89–90, 96 capability model 263–6 EKA2 169–70, 174, 178–9, 181, compilation 38 compatibility issues 285–6 187, 242 file server 216–17 concepts 169–76, 211, ELeave 85, 104–5, 158 out-of-range errors 22, 145–6, 263–6, 285–6 else statement 10, 18–19, 189 const 4 34–6, 249–50 types 22, 145–6, 189, 216–17 exceptions 173 Embedded Application Binary esock.dll 233 EXEs 170–6, 263–6 Interface (EABI) 246–7 ESOCK.EXE 233, 258–9 exporting functions 171–3 embedded stores 225–6 es_sock.h 233 lookups by ordinal/name 173 emulator 1, 68, 169–70, 181, ETEL server 257–9 plug-in DLLs 170–3, 185–6, 240, 242–8, 251–4, 274–7 Ethernet 231 213, 233–8 see also epoc... ETrue 72 polymorphic DLLs 170–6, concepts 251–4 evaluation order, operators 177 file system 253–4 14–15 ROM/RAM 177 phone hardware 252–4 event handling shared-library DLLs 170–6 platform security 274–7 active objects 147–67 static DLLs 173–6, 177 processes 181 concepts 148–50, 152–4 types 170–6, 177 uses 251–2 definition 148 UIDs 171 encapsulation 31–6, 97–9, unresponsive event handling writable static data 173–6 131–2 166 dynamic memory allocation encryption 213, 276, 279–80 event-driven multitasking, concepts see also delete; new End 146, 242–5 147–67, 177–8 concepts 25–7, 85–91, EndTask 163–5 event-processing wait loop, active 108–9, 113–32, 133–46 enum scheduler 158–60 dynamic polymorphism see also user-defined types events see also polymorphism concepts 3–4, 8, 18, 19–20, concepts 147–67 concepts 56–64 74, 141–6, 201–2, 246, definition 147 substitution concepts 57–8 286 exceptions 1, 8, 13, 17, 36, EOF 12–13 46–7, 51, 63, 68–9, 72, 74, EPOC 1, 68, 169–70, 181, 80, 83–100, 139, 150, 173, e32base.h 75, 92–3, 151 242–3 232, 268–9, 271–2 e32def.h 20, 27–8, 126–7 EPOC32 1, 68, 169, 240, 246–8, see also errors; leave/trap e32std.h 130 276–7 mechanism INDEX 303

EXEDLL 242–5 foo 34–47, 53–69, 101–6, 187 GNU Debugger 28–9 EXEs for loop, concepts 11–13, granularities, dynamic arrays concepts 176–7, 181, 211, 144–5 139–40 242–5, 263–6, 271 forward/backward compatibility greater-than comparison operator DLLs 170–6, 263–6 283–4 (>)16–17 EXEXP 242–5 free storage see heap greater-than-or-equal-to ExitCategory 179 friend, concepts 40–7, 54–6, comparison operator (>=) ExitReason 179 66–7, 68–9 16–17 ExitType 179 fsy file extensions 170 GUI applications 98, 169, 245–6 explicit 40 Function 198 see also S60; Series 80; UIQ EXPORT_C 172–3 functions resource files 245–6 exporting functions arrays 21–2 compatibility issues 287, 291 compatibility issues 286–92 DLLs 171–3 concepts 2, 9, 15–25, 33–6, h file extensions 20, 27–8, 170 EXPORTUNFROZEN 245 84–5, 198, 286–92 handle classes 179–80, 213–16 expressions, concepts 14–17 declarations 17–20 hardware builds, concepts extern 9, 13, 29 definition statements 17–19, 246–51 externalization 28–9 HBufC... 80, 97–8, 113–32, see also streams inline functions 18–19, 24, 203–6 concepts 217–27, 287 28–9, 292–4 see also descriptors ordinal numbers 287 concepts 113–32 parameters 17–25, 67–8, 120 TDesC F32 259 125–6 pointers 23–4 HEADER 242–5 factory functions, concepts prototype concepts 17–18, 46–7, 75–6, 79 heap 19–20, 24 C file server 192, 193–4, 208, see also classes; dynamic return values 13, 22–3, 59–60 memory allocation 211–27, 257–9, 263 scope 9 RFile concepts 25–7, 71, 74–7, 80, see also template functions 65–9 concepts 211–27, 257–9 85–9, 91–2, 101–6, 137, unspecified parameters 178–80 efficiency issues 216–17 19–20, 24 errors 216–17 descriptors 113–32 virtual functions 24, 52–69, new(ELeave) file names 215–16 85–6, 95–6, 77–9, 138–9, 151–66, handle class 213–16 104–5, 158 173, 287–8, 292–3 session class 211–14 two-phase construction fundamental types files 101–6 see also floating-point...; data caging 266–9 Hercules example, client–server integer...; types name manipulation 215–16 frameworks 201–8 concepts 1–8, 18–19, 71–3 organization concepts 27–9 hiding 9, 31–6, 41–7 FILETEXT 250–1 HTTP 231 Find 140–5 FindIsq 140–5 GCC see GNU Compiler Collection ‘fire and forget’ IPC 184–5 GCCE 240, 247–8 iConstVal (42) 37–8 fixed-length arrays 133, 145–6 generic programming 1 if statement 9–10, 18–19, flash memory 211 Get 57, 183 34–6, 46–7, 106, 124–5, flat buffers 133–46 GetByName 234–8 143–5, 157, 159–60, 205, float 65–7, 72–4 GetDir 194–208 249–50 floating-point types GetProtocolInfo 234–8 see also conditional statements see also double global scope 9 implementation concepts 2–3, 65–7, 72–4, GNU Compiler Collection (GCC) client–server frameworks 252–3 247–8 191–209 304 INDEX

hiding 9 instantiation KErrNone 90–1, 153–4, inheritance 63–4 see also objects 155–6, 158–60 import libraries 92–3, 96–7, concepts 33–6, 46–7, 75, KErrNotFound 158–60, 181, 172–3 102–3, 117–20, 123, 125, 213–14 IMPORT_C 92–3, 96–7, 128–9 KErrNotSupported 235 114–15, 121–2, 172–3, int 2, 6, 18, 21–2, 34–6, 72–4 KErrPermissionDenied 184, 202–3, 289–90, 293 integers, concepts 2–3, 72–4 200 increment operator (++)5–6, integral types, concepts 2–3, KErrServerTerminated 14–17 60–1 196–7 infrared 229, 232, 234–5 inter-process communication (IPC) KExecutableImageUid 171 inheritance see also client–server Kill 178–9 see also polymorphism frameworks; message KNullUid 171, 222–3, 243, concepts 49–69, 288–9 queues; publish and 270–2 descriptors 116–17 subscribe KProtocolInetTcp 230 interface/implementation issues concepts 76, 181–5, KRequestPending 154, 63–4 191–209, 256 159–60, 165–6 multiple inheritance 62–4 inter-thread/process data transfers KSockDatagram 230 KSockStream private inheritance 54–5, 68 130–2 230 protected inheritance 55–6 interface/implementation issues, public inheritance 52–69 inheritance 63–4 _L macro 126–7 initialization 2, 3, 13, 18, 34–40, internalization L suffixes, naming conventions 52–69, 75–6, 88–9, 92–3, see also streams 87–8 102, 138 concepts 217–27 LDD 242–5 CBase Internalize 122 75–6 leaks, memory 85–9, 99–100, Initialize IP 231–3 76–7, 88, 92–3, 123–4 IPC see inter-process 142–3 leave 13, 73–100 InitializeL communication 88, 92–3 leave/trap mechanism 13, 73–7, inline IsActive 161–3 19, 28–9 80, 83–100, 102–6, 138, iteration statements, concepts inline functions, concepts 153–7, 189–90, 205–6, 11–12 18–19, 24, 28–9, 292–4 212–27 input 218–20, 226, 291–2 active scheduler 153–7 insecure applications, definition causes 84–6, 189 272 Java 107, 161 concepts 83–4, 102, 189 Insert 139, 140–5 constructors 88–9, 102, 105 InsertInOrder 141–5 destructors 84, 88–9 InsertIsqL 140–5 exceptions 83–4 Install 158 KAfInet 230 member variables 88 installation KDynamicLibraryUid 171 panics 89, 186, 189 active scheduler 158–60 KERN- 187 working with leaves 86–9 concepts 248–51, 256–9, kernel 148, 169–70, 193–4, LeaveScan 87–8 277–8 206–8, 251, 256–60, 263 left-shift bitwise operator (<<) native software installer KErr... 86, 90–1, 153–4, 16–17 280–1 155–6, 158–60, 171, 179, Length 109, 118–20, 146 phone hardware applications 181, 184, 188, 196–7, 200, less-than comparison operator (<) 248–51 213–14 16–17 platform security 256–9, KErrAlreadyExists 213 less-than-or-equal-to comparison 276–8, 280–1 KErrArgument 188 operator (<=)16–17 sis files 248–51, 256–9, KErrCancel 179 lexical analysis 74 277–8, 280–1 KErrNoMemory 86 see also TLex INDEX 305 lib file extensions 170, 245 see also constructors; destructors MMU see memory management libraries 1, 4, 29, 46–7, 92–3, concepts 36–47, 53–69, unit 96–7, 130, 169–76, 242–5 88 Modified 212 compatibility issues 284–5, member selection modulus operator 16–17 292 operator 15–17, 35–6 MountFileSystem 213 concepts 169–76, 284–5, 292 precedence 15–17 multi-dimensional arrays, DLLs 4, 46–7, 169–76 members declarations 22 Symbian OS Library 118, 130 classes 36–47, 88, 286–7, MultimediaDD 262–6, LIBRARY 242–5 290, 293–4 278–80 lifetime see scope pointers 43–7 multiple active objects, concepts Lincoln Laboratory MIT 229 memory 149–50 linking, compilation 28–9 see also heap; RAM; ROM; multiple inheritance, concepts Listen 236–8 stack 62–4 _LIT macro 110–19, 123, C++ constructors and leaves multitasking model 126–7, 130, 141–6, 187–8, 102 see also active objects 212, 214 descriptors 107–32 concepts 147–67, 169, literal descriptors 110–19, 123, dynamic memory allocation 177–8 126–7, 130, 286 25–7, 85–91, 108–9, mutable 8 concepts 126–7, 130 113–32, 133–46 mutexes 180 memory layout 127 efficiency issues 101, 107–17, see also synchronization loc files 246 125–6, 137–9, 174, localized vendor names 249–51 206–8 LocalServices 261 leaks 85–9, 99–100, 123–4 Nseries 50 Location 261 overrun problems 22, 107–8 namespace 31–6 Lock 213–15 two-phase construction 101–6 namespaces 9, 31–6 log files, debuggers 274 types 25–7 concepts 9, 31–6 logical groupings 31–6 memory management unit (MMU) scope concepts 9 Logon 179 207–8, 257–9 naming conventions LogonCancel 179 memory sticks 176, 254 prefixes 71–81 long 2–3, 72 menu bars, resource files suffixes 87–8, 96–9 longjmp 84, 86 245–6 native software installer, concepts loop statements see iteration message loop/dispatch, Win32 280–1 statements applications 149–50 NCP 231 message queues 184–5 nested classes messages, client–server see also classes M (interface) classes frameworks 76, 181–2, concepts 42–3, 46–7, cleanup stack 96–9 191–209 66–7 concepts 71, 77–9, 96–9 MFC 107 network layer, OSI 231–3 macros, concepts 18–19, 27, 65, MIME type 185–6 network sockets 230–2, 258 69, 84, 99–100, 110–19, MIT 229 see also sockets 123, 172–3, 187–90, 246 mixin see M (interface) classes NetworkControl 262–6, makefile 239–48 MkDir 212 279 makekeys 277–8 MkDirAll 212 NetworkServices 261, MakeSIS 248–9, 277–8 MMC 176–7, 254 274–6 malloc 113–15 MMF 259 neutral classes, concepts 108 math 18, 79 MMP files 171, 239–50, 271 New 14, 15–17, 25–8, 61, 85–6, MaxLength 110, 118–20 see also project definitions 95–6, 102–6 Mem 79 concepts 239–45, 271 see also dynamic memory member functions syntax 241–5 allocation 306 INDEX

New (continued) properties 33–5, 49 panics concepts 25–7, 85–6, 102–3 two-phase construction 101–6 concepts 13, 89, 94, 109, 127, new(ELeave) 85–6, 95–6, observer classes 77–8 128–9, 141–6, 160–6, 104–5, 158 on-target debugging 28–9 178–80, 186–90, 196–7 NewL 75–6, 87–8, 103–4, One-Definition Rule (ODR) 13 RThread 186–7 121–7, 155–7, 285–6 Open 76–7, 105, 178–81, stray signal panics 160, 165–6 NewLC 75–6, 103–4, 121–7, 195–208, 213–27, 230, threads 178–9, 186–90, 204–6 235–8 196–7 NewMax 121–3 Open Source GNU C++ compiler paradigms 1 NewMaxL 121–3 247 parameterized polymorphism see NewMaxLC 121–3 open standards 169, 256–7 static polymorphism non-modifiable buffers 111–13, Open Systems Interconnection parameters 122–3 (OSI) 230–2 compatibility issues 289–90 non-pre-emptive multitasking OpenLC 224–6 concept 17–25, 67–9, 120, model, active objects operator 26, 59–64, 67–8, 289–90 149–50, 153–7 85–6, 118–20, 130–2, 139, descriptors 120 NOT (!) Boolean operator 146 functions 17–25, 67–8, 120 10–12, 14–17 operator new 85–6 reference parameters 20–1, not equal (!=) comparison operator operators 289–91 12, 16–17 see also entries at start of index sockets 230, 235–6 NotifyChange 212 associativity 14–17 unspecified numbers 19–20, NotifyChangeCancel 212 concepts 4–7, 14–17, 58–64 24 NTT DoCoMo’s FOMA user definition 14 value parameters 20–1, 67–9, interface 169–70 list 15–17 289–90 NULL overloading operators 26, 5, 7–8, 10–11, 28–9, 86, passwords 276 37–47, 58–64, 75–8, 85 103–6, 107, 126–7, 129, 216 PCs, emulator 1, 68, 169–70, null pointers, concepts 5, 7–8, precedence 14–17, 60–1 181, 240, 242–8, 251–4 10–11 types 14–17 PDD 242–5 OPL 161 peer-to-peer communication 229 OR Boolean operator 10–11, PETRAN 176 object code 16–17 phone hardware see also EXEs ordinal numbers, API functions application installation compilation 27–9 287 248–50 object-oriented programming (OO) OSI see Open Systems emulator 252–4 1, 31–47, 51–2 Interconnection physical layer, OSI 231–3 see also encapsulation; hiding; out-of-range errors 22, 145–6, inheritance; polymorphism 189 PINs 275–6 classes/types 51–2 output 218–20, 226, 291 pixel sizes 253 pkg concepts 31–47, 51–2, overloading files 248–50, 277–80 292–3 concepts 26, 37–47, 58–64, PKI see Public Key Infrastructure support 31–6 75–8, 85 platform security 183–4, 191–2, objects rules 60–1 195–6, 197, 199–200, 211, see also constructors; destructors overriding, concepts 53–4, 255–81 active objects 147–67 58–64 application design 272–6 compatibility issues 285–6 overrun problems, memory 22, capability model 242–5, concepts 31–47, 130–2, 107–8 260–6, 274–6 202–8, 285–6 concepts 255–81 definition 33 configuration 276–80 packaging objects in descriptors Panic 13, 127, 128–9, 141–6, data caging 266–9 130–2 178–80, 186–8 emulator 274–7 INDEX 307

installation 256–9, 276–8, definition 57 inter-process communication 280–1 dynamic polymorphism (IPC) 76, 181–5, native software installer 56–64 191–209, 256 280–1 static polymorphism 57, 64–9 platform security 255–81 processes 255–81 Pop 68, 87–8, 92–9, 104–5, programming, best practice 27, publish and subscribe 183–4 218–19 292–4 releases 276–80 PopAndDestroy 92–9, 124–5, project definitions 239–48 servers 257–81 204–6, 223–6 see also MMP files SID 243, 267–9 POSIX server 192 concepts 241–5 signed software 258–9, postfix operators 14–17 projectname.mmp 239 277–80 power-conservation methods properties stakeholders 272–4 149 classes 33–5, 49 threat design 272–6 PowerMgmt 262–6 objects 33–5, 49 trust model 255–9 precedence, operators 14–17, protected access permissions UIDs 268–72 60–1 41–7, 52–69, 290–2 untrusted software 258–9, PreferredBufSize 186 protected inheritance 277–8 prefix operators 14–17 see also inheritance VID 269–72 prefixes, naming conventions concepts 55–6 PlatSecDiagnostics 277 71–81 protocol, sockets 230–8 PlatSecDisabledCaps 277 preprocessor 3–4, 27–9, 65–9 ProtServ 195, 262–6 PlatSecEnforcement 277 presentation layer, OSI 231–3 prt file extensions 170 PlatSecEnforceSysBin 277 Print 155–6 Psion 1, 169–70 plug-in DLLs 170–3, 185–6, priorities, active objects 150, Ptr 109, 116–17, 138, 198 213, 233–8 151–2, 163–5 public access permissions, PLUGIN 242–5 private access permissions, concepts 34–40, 41–7, pointer descriptors concepts 34–6, 37–40, 52–69, 74, 77–8, 102–3, see also descriptors; TPtr... 41–7, 52–69, 142–6, 267–9, 131–2, 142–6, 291–3 concepts 107–32 274–6, 289, 290–3 public inheritance memory layout 111 private inheritance see also inheritance pointers see also inheritance concepts 52–69 see also & (address-of/reference concepts 54–5, 68 Public Key Infrastructure (PKI) operator); arrays PrivatePath 268–9 279–80 arithmetic 5–6 PRJ_EXPORTS 240–1 publish and subscribe concepts 1, 4–8, 15–18, PRJ_MMPFILES 240–1 see also RProperty 23–4, 37–40, 43–7, 62–4, PRJ_PLATFORMS 240–1 concepts 182–5 91–2, 95–6, 104–5, PRJ_TESTMMPFILES 240–1 platform security 183–4 107–32, 291 processes pure virtual methods 62–3, decay 21–2 see also application...; servers 77–9, 151–66, 173 M definition 4 capability model 242–5, see also (interface) classes Push functions 23–4 260–6 68, 92–9 PushL members 43–7 client–server frameworks 77–8, 87–8, 92–9, this 37–40, 44–7, 59–64, 192–209 204–6, 218–19 285–6, 291–2 concepts 180–5 zero 5 context switches 148, 180–1, polymorphic DLLs, concepts 207–8 R (resource) classes 170–6, 177 definition 180 cleanup stack 96–9 polymorphism emulator 181 concepts 71, 76–80, 84–5, see also inheritance file server 192, 193–4, 208, 92, 96–9, 105–6, 138–9, concepts 42, 49–69 211–27 203–8 308 INDEX

destructors 76–7 Reset 54, 76–7, 137, 146 RStoreReadStream 224–6 RAM 173, 176–7, 211 ResetAndDestroy 136–46 RStoreWriteStream 223–6 RArray 76, 134, 136–46 resource 267–9 RThread 158–60, 178–81, RBuf 76, 114–32 resource files 186–7, 198 see also descriptors see also rss files see also threads concepts 114–32 concepts 245–6 concepts 178–81, 186–7, 198 construction 122–5 Resume 178, 180–1 panics 186–7 usage 122–5 retailers 273 RTimer 151–66 RCriticalSection 180–1 return 13, 22–3, 59–60 run-time polymorphism see RDebug 155–7 return values, functions 13, dynamic polymorphism RDesReadStream 218–27 22–3, 59–60 RunError 153–60 RDesWriteStream 218–27 reuse issues, class relationships RunL 151–67, 199–200 RDM see Reliably Delivered 49–52 see also active scheduler Message RFile 207–8, 211–27 RVCT 247–8 Read 147, 208, 214–27, 236 see also file server RWriteStream 208, 217–27 ReadDeviceData 262–6 RFileReadStream 217–27 ReadFileSection 212–27 RFileWriteStream 217–27 ReadL 124–5, 198, 218–27 RFs 76, 193–206, 211–27, 233, S prefixes 74 ReadUserData 261, 274–6 268–9 S60 50, 169, 280 real-time event handling, concepts RHandleBase 178, 196–7 scope 150 RHostRevolver 233–8 concepts 9–10, 15–17, 22–3, ReAllocL 123–5 right-shift bitwise operator (>>) 25, 31–6 recognizer plug-ins, concepts 14–17 levels 9 185–6 rls files 246 statements 9–10, 17, 22–3 Recv 235–8 RmDir 212 scope resolution operator (::) RecvFrom 235–8 RMessage2 198 15–17, 32–6, 44–7, 54–69 RecvOneOrMore 235–8 RMessagePtr2 179, 198, SDKs 118, 247 reference parameters, concepts 203–8 searching, arrays 140–5 20–1, 289–91 RMutex 180–1 secure applications, definition references, concepts 1, 4–7, 18, ROM 173, 176–7, 211, 263–9, 272 20–1, 291 279 Secure Identifier (SID) 243, registration codes 272–4 root stream 220–6 267–9 relational database 216 RPC 231 SECUREID 243–5, 270–2 Release 78, 92, 248–9 RPointerArray 134, 136–46 security policies 184, 191–2, release builds, assertion macros RProcess 180–1 195–6, 197, 199–200 187–90 RProperty 182–4 segmented buffers, concepts releasing applications, platform see also publish and subscribe 133–46 security 276–80 RReadStream 208, 217–27 self-reference Reliably Delivered Message (RDM) rsc files 246 see also this 232 RSemaphore 180 concepts 44–7 removable media 254, 275–6 RSessionBase 194–208 ‘self-signed’ software 258–9, removed items, compatibility issues see also client–server 277–8 286 frameworks semaphores Rename 212 rsg files 246 see also synchronization Rendezvous 179–80 Rsocket 147, 233–8 concepts 179–80 Replace 213, 222–6 see also sockets Send 195–6 ReplaceLC 222–6 RsocketServ 233–8 SendReceive 195–208 RequestComplete 154, rss files 246 SendTo 235–8 158–60, 163–4, 198 see also resource files serial communication server 192 INDEX 309 serial ports 192, 253 see also installation cleanup stack 78, 91–100, Series 60 (Nokia) see S60 Size 118–20 101–6, 124–5, 154–5, Series 80 (Nokia) 169 sizeof 15 162–3, 204–6, 212–27 Server 199–208 Smalltalk 51 descriptors 112–32 server sessions, concepts 76–7 Smartphones 50, 169 stakeholders, application design servers 76–7, 148–67, 181–5, SMB 231 272–4 191–209, 211–27, 229–38, SMTP 231 standard template library 1 255–9 sockets 147, 229–38 Start 158–61 client–server frameworks see also Rsocket START RESOURCE 242–6 191–209 blocking/non-blocking modes StartL 199–208 concepts 191–209, 211–27 230–1 StartProtocol 233–8 ETEL server 257–9 closing 237 StartTask 163–5 file server 192, 193–4, 208, communication protocols statements 211–27 230–8 concepts 8–13 platform security 257–81 concepts 229–38 conditional statements 9–11, sockets 229–38 definition 229 17 starting 192, 200–1 initialization 235–6 scope 9–10, 17, 22–3 stopping 192 network sockets 230–2, 258 static 25–7, 45–7, 92–9, window server 192, 257–9 opening 235–6 121, 126–7, 142–6, 175–6 ServiceL 199 OSI reference model 230–2 static binding 54, 57–8, 65–9, session layer, OSI 231–3 parameters 230, 235–6 103–4 sessions protocol modules 233–5 static classes, concepts 79, client–server frameworks reading 236–8 103–4 191–209 Symbian OS architecture static DLLs 173–6, 177 file server 211–27 232–5 static polymorphism 57, 64–9 Set 118–20, 183, 216 terminology 229–32 see also polymorphism SetActive 152–66 typical properties 229–30 statically strong typing 57–8 SetAtt 212 using 235–8 static_cast 15, 60–4 SetDriveName 212 STDLIB setjmp 84, 86 writing 237 161 Stop SetLength 118–20 software 158–61 SetMax 118–20 see also installation storage types 25–7 SetModified 212 platform security 258–9, stores SetVolumeLabel 212 276–81 see also streams ShareAuto 196–7 Sort 140–5 concepts 217, 220–7 shared-library DLLs, concepts sorting, arrays 140–5 creation 221–6 170–6 SOURCE 242–5 definition 220 ShareProtected 196–7 source code embedded stores 225–6 short 2–3, 6, 61 compatibility issues 284, reading 224–6 Shutdown 237 288–9 swizzles 225–6 SIBO 1 compilation 3–4, 9, 17–18, stray signal panics, active objects SID see Secure Identifier 27–8 160, 165–6 signed 2–3 SOURCEPATH 242–5 stream dictionary 221–2 signed software, platform security stack 20–1, 68, 71, 73–4, 77, streams 208, 216–27, 230–8 258–9, 277–80 78, 84–9, 91–100, 101–6, see also stores SignSIS 277–8 112–32, 137, 154–5, 162–3, concepts 216–27, 235 singleton class, concepts 36 178–80, 204–6, 212–27 definition 217 sis files 248–51, 256–9, see also automatic storage; strings 107–32, 286 277–8, 280–1 TBuf... see also descriptors 310 INDEX

Stroustrup, Bjarne 1, 8, 13, 17, file names 215–16 synchronization 24, 27, 29, 36, 40, 47, 52, 56, file server 192, 193–4, 208, see also critical sections; 64, 69 211–27 mutexes; semaphores struct 35–6, 74, 97, 246 fundamental types 71–3 concepts 179–81 see also classes inter-process communication synchronous functions, concepts T classes 74 (IPC) 76, 181–5, 147–8, 193–4, 214 stubbed virtual functions 292–3 191–209, 256 syntax 1, 17, 31 Subscribe 183 kernel 148, 169–70, 193–4, sys directory 211, 267–9, subsessions 206–8, 251, 256–60, 263 275–7 client–server frameworks Library 118, 130, 200 system capabilities, concepts 207–8 lower-level features 169–90 261–6 file server 212–27 naming conventions 71–81 system structure 169–90 substitution concepts, dynamic open platform 169–70 SYSTEMINCLUDE 242–5 polymorphism 57–8 overview 169–70 subtraction operator (-)15–17 phone hardware 248–50, suffixes, naming conventions 252–4 T classes 87–8, 96 platform security 183–4, cleanup stack 96–9 SupportedDataTypeL 186 191–2, 195–6, 197, concepts 71–4, 80, 84–5, SurroundingsDD 262–6 199–200, 211, 255–81 96–9, 105, 202–6 Suspend 178–9, 181 processes 180–5 constructors 74, 105 SwEvent 263–6 resource files 245–6 destructors 73–4, 84–5 SWInstall 256–9 semaphores 179–80 Tait, Field-Marshal, gratuitous switch, concepts 10–11, 20, sockets 147, 229–38 inclusion of 126 143–4 system structure 169–90 TAny 68, 72–4, 92–9, 197–8 swizzles, concepts 225–6 thin templates 64–5, 68–9, TARGET 242–5 Symbian OS 130–2 TARGETPATH 242–5 active objects 147–67, threads 148–67, 177–85, TARGETTYPE 171, 242–5 199–208 186–90, 192–209 TBool 72–4 class creation 79–80 tool chain 27–9, 239–54 TBuf... 111–32, 212, 216 client–server frameworks 76, two-phase construction 101–6 see also descriptors 181–2, 191–209, 211–27, types 71–81, 105–6 TBufBase 113 229–38 UIDs 171–3, 182–3, 215, TBufC 111–32 compatibility issues 283–94 222–3, 242–51, 268–9 TBufCBase 112, 116–17 concepts xxi–xxiv, 1, 27–9, v5 107–8 TCB see trusted computer base 50, 64–5, 68–9, 105–6, v6.0 153, 196–7 TCE see trusted computer 169–70 v6.1 174 environment declarations 71–81 v7 170 TChar 129–30, 175–6 descriptors 107–32 v8.0 72, 116, 124–5, 170, TCleanupItem 92–3, 97–9 DLLs 4, 46–7, 169–76 174, 182 TCP/IP 230–8 dynamic arrays 133–46 v8.1 122–3, 124–5, 170, TCPIP.PRT 233 EKA1 169–70, 174, 176, 174–5, 194, 198 TDes base class 109–32, 197, 178–9, 242 v9 83, 86, 116, 124–5, 214 EKA2 169–70, 174, 178–9, 174–5, 183, 185, 239–40, see also base classes 181, 187, 242 246–7, 255–6, 270, TDesC base class 109–32, 216 emulator 1, 68, 169–70, 181, 276–81 see also base classes 240, 242–8, 251–4, 274–6 writable static data 173–6, HBufC... 125–6 EPOC 1, 68, 169–70 192 TDes::operator = 118–20 event-driven multitasking Symbian Signed 258, 270–6, telephony server (ETEL server) 147–67, 177–8 279–80 257–9 INDEX 311

TEMP 213, 251–2 TInt... 72–4, 89–90, TRequestStatus 151–66, template 65–9 113–14, 130, 139, 145–6, 179–80, 183, 195–6, 206–8 template classes, concepts 65–9 175–6, 202–8, 217–19, see also asynchronous functions template functions, concepts 224–5 trust, platform security 255–9 65–9 TInt8 130, 202–8 trusted computer base (TCB) 211, template specialization, concepts TInt16 130, 202–8, 218, 256–9, 263, 279, 281 67–9 224–5 templates, concepts 1, 64–9 TInt32 130 capability model 263 Terminate 178–9 TInt64 72–4, 130 concepts 211, 256–9, 263, ternary operators, concepts 14, TIpcArgs 196, 197–208 281 16, 60–1 TKey 140–5 trusted computer environment text data, descriptors 108–9 TKeyArrayFix 140–5 (TCE) 256–9 TEXTCONTINUE 250–1 TKeyArrayPak 140–5 TrustedUI 263–6 TFileMode 213–14 TKeyArrayVar 140–5 try 84, 86 TFileName 125–6, 215–16 TLex 74, 129–32 TFixedArray TSecurityPolicy 184, 145–6 TLinearOrder 141–5 195–6, 197 thin templates, concepts 64–5, TLitC8 126–7 TSpecialCase 200 68–9, 130–2 TLitC16 126–7 TStreamId third-party libraries 29 TLS see thread-local storage 223–6 this TNameEntry 234–8 TSwizzle... 226 see also self-reference TNameRecord 234–8 TThreadId 178 concepts 37–40, 44–7, tool chain, basics 27–9, 239–54 TUid 175–6, 222–3 59–64, 285–6, 291–2 tools, C++ 27–9 TUInt... 72–4, 119, 129–32 thread-local storage (TLS) 174–6 TParse 215–16 TUInt8 threads 129–30 TPckg 130–2, 203, 206 see also RThread TUInt16 129–30 TPckgBuf 130–2 blocked threads 166 TUInt64 72–4 TPckgC 130–2, 203, 206 client–server frameworks TVersion 202–8 TPoint 175–6 192–209 TPriority two-phase construction concepts 148–67, 177–85 151–66 TProcessId C (heap-allocated) classes context switches 148, 180–1, 180–1 TProtocolDesc 101–6 207–8 234–8 TPtr... concepts 101–6 creation 177–8 107–8, 110–32, 138, critical sections 180 175–6, 203–8 derived classes 104–5 message queues 184–5 see also descriptors destructors 105–6 multiple threads 177–8 TPtr8 107–8, 138, 203–8 phases 102–3 TPtr16 panics 178–9, 186–90, 108 typedef, concepts 3, 8, 71–4, TPtrC 110–32, 175–6 196–7 108, 113, 125–6 transient servers see application running 178–9 types semaphores 179–80 servers see also fundamental...; terminations 177–9 transport layer, OSI 231–3 user-defined... threats, application design TRAP 84–96, 138–9, 189, 272–6 205–6 concepts 1–8, 51–2, 71–81 throw 73–4, 86 trap mechanism, concepts sockets 230, 235–6 THUMB 247–8 89–91 Symbian OS 71–81 TIdentityRelation 141–5 TRAPD 89–96, 205–6 timer waits, asynchronous TReal 72–4 functions 147 TReal32 72, 252 UDP 231–3 timers 252 TReal64 72, 252 _UHEAP_MARK 99–100 312 INDEX

_UHEAP_MARKEND 99–100 User::RequestComplete Volume 212 UI 29, 50, 98, 166, 158–60, 163–4 vptr 116–17 192 User::WaitForAnyRequest vtable 287–8, 293–4 UIDs see Unique Identifiers 158–60, 162–3, 166 UIQ 169, 246, 249–51, 280 User::WaitForRequest 166 unary operators, concepts 14, UTF-7 129 WaitForAnyRequest 158–60, 15–17, 60–1 UTF-8 129 162–3, 166 Unicode character sets 107–8, utf.h 129 WaitForRequest 166 129, 218 utility classes 79–80 w_char_t 2 union 35–6 web browsers, event handling see also classes 148 Unique Identifiers (UIDs) 171–3, va_arg 20 Weston, Ian xxi–xxiv 182–3, 215, 222–3, 242–51, va_end 20 while loop, concepts 11–13, 268–72 va_list 20 20, 144–5 Unix 229, 232 value parameters, concepts WiFi 231 Unlock 213–15 20–1, 67–9, 289–90 wildcard characters 216 unresponsive event handling, variables, concepts 2 Win32 applications 149, 181, active objects 166 va_start 20 251–4 unsigned 2–3, 61 vectors 133–4 window server (WServ) 192, unspecified numbers, parameters Vendor Identifier (VID) 269–72 257–9 19–20 VENDORID 243, 271 WINSCW 240, 245, 253–4 untrusted software, platform VID see Vendor Identifier word alignment 253 security 258–9, 277–8 virtual, concepts 52–4, writable static data USB 232, 253 58–64 concepts 173–6, 192 User 79, 127, 141–6, 156, virtual functions definition 175–6 186–8 compatibility issues 287–8, Write 208, 214–27, 236–8 user capabilities, concepts 292–4 WriteDeviceData 263–6 260–1 concepts 24, 52–69, 77–9, WriteInt8L 218 user-defined types 138–9, 151–66, 173, WriteInt16L 219 see also enum; typedef 287–8, 292–3 WriteL 198, 218–27 concepts 3–4, 8, 18, 34–6, stubbed functions 292–3 WriteReal64L 218 40, 49–52 virtual methods WriteToStreamFileL User::After 166 concepts 53–4, 56–64, 77–8, 218–27 UserEnvironment 261 173 WriteUserData 261 User::Free 98 definition 53–4 WServ 257–9 USERINCLUDE 242–5 virtual overriding User::Leave 84–90 see also dynamic polymorphism User::LeaveIfError 84–9, concepts 53–4, 58–64 z: drive 215, 253, 156, 211–12 virtual table, concepts 61–4 267–9 User::LeaveIfNull 86 void 21–3, 26, 32–6, 41–7, Zero 118–20 User::LeaveNoMemory 86 55–69, 72–4, 92–9, 114–15, zero, pointers 5 User::Panic 127, 141–6, 131–2, 141–6, 156, 164–5, 186–8 289–93