!

!analyze –v [text] 469, 473-478

WinDbg [lab] 21

!dma [text] 497

#

#ifdef

_M_IX86 [text] 388

_WIN64 [text] 1335

ALLOC_PRAGMA [text] 1533, 1535

DBG [text] 373, 386-983

#include

ntddk.h [text] 394

ntstatus.h [text] 364

stdio.h [text] 403

windows.h [text] 403

#line [text] 392

#pragma

alloc_text [text] 1533, 1534

data_seg [text] 1535

warning [text] 420, 421

%

%ls

DbgPrint [text] 374

%n

FormatMessage [text] 1065-1068, 1071-1083

%systemroot%

Minidump [text] 472

System32\drivers\drivername [text] 453

&

&

lea [text] 277

-

-b

build [text] 509

-c

BUILD [lab] 30

build [text] 509

-e

build [text] 509

-f

build [text] 509

-k

WinDbg [lab] 5

-w

build [text] 509

.

.asp

illustrated [text] 1036, 1041, 1042

.bin

mc output [text] 1055

.c

compilation [text] 1055

.h

mc output [text] 1055-1057

.inf [text] 1161

driver [text] 1382

Plug-and-Play driver [text] 147

.mc

+1 [text] 1052

adding output [text] 1056, 1057

compilation [text] 1055

custom job step [text] 1072

increment [text] 1052

input [text] 1051

Language [text] 1051

MessageId [text] 1051

output [text] 1058, 1059

Severity [text] 1051

SymbolicName [text] 1051

.mof

compiler [text] 1520

illustrated [text] 1521

mofcomp [text] 1520

MSWmi_MofData_GUID [text] 1520

wmicore.mof [text] 1517

.pnf

driver [text] 1382

.rc

adding [text] 1056, 1057

compilation [text] 1055

SOURCES [text] 986

VERSIONINFO [text] 982

.reboot [text] 464

.reg [text] 451-455, 458

HdwSimDriver.reg [lab] 48

helloworld [lab] 31

legacy driver [text] 147

.reload

WinDbg [lab] 21

/

/3GB

virtual memory [text] 156

/baudrate

BOOT.INI [lab] 10, 11, [text] 444, 447

/crashdebug

BOOT.INI [text] 444

/debug

BOOT.INI [text] 444

/debugport

BOOT.INI [text] 445

/fastdetect

BOOT.INI [text] 446

/list

PREfast [text] 509

/maxmem

BOOT.INI [text] 445

/noserialmice

BOOT.INI [text] 445

/onecpu

BOOT.INI [text] 446

/sos

BOOT.INI [text] 446, 447

/W4. SOURCES [text] 419

?

??

object manager name space [text] 315, 317

@

@InterlockedCompareExchange@12 [text] 290

@InterlockedDecrement@4 [text] 289

@InterlockedIncrement@4 [text] 288

[

[boot loader]

BOOT.INI [text] 437

[operating systems]

BOOT.INI [text] 438

\

\

object manager name space [text] 315

_

__asm [text] 388

__cdecl [text] 271

__DATE__ [text] 390-392

__except [text] 821, 1236-1260

illustrated [text] 1237-1241

__fastcall [text] 271

__FILE__ [text] 390-392

__finally [text] 1247, 1248, 1260-1269

__int64

alignment [text] 1325

__leave [text] 1260-1263

__stdcall [text] 271

example [text] 294-298

__TIME__ [text] 390-392

__TIMESTAMP__ [text] 390-392

__try [text] 1236, 1242-1269

illustrated [text] 1237-1241

MmProbeAndLockPages [text] 821

_M_IX86 [text] 388

_makepath [text] 1046

_NT_DEBUG_BAUD_RATE [lab] 10, 11

_NT_SYMBOL_PATH [lab] 10, 11

_splitpath [text] 1046

_tmakepath_s [text] 1046

_tsplitpath_s [text] 1046

_URB_BUILD_OR_INTERRUPT_TRANSFER [text] 1391

_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408

_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1392, 1413-1445

_URB_CONTROL_FEATURE_REQUEST [text] 1392, 1417-1424

_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1392, 1437

_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1392, 1438

_URB_CONTROL_GET_STATUS_REQUEST [text] 1392, 1425-1428

_URB_CONTROL_TRANSFER [text] 1391, 1407

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1392, 1429-1436

_URB_FRAME_LENGTH_CONTROL [text] 1391, 1402, 1403

_URB_GET_CURRENT_FRAME_NUMBER [text] 1391, 1406

_URB_GET_FRAME_LENGTH [text] 1391, 1404

_URB_HEADER [text] 1391

_URB_ISOCH_TRANSFER [text] 1392, 1409

_URB_PIPE_REQUEST [text] 1391, 1401-1412

_URB_SELECT_CONFIGURATION [text] 1391, 1399

_URB_SELECT_INTERFACE [text] 1391, 1400

_URB_SET_FRAME_LENGTH [text] 1391, 1405

_WRITE_REGISTER_ULONG [text] 294

illustrated [text] 295-298

_WRITE_REGISTER_ULONG@8 [text] 294-298

0..9

0x0000001E

KMODE_EXCEPTION_NOT_HANDLED [text] 465-467

0x0000007E

KMODE_EXCEPTION_NOT_HANDLED [text] 465-467

0xC0000005

access violation [text] 468

0xC000001D

illegal instruction [text] 468

0xC0000094

divide by zero [text] 468

0xC00000FD

stack overflow [text] 468

1-byte

FILE_BYTE_ALIGNMENT [text] 343

1sec

IoTimer [text] 936

2-byte

FILE_WORD_ALIGNMENT [text] 343

2GB

virtual memory [text] 156

3GB

/3GB [text] 445

BOOT.INI [text] 445

virtual memory [text] 156

4-byte

FILE_LONG_ALIGNMENT [text] 343

8-bit

ah [text] 263

al [text] 263

bh [text] 263

bl [text] 263

ch [text] 263

cl [text] 263

dh [text] 263

displacement [text] 279

dl [text] 263

r8b..r15b [text] 265

WRITE_REGISTER_UCHAR [text] 293

8-byte

FILE_QUAD_ALIGNMENT [text] 343

8TB

virtual memory [text] 158, 1323

10Mb/sec

USB [text] 1349

10ms

tick [text] 937

15ms

tick [text] 937

16-bit

ax [text] 263

bx [text] 263

cx [text] 263

di [text] 263

dx [text] 263

HALF_PTR [text] 1328

NTVDM [text] 260

PCMCIA [text] 1501

r8w..r15w [text] 265

si [text] 263

UHALF_PTR [text] 1328

virtual MS-DOS [text] 260

WRITE_REGISTER_USHORT [text] 293

16-byte

FILE_OCTA_ALIGNMENT [text] 343

32-bit

CardBus [text] 1501

data registers [text] 262

displacement [text] 279

DMA [text] 1324

Dma32BitAddresses [text] 855

drivers [text] 260

DWORD32 [text] 1327

DWORD_PTR [text] 1328

eax [text] 262

ebp [text] 266

ebx [text] 262

ecx [text] 262

edi [text] 262

edx [text] 262

eflags [text] 266

eip [text] 266

esi [text] 262

esp [text] 266

HALF_PTR [text] 1328

history [text] 260

int [text] 1324

INT32 [text] 1327

INT_PTR [text] 1328

IoIs32bitProcess [text] 1336, 1337, 1339, 1340

long [text] 1324

LONG_PTR [text] 1328

memory map [text] 165

pointer [text] 1324

POINTER_32 [text] 1329

r8d..r15d [text] 265

REG_DWORD [text] 145, 1092

SIZE_T [text] 1328

SSIZE_T [text] 1328

system DMA addresses [text] 215

thunking [text] 1333, 1334, 1338-1340

UHALF_PTR [text] 1328

UINT32 [text] 1327

UINT_PTR [text] 1328

ULONG32 [text] 1327

ULONG_PTR [text] 1328

virtual memory [text] 156, 157

Win64 address space [text] 157

WRITE_REGISTER_ULONG [text] 292-294

illustrated [text] 295-298

32-byte

FILE_32_BYTE_ALIGNMENT [text] 343

50us

KeStallExecutionProcessor [text] 924

64-bit

alignment [text] 1325

Dma64BitAddresses [text] 855

drivers [text] 260

DWORD64 [text] 1327

DWORD_PTR [text] 1328

edx:eax [text] 262

history [text] 260

INT64 [text] 1327

INT_PTR [text] 1328

IoIs32bitProcess [text] 1336, 1339, 1340

LONG_PTR [text] 1328

memory map [text] 165

pointer [text] 1324

POINTER_64 [text] 1329

r8..r15 [text] 265

rax [text] 264

rbp [text] 266

rbx [text] 264

rcx [text] 264

rdi [text] 264

rdx [text] 264

rflags [text] 266

rip [text] 266

rsi [text] 264

rsp [text] 266

SIZE_T [text] 1328

SSIZE_T [text] 1328

thunking [text] 1333-1335, 1339, 1340

UINT64 [text] 1327

UINT_PTR [text] 1328

ULONG64 [text] 1327

ULONG_PTR [text] 1328

virtual memory [text] 158

64-byte

FILE_64_BYTE_ALIGNMENT [text] 343

64K

guard pages [text] 156-158

minidump [text] 472

100Kb/sec

USB [text] 1349

128-byte

FILE_128_BYTE_ALIGNMENT [text] 343

480Mb/sec

USB [text] 1349

512-byte

FILE_512_BYTE_ALIGNMENT [text] 343

640bit

thunking [text] 1338

1394

bus analyzer [text] 961, 962

debugging [text] 973

debugging port [text] 483

Driver [text] 98

2048u..4095u [text] 652, 653

32768u..65535u [text] 652, 653

80486 System Architecture [text] 1625

A

AbnormalTermination [text] 1247, 1248, 1267-1269

Access violation [text] 468

ActiveX [text] 141

Adapter object

AdapterControl handler [text] 1547, 1548

IoAllocateAdapterChannel [text] 1544

IoFreeAdapterChannel [text] 1549

NT4 [text] 1542

ADAPTER_OBJECT [text] 702, 719-1545

illustrated [text] 810, 811

IoAllocateAdapterChannel [text] 1545

illustrated [text] 1555, 1561

IoFlushAdapterBuffers

illustrated [text] 1559

IoFreeAdapterChannel

illustrated [text] 1559, 1560

IoMapTransfer [text] 1550, 1551

illustrated [text] 1556

AdapterControl handler [text] 1547, 1548

adc

lock [text] 287

add

lock [text] 287

AddDevice [text] 174, 312-1185

DRIVER_OBJECT

.DriverExtension [text] 332

example [text] 327

extension [text] 1174

example [text] 1177, 1179

PADDDEVICE [text] 332

Address calculation [text] 279

Address modes [text] 278

Addresses [text] 191

Addressing

direct [text] 280

immediate [text] 280

indexed [text] 280

scaled [text] 280

Advanced

settings [lab] 12

Affinity

processor [text] 759

Afx

name derivation [text] 1281

AGP System Architecture [text] 1625

Alertable wait state [text] 57, 72-927

Alignment

allocation [text] 908

DEVICE_OBJECT.AlignmentRequirement [text] 342, 343

FILE_128_BYTE_ALIGNMENT [text] 343

FILE_32_BYTE_ALIGNMENT [text] 343

FILE_512_BYTE_ALIGNMENT [text] 343

FILE_64_BYTE_ALIGNMENT [text] 343

FILE_BYTE_ALIGNMENT [text] 343

FILE_LONG_ALIGNMENT [text] 343

FILE_OCTA_ALIGNMENT [text] 343

FILE_QUAD_ALIGNMENT [text] 343

FILE_WORD_ALIGNMENT [text] 343

GetDmaAlignment [text] 871, 873

STATUS_DATATYPE_MISALIGNMENT [text] 1251

UNALIGNED [text] 1325

All [text] 191, 1184-1217

ALLOC_PRAGMA [text] 1533-1535

alloc_text

#pragma [text] 1533, 1534

AllocateAdapterChannel

DMA_OPERATIONS [text] 871, 872, 875, 876

illustrated [text] 890, 896

AllocateCommonBUffer

DMA_OPERATIONS [text] 871, 872

AllocatedResources [text] 1198

AllocatedResourcesTranslated [text] 761, 1198

Allocation

alignment [text] 908

ExAllocateFromNPagedLookasideList [text] 917

ExAllocatePool [text] 907

example [text] 572

ExAllocatePoolWithTag [text] 911

ExDeleteNPagedLookasideList [text] 919

ExFreePool [text] 574, 913

example [text] 585

ExFreePoolWithTag [text] 913

ExFreeToNPagedLookasideList [text] 918

ExInitializeNPagedLookasideList [text] 915

lookaside list [text] 914, 915

must-succeed [text] 912

non-paged pool [text] 907, 909

paged pool [text] 907, 909

POOL_RAISE_IF_ALLOCATION_FAILURE [text] 916

tagged [text] 910

Alpha [text] 191

Always interruptible [text] 34

Always preemptible [text] 34

AMD64 [text] 26

history [text] 260

LFENCE [text] 304

MFENCE [text] 304

SFENCE [text] 304

analyze –v [text] 469, 473-478

And [text] 191, 1184-1217

and

lock [text] 287

Anderson, Don [text] 1625

ANSI [text] 324

APC

priority [text] 177, 178

API

design [text] 546-548

Application

event log [text] 1033

Application space

accessing [text] 630

AppWizard [text] 1284, 1285

illustrated [text] 1290-1296

Architecture

multiprocessor [text] 219, 220

NT [text] 153

PC [text] 190

PCI [text] 190

register [text] 261

RISC [text] 192

x86 [text] 187-189

Are [text] 191

ASSERT [text] 384, 385

kernel spew [text] 371

ASSERTMSG [text] 384, 385

Associated IRP [text] 1104

AssociatedIrp [text] 685

completing [text] 1127

IoMakeAssociatedIrp [text] 1111

IRP.AssociatedIrp [text] 1124

MasterIrp [text] 685

Asynchronous

APC [text] 177, 178

Asynchronous I/O

alertable wait state [text] 57

callback [text] 55, 57-72

CancelIo [text] 61, 62

CancelIoEx [text] 61, 62

completion notification [text] 55

ConnectNamedPipe [text] 79

DeviceIoControl [text] 79

DeviceIoControlEx [text] 48, 57-72

event wait [text] 55, 56

FILE_FLAG_OVERLAPPED [text] 53, 54, 69

GetOverlappedResult [text] 71

GetQueuedCompletionStatus [text] 71, 78-80

I/O Completion Port [text] 58, 74, 75

I/O Completion port [text] 55

I/O Manager [text] 170

LockFileEx [text] 79

OVERLAPPED [text] 70, 71

performance [text] 94

PostQueuedCompletionStatus [text] 81

ReadDirectoryChangesW [text] 79

ReadFile [text] 79, 94

ReadFileEx [text] 48, 57-72

separate thread [text] 55, 59-92

SetFilePointer irrelevant [text] 83

SleepEx [text] 73

TransactNamedPipe [text] 79

WaitCommEvent [text] 79

WaitForMultipleObjectsEx [text] 73

WaitForSingleObjectEx [text] 73

WriteFile [text] 79

WriteFileEx [text] 48, 57-72

Attach [text] 1185

Auto-loading driver [lab] 8

B

Background

priority [text] 177, 178

Backtrace

stack [text] 477

Bad design [text] 218, 956-977

Bandwidth [text] 195

illustrated [text] 196, 197

Base register [text] 279

BaseAddress

I/O port [text] 1584

memory [text] 1583

PCI_COMMON_CONFIG [text] 1598

BaseClass

PCI_COMMON_CONFIG [text] 1596, 1600

Baud rate [lab] 15, 31

Baudrate

_NT_DEBUG_BAUD_RATE [lab] 10, 11

baudrate

BOOT.INI [text] 444, 447

BIST [text] 1581

PCI [text] 967, 1572

PCI_COMMON_CONFIG [text] 1598, 1600

Blue screen

access violation [text] 468

divide by zero [text] 468

Blue Screen Of Death

NT4 [text] 465

XP [text] 466

Bluescreen

stop code [text] 465-467

Book

8046System Architecture [text] 1625

AGP System Architecture [text] 1625

Cardbus System Architecture [text] 1625

Developing Windows NT Device Drivers [text] 3, 1624

Firewire System Architecture [text] 1625

ISA System Architecture [text] 1625

PCI System Architecture [text] 1625

PCI-X System Architecture [text] 1625

Pentium Pro and Pentium II System Architecture [text] 1625

Pentium Pro Processor System Architecture [text] 1625

Pentium Processor System Architecture [text] 1625

Programming the Windows Driver Model [text] 1624

The Unabridged Pentium 4 [text] 1625

Win32 Programming [text] 3, 1624

Windows NT Driver Development [text] 1624

Windows NT File System Interals [text] 1624

Windows NT/2000 Native API Reference [text] 1624

boot loader

BOOT.INI [text] 437

BOOT.INI [lab] 31

/3GB [text] 445

/baudrate [text] 447

/debugport [text] 445

/fastdetect [text] 446

/maxmem [text] 445

/noserialmice [text] 445

/onecpu [text] 446

/sos [text] 446, 447

[boot loader] [text] 437

[operating systems] [text] 438

default= [text] 437

description [text] 435, 443

directory [text] 442

disk(n) [text] 440, 447

multi(n) [text] 439, 447

options [text] 437-446

partition(n) [text] 441, 447

rdisk(n) [text] 440

read-only attribute [text] 436

scsi(n) [text] 439

timeout= [text] 437

Vista (gone!) [text] 431

Break (debug) [lab] 15

BreakOnEntry [lab] 35, [text] 457

HKLM\...\drivername\Parameters [text] 452

Breakpoint [text] 277

DbgBreakpoint [text] 386

F9 [lab] 21

toggle [lab] 21

BRKPNT [text] 387, 388

BSOD

NT4 [text] 465

XP [text] 466

btc

lock [text] 287

btr

lock [text] 287

bts

lock [text] 287

Bucket

crash [text] 475

Buffered I/O [text] 630, 632, 633

DeviceIoControl [text] 631, 649, 650

illustrated [text] 654-657

DeviceIoControlEx [text] 631, 649, 650

illustrated [text] 654-657

DO_BUFFERED_IO [text] 343

IRP.AssociatedIrp.SystemBuffer [text] 685, 686

METHOD_BUFFERED [text] 652, 653

ReadFile [text] 631, 634-638

illustrated [text] 639-642

ReadFileEx [text] 631, 634-638

illustrated [text] 639-642

WriteFile [text] 631, 635-644

illustrated [text] 645-648

WriteFileEx [text] 631, 635-644

illustrated [text] 645-648

BUILD [text] 409, 415

-b [text] 509

-c [lab] 30, [text] 415, 509

-e [text] 509

-f [text] 509

-w [text] 509

buildchk.log [lab] 16

environments [text] 408

error [text] 418

full build [text] 416

NT4 [text] 412

null build [text] 417

screen buffer size [lab] 17-19

tree [text] 412-414

XP+ [text] 413

Build environment

checked [text] 408

free [text] 408

buildchk.log [lab] 16

Bulk transfer [text] 1352, 1355

BulkUsb driver [text] 1448, 1449

BULKUSB_MAX_TRANSFER_SIZE [text] 1447

Bullseye coverate [text] 521

Burst mode DMA [text] 213

Bus [text] 246

driver [text] 136

HAL [text] 243

EISA [text] 245

external [text] 194

HAL [text] 243

I/O [text] 187

illustrated [text] 188

internal [text] 194

ISA [text] 245

memory

illustrated [text] 188

number [text] 759, 763

PCI [text] 245

PCMCIA [text] 245

Bus analyzer [text] 958, 961, 962

Bus driver [text] 98

Bus master DMA [text] 209, 213-854

illustrated [text] 833-839

BYTE

FILE_BYTE_ALIGNMENT [text] 343

ByteOffset

IO_STACK_LOCATION.Parameters.Read [text] 693

IO_STACK_LOCATION.Parameters.Write [text] 694

C

C++

exceptions (forbidden) [text] 1270

not used for most drivers [text] 5

C2

security [text] 16

c:\Labs [lab] 23

Cable

length (USB) [text] 1383, 1384

Cache

clean line [text] 223, 224, 233-235

consistency [text] 221, 226-236

DMA [text] 897, 898, 900-1566

illustrated [text] 899, 1564

flush [text] 230, 241

HAL [text] 241

invalid line [text] 223, 236

KeFlushIoBuffers [text] 897, 898, 900-1565

illustrated [text] 899, 1564

L1 [text] 229, 231

illustrated [text] 221, 226-236

L2 [text] 229, 231

illustrated [text] 190, 221-236

line [text] 223

modified line [text] 223, 224, 228-232

NonPagedPoolCacheAligned [text] 907

PagedPoolCacheAlligned [text] 907

portability [text] 42

replacement algorithm [text] 223

shared line [text] 223-225, 234, 235

snooping [text] 231, 232

write-back [text] 222, 231

write-through [text] 222, 231

CacheLineSize

PCI_COMMON_CONFIG [text] 1597, 1600

call [text] 268

Call Usage Verifier [text] 517, 518

Call usage verifier [text] 515, 516

VERIFIER_DDK_EXTENSIONS [text] 515

Calling convention

__cdecl [text] 271

__stdcall [text] 271

Calling convetion

__fastcall [text] 271

CallUSBD [text] 1441, 1445

defined [text] 1442

Cancel [text] 736-738

cancel-safe queue [text] 723

handler [text] 308, 739-743

IoReleaseCancelSpinLock [text] 745, 746

IoSetCancelRoutine [text] 742

IRP [text] 740, 749

IRP.Cancel [text] 685, 740

IRP.CancelIrql [text] 740

IRP.CancelIrqp [text] 685

IRP.CancelRoutine [text] 685, 740

KeRemoveEntryDeviceQueue [text] 746

PDRIVER_CANCEL [text] 742, 743

spin lock [text] 741, 742, 747, 748

StartIo [text] 744

STATUS_CANCELLED [text] 746, 1621, 1622

Cancel-safe queue [text] 723, 1607-1619

canceling [text] 1621, 1622

inserting [text] 1613

IO_CSQ [text] 1608, 1614, 1615

IoCsqInitialize [text] 1610, 1611, 1620

IoCsqInsertIrp [text] 1607, 1608

IoCsqRemoveIrp [text] 1607

IoCsqRemoveNextIrp [text] 1607, 1608

locking [text] 1612

peeking [text] 1615-1618

removing [text] 1614

CancelIo [text] 61, 62, 338-737

CancelIoEx [text] 61, 62, 338-737

CancelIrql

IRP [text] 685, 740

CancelRoutine

IRP [text] 740

CancelSynchronousIo [text] 61, 62, 338-737

Canonical order [text] 616, 617

CardBus [text] 1499-1501

tool [text] 1504

WDM [text] 1147

Cardbus System Architecture [text] 1625

CButton [text] 1283

CD

driver [text] 113

CDB

debugger [text] 434

CDFS [text] 125

illustrated [text] 123, 124

CDialog

MFC [text] 1283

CF [text] 274-276

CFrameWNd [text] 1283

CHAR [text] 324

Checked Build

driver [text] 372

kernel [text] 370

Checked build [lab] 30

DBG [text] 373

CIS [text] 1502, 1503

PCI_COMMON_CONFIG [text] 1598

PCMCIA enumeration [text] 1505

tool [text] 1504

Class driver [text] 1151

USB [text] 1154

WDM [text] 1154

ClassWizard [text] 1289, 1302, 1303

illustrated [text] 1304-1314, 1317

cld [text] 277

Clear [text] 1185

CLIENT_64BIT [text] 1335

CloseHandle [text] 48, 49, 62-549

example [text] 404

handler [text] 322

IRP_MJ_CLEANUP [text] 65, 321-338

IRP_MJ_CLOSE [text] 65, 321-338

Closely-coupled MIMD [text] 26

CM_RESOURCE_LIST [text] 1198

cmpxchg [text] 291

lock [text] 287, 290

Code coverage [text] 520, 522, 523

www.bullseye.com [text] 521

Coherency

cache [text] 221, 226-236

Colwell, Bob [text] 1625

COM [text] 141

COM port [lab] 31

COMMAND

GO

input [lab] 62, 62-75

output [lab] 65, 66, 75

IACK

input [lab] 62

output [lab] 65

IE

input [lab] 62

output [lab] 65

input [lab] 60

output [lab] 60

RESET

output [lab] 65, 67

Command

input [lab] 62

PCI_COMMON_CONFIG [text] 1598, 1600

Command line

parameters [text] 1069, 1070

Command shell

screen buffer size [lab] 17-19

Command window

build environments [text] 408

comp.os.ms-windows.programmer.nt.kernel-mode [text] 1626

Compiler

C/C++ [text] 1055

message [text] 1055

resource [text] 1055

Compiler optimizing [text] 619-623

Compiler option

/W4 [text] 419

Complete IRP [lab] 44, 66-75

Completion routine [text] 753, 1103-1134

illustrated [text] 1136-1139

IoAllocateIrp [text] 1109

IoBuildDeviceIoControlRequest [text] 1109

IoSetCompletionRoutine [text] 1107, 1129-1196

example [text] 1225

order [text] 1131

PNP [text] 1199-1201

power [text] 1227-1230

STATUS_MORE_PROCESSING_REQUIRED [text] 1132, 1135-1139

STATUS_SUCCESS [text] 1135

USB [text] 1447

Condition codes [text] 274-276

Configuration

_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1392, 1437

_URB_SELECT_CONFIGURATION [text] 1399

descriptor (USB) [text] 1365, 1369, 1370

HID [text] 1462, 1464

URB_FUNCTION_GET_CONFIGURATION [text] 1437

URB_FUNCTION_SELECT_CONFIGURATION [text] 1399

USB [text] 1363

ConnectNamedPipe [text] 79

const [text] 624

CONTAINING_RECORD [text] 727, 1612-1617

illustrated [text] 726, 732

Control panel [lab] 12

Control transfer [text] 1352, 1353

_URB_CONTROL_TRANSFER [text] 1407

URB_FUNCTION_CONTROL_TRANSFER [text] 1407

Controller object [text] 787, 788

IoAllocateController [text] 788, 790

IoCreateController [text] 788, 789

IoFreeController [text] 792, 795

CONTROLLER_OBJECT [text] 702, 720

.ControllerExtension [text] 788

IoAllocateController [text] 790

IoCreateController [text] 789

IoFreeController [text] 792, 795

Controls

MFC [text] 1297-1300

Copyright [text] 191, 1184-1217

Count [text] 1184

Crash bucket [text] 475

Crash dump [text] 470

full memory [text] 472

kernel memory [text] 472

minidump [text] 472

selecting [text] 471

crashdebug

BOOT.INI [text] 444

Create

IO_STACK_LOCATION

.Parameters [text] 692

CreateFile [text] 48, 49, 62

AUX [text] 318

COMn [text] 318

example [text] 403

File Object [text] 565

FILE_OBJECT.FileName [text] 567

handler [text] 322

INVALID_HANDLE_VALUE

example [text] 404

IO_STACK_LOCATION

.Parameters

.Create [text] 692

IRP_MJ_CREATE [text] 65, 338

Lab2 [lab] 58

LPTn [text] 318

NUL [text] 318

parameters [text] 50-53

PRN [text] 318

processing [text] 105

single [text] 549

CreateIoCompletionPort [text] 76, 77

CriticalWorkQueue [text] 995

CS [text] 279

CScrollView [text] 1283

csq.lib [text] 1608

CSRSS [text] 24

CTL_CODE [text] 651, 652

FILE_ANY_ACCESS [text] 652, 653

FILE_READ_ACCESS [text] 652, 653

FILE_WRITE_ACCESS [text] 652, 653

illustrated [text] 653

IOCTL_LAB_HELLO_READ [lab] 56

IOCTL_LAB_HELLO_WRITE [lab] 56

IOCTL_LAB_INITIALIZE [lab] 56

METHOD_BUFFERED [text] 652, 653

METHOD_IN_DIRECT [text] 652, 653

METHOD_NEITHER [text] 652, 653

Ctrl+break [lab] 15

CurrentIrp [text] 706

Custom job step [text] 1072

CustomTimerDPC [text] 928

CView

MFC [text] 1283

D

D0, on [text] 1165

PowerDevice0

example [text] 1224

required [text] 1166

D1, sleep [text] 1165

optional [text] 1166

D2, deep sleep [text] 1165

optional [text] 1166

D3, off [text] 1165

required [text] 1166

DATA

input [lab] 60, 75

output [lab] 60, 66-75

Data Center Edition

limitations [text] 26

DATA register [lab] 43, 44

data_seg

#pragma [text] 1535

DBG

.rc [text] 983

ASSERT [text] 384

ASSERTMSG [text] 384

preprocessor symbol [text] 373

using [text] 386, 388

DbgBreakPoint [text] 386

conditional [text] 387, 388

DbgPrint [text] 374

%ls [text] 374

buffer limit [text] 382

example [text] 390-392, 570-580

DbgPrintEx [text] 375

%ls [text] 374

buffer limit [text] 382

ComponentId [text] 376

DPFLTR_ERROR_LEVEL [text] 381

DPFLTR_INFO_LEVEL [text] 381

DPFLTR_MASK [text] 381

DPFLTR_TRACE_LEVEL [text] 381

DPFLTR_WARNING_LEVEL [text] 381

HKLM\...\Debug Print Filter [text] 378

Kd_IHVAUDIO_Mask [text] 378

Kd_IHVVIDEO_Mask [text] 378

Level [text] 377, 379

system mask [text] 380

DDK

documentation [lab] 25

Deadlock [text] 614-616

avoidance [text] 616

detection [text] 498, 618

mutex [text] 1014

Deadlock detection

fast mutex [text] 498

mutex [text] 498

spin lock [text] 498

DeallocateObject [text] 791, 793-795

DeallocateObjectKeepRegisters [text] 878-880, 1546-1548

debug

BOOT.INI [text] 444

Debug Build

driver [text] 372

kernel [text] 370

DebugBreak [lab] 35

Debugger

CDB [text] 434

failures [text] 955

NTSD [text] 434

WinDbg [text] 433

Debugging

1394 [text] 973

ASSERT [text] 384, 385

ASSERTMSG [text] 384, 385

BRKPNT [text] 387, 388

configuration [text] 428

DBG [text] 373

DbgBreakpoint [text] 386

DbgPrint [text] 374

DbgPrintEx [text] 375

Firewire [text] 973

hardware [text] 969-971

KdPrint [text] 374

KdPrintEx [text] 375

layered driver [text] 972

remote [text] 425-427

techniques [text] 970, 971

USB [text] 973

DebugMask [text] 457

HKLM\...\drivername\Parameters [text] 452

debugport

BOOT.INI [text] 445

DebugPrint

WPP [text] 526

dec [text] 289

lock [text] 287

default=

BOOT.INI [text] 437

Defensive code [text] 968

Deferred Procedure Call

see DPC [text] 773

Dekker [text] 191, 1184-1217

Dekker, Edward N. [text] 2, 3, 1624

dekker@eclectic-eng.com [text] 2

DelayedWorkQueue [text] 995

DEPRECATE_DDK_FUNCTIONS

SOURCES [text] 513

Deprecated functions [text] 511-513

DeregisterEventSource [text] 1043

Descriptor

_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1392, 1413-1445

Configuration [text] 1364, 1365, 1369, 1370

Device [text] 1364-1368

Device_Qualifier [text] 1364, 1365, 1378

Endpoint [text] 1364, 1365, 1373-1375

HID [text] 1462

Interface [text] 1364, 1365, 1371, 1372

Interface_Power [text] 1364, 1365, 1380

Other_Speed_Configuration [text] 1364, 1365, 1379-1478

String [text] 1364, 1365, 1376, 1377

URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413

URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414

URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415

URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416

USB [text] 1363-1380

UsbBuildGetDescriptorRequest [text] 1445

Developing Windows NT Device Drivers [text] 3, 1624

Device [text] 1185

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1429, 1433

descriptor (USB) [text] 1365-1368

name

persistence [text] 554

object manager name space [text] 315

simple [text] 636

URB_FUNCTION_CLASS_DEVICE [text] 1433

URB_FUNCTION_VENDOR_DEVICE [text] 1429

Device driver [text] 169

defined [text] 16

Device extension [text] 308, 345, 346

illustrated [text] 311, 312, 347-352

Device name [text] 548

Device Object [text] 173

Device object [text] 174

IO_STACK_LOCATION.DeviceObject [text] 691

IoCreateDevice [text] 348-350

Device states [text] 1178

DEVICE_DESCRIPTION [text] 857

.BusNumber [text] 855

.Dma32BitAddresses [text] 855

.Dma64BitAddresses [text] 855

.InterfaceType [text] 856

.Master [text] 854

.MaximumLength [text] 856

.ScatterGather [text] 854

.Version [text] 854

structure [text] 853

DEVICE_OBJECT [text] 308, 341

.AlignmentRequirement [text] 342, 343

.Characteristics [text] 342

.CurrentIrp [text] 342, 706

.DeviceExtension [text] 342

.DeviceType [text] 342, 343

.DriverObject [text] 342

.Flags [text] 342, 343

DO_BUFFERED_IO [text] 634, 635

DO_DIRECT_IO [text] 658

.NextDevice [text] 342

example [text] 326, 395

illustrated [text] 311, 312, 342-352

IoCreateDevice [text] 348-350

Device_Qualifier

descriptor [text] 1477

descriptor (USB) [text] 1365, 1378

HID [text] 1477

DEVICE_TYPE [text] 342

DeviceID

PCI_COMMON_CONFIG [text] 1596, 1600

DeviceIoControl [text] 48, 61-68

buffered [text] 649, 650

illustrated [text] 654-657

CTL_CODE [text] 651, 652

illustrated [text] 653

desgin [text] 551

direct [text] 660

DMA [text] 865

handler [text] 322

I/O Completion Port [text] 79

IO_STACK_LOCATION

.Parameters [text] 695

.DeviceIoControl [text] 695

IOCTL_LAB_INITIALIZE [lab] 59

IRP_MJ_DEVICE_CONTROL [text] 65, 338

Lab2 [lab] 45, 52, 53

IOCTL_HELLO_INITIALIZE [lab] 45

IOCTL_HELLO_READ [lab] 45

IOCTL_HELLO_WRITE [lab] 45

Neither I/O [text] 672

DeviceIoControlEx [text] 48, 57-72

buffered [text] 649, 650

illustrated [text] 654-657

CTL_CODE [text] 651, 652

illustrated [text] 653

direct [text] 660

handler [text] 322

IRP_MJ_DEVICE_CONTROL [text] 65, 338

Neither I/O [text] 672

DeviceNumber

PCI_SLOT_NUMBER [text] 1595

DeviceObject [text] 1217

DevicePowerState [text] 1229

DeviceQueueEntry

IRP [text] 685

Diagnostics [text] 958, 967

Dialog-based [text] 1285

Direct addressing [text] 280

Direct I/O [text] 630, 632-819

DeviceIoControl [text] 660

DeviceIoControlEx [text] 660

DO_DIRECT_IO [text] 343, 658

MDL [text] 659

METHOD_IN_DIRECT [text] 652, 653, 660

METHOD_OUT_DIRECT [text] 652, 653, 660

ReadFile [text] 658

ReadFileEx [text] 658

WriteFile [text] 658, 661-663

illustrated [text] 664-669

WriteFileEx [text] 658, 661-663

illustrated [text] 664-669

Direct Memory Access

see DMA [text] 209, 830

directory

BOOT.INI [text] 442

DirectX [text] 1321

HID [text] 1495

DIRQL [text] 613

ISR [text] 181

KeSynchronizeExecution [text] 492, 599-781

illustrated [text] 891, 891-1561

priority [text] 177-179

DIRS [text] 409

Disassembly [text] 280, 281

disk(n)

BOOT.INI [text] 440, 447

DISPATCH

priority [text] 177, 178

Dispatch handler [text] 308, 322-353

process map [text] 166, 167

DISPATCH_LEVEL [text] 182, 613

IRQL checking [text] 492

KeAcquireInStackQueuedSpinLockAtDpcLevel [text] 603

KeAcquireSpinLockAtDpcLevel [text] 601

KeReleaseInStackQueuedSpinLockAtDpcLevel [text] 603

KeReleaseSpinLockAtDpcLevel [text] 601

spin lock [text] 599

Displacement [text] 279

Display

driver [text] 117-119

illustrated [text] 116, 120

hardware

illustrated [text] 120

miniport [text] 119

illustrated [text] 116

DisplayName

HKLM\...\Services\diivername [text] 452

Registry [text] 453, 454

Divide by zero [text] 468

DMA [text] 209, 851, 852

!dma [text] 497

32-bit [text] 1324

ADAPTER_OBJECT

IoAllocateAdapterChannel [text] 1545

IoMapTransfer [text] 1550, 1551

ADAPTER_OBJECT.AllocateAdapterChannel

illustrated [text] 1555

burst mode [text] 213

Bus master [text] 831, 832

illustrated [text] 833-839

bus master [text] 212, 213, 216-854

cache [text] 897, 898, 900-1566

illustrated [text] 899, 1564

CardBus [text] 1499

copy made [text] 860

defined [text] 830

DeviceIoControl [text] 865

DMA32BitAddresses [text] 855

DMA64BitAddresses [text] 855

DMA_OPERATIONS.AllocateAdapterChannel [text] 871, 872, 875, 876

illustrated [text] 890

DMA_OPERATIONS.AllocateCommonBuffer [text] 871, 872

DMA_OPERATIONS.FlushAdapterBuffers [text] 871, 872

DMA_OPERATIONS.FreeAdapterChannel [text] 871, 872, 881

DMA_OPERATIONS.FreeCommonBuffer [text] 871, 872

DMA_OPERATIONS.FreeMapRegisters [text] 871, 873

DMA_OPERATIONS.GetDmaAlignment [text] 871, 873

DMA_OPERATIONS.GetScatterGatherList [text] 871, 873-885

DMA_OPERATIONS.MapTransfer [text] 871, 873-883

DMA_OPERATIONS.PutDmaAdapter [text] 871, 872

DMA_OPERATIONS.PutScatterGatherList [text] 871, 873-886

DMA_OPERATIONS.ReadDmaCount [text] 871, 873

DMA_OPERATIONS.Size [text] 871, 872

example [text] 887, 1552

GetDmaAdapter [text] 874

HAL [text] 241

illustrated [text] 810, 811

IoGetDmaAdapter [text] 877

map registers [text] 849

partial MDL [text] 822

PCMCIA [text] 1499

physical address [text] 832

scatter-gather [text] 860

system [text] 214, 216-841

illustrated [text] 842-848

verification [text] 496

video miniport [text] 1321

DMA_ADAPTER object [text] 868, 869, 876

.PutDmaAdapter [text] 871

DMA_OPERATIONS [text] 870

GetDmaAdapter [text] 874

IoGetDmaAdapter [text] 877

PutDmaAdapter [text] 872

DMA_OPERATIONS [text] 870

.AllocateAdapterChannel [text] 871, 872, 875, 876

illustrated [text] 890, 896

.AllocateCommonBuffer [text] 871, 872

.FlushAdapterBuffers [text] 871, 872, 898-901

illustrated [text] 894-896, 899

.FreeAdapterChannel [text] 871, 872, 881

illustrated [text] 894-896

.FreeCommonBuffer [text] 871, 872

.FreeMapRegisters [text] 871, 873

.GetScatterGatherList [text] 882, 884, 885

.MapTransfer [text] 882, 883

illustrated [text] 891

.PutDmaAdapter [text] 871, 872

.PutScatterGatherList [text] 884, 886

.Size [text] 871, 872

DO_BUFFERED_IO [text] 343, 634, 635

DO_DEVICE_INITIALIZING [text] 1185, 1185

DO_DIRECT_IO [text] 343, 658

Documentation

DDK [lab] 25

MSDN [lab] 25

simulator [lab] 25

WinDbg [lab] 25

DONE [lab] 42-44, 44

input [lab] 61, 63

output [lab] 66

DosDevices

object manager name space [text] 315

Downward [text] 1217

DPC [text] 173, 174, 182-773

context [text] 630, 776

DISPATCH_LEVEL [text] 182

FMS

illustrated [text] 784

FSM [text] 783

handler [text] 777

illustrated [text] 340, 683-784

IoInitializeDpcRequest [text] 774

IoRequestDPC

illustrated [text] 893, 1558

IoRequestDpc [text] 613, 771-781

KeAcquireInStackQueuedSpinLockAtDpcLevel [text] 603

KeAcquireSpinLockAtDpcLevel [text] 601

KeInitializeDpc [text] 941

Lab4 [lab] 80

KeInitializeTimerEx [text] 942

KeInititalizeTimer [text] 941

KeReleaseInStackQueuedSpinLockAtDpcLevel [text] 603

KeReleaseSpinLockAtDpcLevel [text] 601

MDL [text] 799

object

illustrated [text] 778

PIO_DPC_ROUTINE [text] 774, 777

priority [text] 177, 178

process context [text] 182

process map [text] 166, 167

processing [text] 782

timer [text] 173, 174, 928-938

unbounded [text] 43

DPFLTR_*

DebugPrintEx [text] 381

DPFLTR_IHVAUDIO_ID [text] 376

DPFLTR_IHVBUS_ID [text] 376

DPFLTR_IHVDRIVER_ID [text] 376

DPFLTR_IHVNETWORK_ID [text] 376

DPFLTR_IHVSTREAMING_ID [text] 376

DPFLTR_IHVVIDEO_ID [text] 376

Driver

1394 [text] 98

auto-loading [lab] 8

bus [text] 98, 136

CD [text] 113

class [text] 1151

disk [text] 113

display [text] 117-119

illustrated [text] 116, 120

file system [text] 98, 104, 105

filter [text] 98, 1113-1115

Firewire [text] 98

floppy [text] 113

good design [text] 976

graphics [text] 98, 115-122

illustrated [text] 116, 120, 121

illustrated [text] 173, 174

intermediate-level [text] 99, 130-132

keyboard [text] 113

layered [text] 129, 172

low-level [text] 99, 130-132

minidriver [text] 1151

miniport [text] 99-102, 132

illustrated [text] 103

monolithic [text] 131, 132, 172

mouse [text] 113

NDIS [text] 109

illustrated [text] 110-112

network [text] 109

illustrated [text] 110-112

port [text] 99-102

illustrated [text] 103

printer [text] 122

illustrated [text] 121

robust [text] 976

SCSI [text] 125, 126

illustrated [text] 123, 124

serial port [text] 113, 114

signed [text] 1342-1345

streaming [text] 133, 135

illustrated [text] 134

subsystem [text] 98

taxonomy [text] 132

top-level [text] 99, 130-132

USB [text] 98

Driver object [text] 173, 174, 323

extension

.AddDevice [text] 1174

Driver thread [text] 990

floppy example [text] 1022-1025

Driver verifier [text] 487-489

automatic checks [text] 490

create settings [text] 500

deadlock detection [text] 498, 618

disabling [text] 505

DMA verification [text] 496

Forcing IRQL checking [text] 492

I/O verificaiton [text] 495

low resource simulation [text] 493

memory pool tracking [text] 494

reboot [text] 504

SCSI verification [text] 499

selection [text] 502, 503

settings [text] 501

special memory pool [text] 491, 491

DRIVER_OBJECT [text] 308

.DeviceObject [text] 330, 332

.DriverExtension

.AddDevice

example [text] 327

.DriverStartIo [text] 712

.DriverUnload [text] 396

example [text] 327, 1175

.HardwareDatabase [text] 332

.MajorFunction [text] 311, 312, 322-716

example [text] 327, 336-1175

IRP_MJ_CLOSE [text] 396

IRP_MJ_CREATE [text] 396

NULL [text] 337

.StartIo

example [text] 327

DriverEntry [text] 310

extension

.AddDevice [text] 1174

illustrated [text] 311, 312, 312-1186

structure [text] 332

DriverEntry [text] 173, 174, 308-1170

called at load [text] 309, 310

example [text] 323, 326-331

illustrated [text] 1171

intermediate level [text] 1172

Lab2 [lab] 70

Plug-and-Play [text] 313, 1172

WDM [text] 1156

Drivers

virtual memory [text] 166, 167

DriverStartIo

DRIVER_OBJECT [text] 712

DriverUnload

example [text] 327, 334

guidelines [text] 333

DS [text] 279

DWORD

DWORD32 [text] 1327

DWORD64 [text] 1327

DWORD_PTR [text] 1328

DWORD32 [text] 1327

DWORD64 [text] 1327

DWORD_PTR [text] 1328

Dzatko, Dave [text] 1625

E

EaLength

IO_STACK_LOCATION.Parameters.Create [text] 692

eax [text] 262

result register [text] 262

ebp [text] 266

accessing [text] 270

frame pointer optimization [text] 272

illustrated [text] 269

local variables [text] 270

parameters [text] 270

saving [text] 270

ebx [text] 262

ecx [text] 262

edi [text] 262

Edward [text] 191, 1184-1217

edx [text] 262

edx:eax

result register [text] 262

edx_eax

64-bit result [text] 262

Efficiency

MFC [text] 1316

eflags

popf [text] 268

pushf [text] 268

eip [text] 266

EISA bus [text] 245

Elevator head scheduler [text] 701

Else [text] 1185

EMI problems [text] 957

endian dependent [text] 39

Endpoint

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1435

descriptor (USB) [text] 1365, 1373-1375

HID [text] 1462, 1466, 1467

URB_FUNCTION_CLASS_ENDPOINT [text] 1435

URB_FUNCTION_VENDOR_ENDPOINT [text] 1431

USB [text] 1357

HID [text] 1466, 1467

Enumeration

PCMCIA [text] 1505

USB [text] 1359, 1360

USB hub [text] 1361

Environment variables

_NT_DEBUG_BAUD_RATE [lab] 10, 11

_NT_DEBUG_PORT [lab] 10, 10, 11

_NT_KD_FILES [lab] 10, 11

_NT_SYMBOL_PATH [lab] 10, 11

editing [lab] 12-14

WinDbg [lab] 6, 7, 10, 11

EOP [lab] 43, 44

input [lab] 61, 63

Epilog [text] 270

ERESOURCE [text] 1016

ERR [lab] 44

input [lab] 61, 63

output [lab] 66

Error

EVENTLOG_ERROR_TYPE [text] 1045

Error code

format [text] 361

user-defined [text] 361, 362, 1053-1259

Error code format [text] 1053, 1054, 1259

ERROR_DIV_0 [text] 1243

ERROR_IO_PENDING [text] 69

ERROR_LOG_MAXIMUM_SIZE [text] 1082

ErrorControl

HKLM\...\Services [text] 452

Registry [text] 455

ES [text] 279

esi [text] 262

esp [text] 266

illustrated [text] 269

Event [text] 1003, 1004, 1184

KeInitializeEvent [text] 1011

KeResetEvent [text] 1012

KeSetEvent [text] 1012

KEVENT [text] 1011, 1012

video miniport [text] 1321

Event block

WMI [text] 1518

Event log

application [text] 1033

audit event [text] 1078

DeregisterEventSource [text] 1043

entry [text] 1077

Error [text] 1038

event entry [text] 1078

event types [text] 1038

event viewer

illustrated [text] 1049

guidelines [text] 1077

illustrated [text] 1037

Informational [text] 1038

IO_ERROR_LOG_PACKET [text] 1084

IoAllocateErrorLogEntry [text] 1080-1082, 1087

IoWriteErrorLogEntry [text] 1088

IoWriteLogErrorEntry [text] 1080

justification [text] 1034, 1076

RegisterEventSource [text] 1043, 1044

ReportEvent [text] 1043, 1047-1068

security [text] 1033

system [text] 1032, 1033

text [text] 1039

guidelines [text] 1040

viewer [text] 1032

illustrated [text] 1035-1037, 1041

Warning [text] 1038

Event viewer [text] 1032

illustrated [text] 1035-1037, 1041

Event-driven [text] 23, 29

EVENT_INCREMENT [text] 357

EVENTLOG_ERROR_TYPE [text] 1045

EVENTLOG_INFORMATION_TYPE [text] 1045

EVENTLOG_WARNING_TYPE [text] 1045, 1048

EventMessageFile

HKLM\...\EventLog\System\drivername [text] 1045

ExAcquireFastMutex [text] 1013

ExAcquireFastMutexUnsafe [text] 1013

ExAcquireResourceExclusiveLite [text] 1016

ExAcquireResourceSharedLite [text] 1016

ExAcquireSharedStartExclusive [text] 1019

ExAcquireSharedWaitForExclusive [text] 1019

ExAllocateFromNPagedLookasideList [text] 917

ExAllocatePool [text] 907

example [text] 1221

ExAllocatePoolWithTag [text] 911

Exception

hardware [text] 207

POOL_RAISE_IF_ALLOCATION_FAILURE [text] 916

Exception handler [text] 1235

__except [text] 1236, 1242-1260

illustrated [text] 1237-1240

__finally [text] 1260, 1265-1269

__leave [text] 1260-1263

__try [text] 1236, 1242-1260

illustrated [text] 1237-1240

AbnormalTermination [text] 1247, 1248, 1267-1269

C++ (forbidden) [text] 1270

control flow [text] 1237-1240

illustrated [text] 1241

EXCEPTION_CONTINUE_EXECUTION [text] 1246

illustrated [text] 1241

EXCEPTION_CONTINUE_SEARCH [text] 1246

illustrated [text] 1240

EXCEPTION_EXECUTE_HANDLER [text] 1246

illustrated [text] 1239

EXCEPTION_NONCONTINUABLE_EXCEPTION [text] 1258

EXCEPTION_NOT_CONTINUABLE [text] 1246

EXCEPTION_POINTERS [text] 1256, 1264

EXCEPTION_RECORD [text] 1256

ExRaiseAccessViolation [text] 1248, 1250

ExRaiseDatatypeMisalignment [text] 1248, 1251

ExRaiseStatus [text] 1248, 1249

GetExceptionCode [text] 1247, 1248, 1252, 1253

GetExceptionInformation [text] 1247, 1248, 1254-1257

PASSIVE_LEVEL [text] 1248

PEXCEPTION_POINTERS [text] 1264

RaiseException [text] 1247, 1258

EXCEPTION_ACCESS_VIOLATION [text] 1264

EXCEPTION_CONTINUE_EXECUTION [text] 1246

EXCEPTION_CONTINUE_SEARCH [text] 1246, 1264

illustrated [text] 1240, 1240

EXCEPTION_EXECUTE_HANDLER

illustrated [text] 1239

EXCEPTION_NONCONTINUABLE_EXCEPTION [text] 1258

EXCEPTION_NOT_CONTINUABLE [text] 1246

EXCEPTION_POINTERS [text] 1256, 1264

EXCEPTION_RECORD [text] 1256

ExConvertExclusiveToSharedLite [text] 1019

ExDeleteNPagedLookasideList [text] 919

EXECEPTION_EXECUTE_HANDLER [text] 821, 1246

Executable

examining [text] 1060-1063

Executive Resource [text] 1003

Executive resource [text] 1005, 1015

ERESOURCE [text] 1016

ExAcquireResourceExclusiveLite [text] 1016

ExAcquireResourceSharedLite [text] 1016

ExAcquireSharedStartExclusive [text] 1019

ExAcquireSharedWaitForExclusive [text] 1019

ExConvertExclusiveToSharedLite [text] 1019

ExInitializeResourceLite [text] 1016

ExReleaseResourceForThreadLite [text] 1016

multiple-reader [text] 1017

single-writer [text] 1018

waitable object (not!) [text] 1021

Executive services [text] 175, 176

ExFreePool [text] 574, 913

example [text] 585, 1226

ExFreePoolWithTag [text] 913

ExFreeToNPagedLookasideList [text] 918

ExInitializeFastMutex [text] 1013

ExInitializeNPagedLookasideList [text] 915

ExInitializeResourceLilte [text] 1016

ExInterlockedInsertHeadList [text] 728, 733

ExInterlockedInsertTailList [text] 728, 733

ExInterlockedRemoveHeadList [text] 728, 729, 733

illustrated [text] 732

ExRaiseAccessViolation [text] 1248, 1250

ExRaiseDatatypeMisalignment [text] 1248, 1251

ExRaiseStatus [text] 1248, 1249

ExReleaseFastMutex [text] 1013, 1013

ExReleaseFastMutexUnsafe [text] 1013

ExReleaseResourceForThreadLite [text] 1016

Extender card [text] 964, 965

Extension

Controller extension [text] 788

device [text] 308, 345, 346

illustrated [text] 311, 312, 347-352

driver object [text] 1174

DRIVER_OBJECT [text] 1174

File Object [text] 564

Ex… [text] 176

F

F10

WinDbg [lab] 21, [text] 462

F5

WinDbg [lab] 15, 21, [text] 462

F8

WinDbg [lab] 21

Facility code [text] 361, 1053-1259

FALSE [text] 1184

Fast mutex [text] 1003, 1005

deadlock detection [text] 498

ExAcquireFastMutex [text] 1013

ExAcquireFastMutexUnsafe [text] 1013

ExInitializeFastMutex [text] 1013

ExReleaseFastMutex [text] 1013, 1013

ExReleaseFastMutexUnsafe [text] 1013

KFAST_MUTEX [text] 1013

mutex comparison [text] 1014

waitable object (not!) [text] 1021

FASTCALL

example [text] 290

fastdetect

BOOT.INI [text] 446

FAT

illustrated [text] 123, 124

FAULTING_IP [text] 475

FDO [text] 1157, 1158

I8042 [text] 1480, 1485

illustrated [text] 1160, 1186

KBdhid [text] 1480, 1485

Fdo [text] 1185, 1185

fdoExt [text] 1217, 1217

fdoExtension [text] 1184, 1184, 1185

Feature

_URB_CONTROL_FEATURE_REQUEST [text] 1392, 1417-1424

URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421

URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423

URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422

URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424

URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417

URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419

URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420

Fence

LFENCE [text] 304

memory [text] 42

MFENCE [text] 304

SFENCE [text] 304

File Object [text] 562, 563

extension [text] 564

FsContext [text] 564

IO_STACK_LOCATION.FileObject [text] 691

IRP_MJ_CLEANUP [text] 564

IRP_MJ_CREATE [text] 564, 565

File system

driver [text] 98, 104, 105

filter driver

illustrated [text] 106-108, 1116, 1117

Windows NT File System Internals [text] 1624

File system driver

illustrated [text] 106-108, 689-1117

File system filter driver [text] 1114, 1115

FILE_128_BYTE_ALIGNMENT [text] 343

FILE_32_BYTE_ALIGNMENT [text] 343

FILE_512_BYTE_ALIGNMENT [text] 343

FILE_64_BYTE_ALIGNMENT [text] 343

FILE_ANY_ACCESS [text] 652, 653

FILE_APPEND_DATA [text] 51

FILE_ATTRIBUTE_NORMAL

example [lab] 58, [text] 403

FILE_BYTE_ALIGNMENT [text] 343

FILE_DEVICE_* [text] 350

8042_PORT [text] 350

ACPI [text] 350

BATTERY [text] 350

BEEP [text] 350

CD_ROM [text] 350

CD_ROM_FILE_SYSTEM [text] 350

CHANGER [text] 350

CONTROLLER [text] 350

DATALINK [text] 350

DFS [text] 350

DFS_FILE_SYSTEM [text] 350

DFS_VOLUME [text] 350

DISK [text] 350

DISK_FILE_SYSTEM [text] 350

DVD [text] 350

FIPS [text] 350

FULLSCREEN_VIDEO [text] 350

INPORT_PORT [text] 350

KEYBOARD [text] 350

KS [text] 350

KSEC [text] 350

MASS_STORAGE [text] 350

MIDI_IN [text] 350

MIDI_OUT [text] 350

MODEM [text] 350

MOUSE [text] 350

MULTI_UNC_PROVIDER [text] 350

NETWORK [text] 350

NETWORK_BROWSER [text] 350

NETWORK_FILE_SYSTEM [text] 350

NETWORK_REDIRECTOR [text] 350

NULL [text] 350

PARALLEL_PORT [text] 350, 350

PHYSICAL_NETCARD [text] 350

PIPE [text] 350

PRINTER [text] 350

SCANNER [text] 350

SCREEN [text] 350

SERENUM [text] 350

SERIAL_MOUSE_PORT [text] 350

SERIAL_PORT [text] 350

SMARTCARD [text] 350

SMB [text] 350

SOUND [text] 350

STREAMS [text] 350

TAPE [text] 350

TAPE_FILE_SYSTEM [text] 350

TERMSERV [text] 350

TRANSPORT [text] 350

UNKNOWN [text] 350

VDM [text] 350

VIDEO [text] 350

VIRTUAL_DISK [text] 350

WAVE_IN [text] 350

WAVE_OUT [text] 350

FILE_DEVICE_UNKNOWN [text] 1177

example [text] 328, 397

FILE_FLAG_NORMAL [text] 53

FILE_FLAG_OVERLAPPED [text] 53, 69

FILE_LONG_ALIGNMENT [text] 343

FILE_OBJECT

.FileName [text] 566, 567

.FSContext [text] 563, 564, 566-568

.FsContext

example [text] 569, 572-574

.FsContext2 [text] 566

example [text] 569-582, 584, 585

IRP_MJ_CLEANUP [text] 564

IRP_MJ_CREATE [text] 565

FILE_OCTA_ALIGNMENT [text] 343

FILE_QUAD_ALIGNMENT [text] 343

FILE_READ_ACCESS [text] 652, 653

FILE_READ_ATTRIBUTES [text] 51

FILE_READ_DATA [text] 51

FILE_READ_EA [text] 51

FILE_SHARE_DELETE [text] 52

FILE_SHARE_READ [text] 52

FILE_SHARE_WRITE [text] 52

FILE_WORD_ALIGNMENT [text] 343

FILE_WRITE_ACCESS [text] 652, 653

FILE_WRITE_ATTRIBUTES [text] 51

FILE_WRITE_DATA [text] 51

FILE_WRITE_EA [text] 51

FileAttributes

IO_STACK_LOCATION.Parameters.Create [text] 692

FILEFLAGS [text] 983

FILEFLAGSMASK [text] 983

FileName

FILE_OBJECT [text] 566, 567

FILEOS [text] 983

FILESUBTYPE [text] 983

FILETYPE [text] 983

FILEVERSION [text] 983

Filter

driver [text] 98

Filter driver [text] 98, 1113-1115

file system [text] 1114, 1115

illustrated [text] 106-108, 1116, 1117

IoAttachDevice [text] 1118

illustrated [text] 1119-1122

FindFirstFile [text] 48

FindNextFile [text] 48

Finite state machine

see FSM [text] 783

Firewire

bus analyzer [text] 961, 962

compared to USB [text] 1386

debugging [text] 973

debugging port [text] 483

driver [text] 98

performance [text] 1508, 1509

WDM [text] 1147

Firewire System Architecture [text] 1625

Flag [text] 1185

Flags [text] 1185

eflags [text] 266

rflags [text] 266

flags

popf [text] 268

pushf [text] 268

Floating point

forbidden [text] 374

Floppy

driver [text] 113

Floppy driver

example [text] 1022-1025

Flush

cache [text] 230, 241

FlushAdapterBuffers [text] 898, 901

illustrated [text] 899

IoFlushAdapterBuffers [text] 1563, 1566

illustrated [text] 1564

KeFlushIoBuffers [text] 898, 900-1565

illustrated [text] 890, 899-1564

FlushAdapterBuffers [text] 898, 901

DMA_OPERATIONS [text] 871, 872

illustrated [text] 894-896, 899-1561

Foreground

priority [text] 177, 178

FormatMessage [text] 1083

%n [text] 1065-1068, 1071

parameters [text] 1065-1068, 1071

FPO [text] 272

Frame

_URB_FRAME_LENGTH_CONTROL [text] 1402, 1403

_URB_GET_CURRENT_FRAME_NUMBER [text] 1406

_URB_GET_FRAME_LENGTH [text] 1404

_URB_SET_FRAME_LENGTH [text] 1405

URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406

URB_FUNCTION_GET_FRAME_LENGTH [text] 1404

URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403

URB_FUNCTION_SET_FRAME_LENGTH [text] 1405

URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402

Frame pointer

ebp

illustrated [text] 269

Frame Pointer Optimization [text] 272

Free Build

driver [text] 372

kernel [text] 370

FreeAdapterChannel

DMA_OPERATIONS [text] 871, 872, 881

illustrated [text] 894-896

FreeCommonBuffer

DMA_OPERATIONS [text] 871, 872

FreeMapRegisters

DMA_OPERATIONS [text] 871, 873

FS [text] 279

FsContext [text] 563

example

IRP_MJ_CLEANUP [text] 583-585

IRP_MJ_CREATE [text] 569-575

IRP_MJ_READ [text] 577-582

example. IRP_MJ_CREATE [text] 576

FILE_OBJECT [text] 568

FILE_OBJECT *PHRASE=FsContext2

FILE_OBJECT [text] 566

FSM [text] 783

illustrated [text] 784

Full duplex

queue [text] 701

Full speed

bulk transfer [text] 1355

cable length [text] 1383

HID [text] 1454, 1458

endpoints [text] 1460

USB [text] 1349, 1351

Function

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1436

URB_FUNCTION_CLASS_OTHER [text] 1436

Function driver [text] 1159

Functional Device Object

see FDO [text] 1157

FunctionNumber

PCI_SLOT_NUMBER [text] 1595

Functions

deprecated [text] 511-513

G

GDI [text] 122

illustrated [text] 116, 121

GDI32 [text] 122

illustrated [text] 116, 121

GENERIC_READ [text] 51

example [lab] 58, [text] 403

GENERIC_WRITE [text] 51

example [lab] 58, [text] 403

GetDmaAdapter [text] 874

GetExcepitonCode [text] 1247, 1252, 1253

GetExcepitonInformation [text] 1254-1257

GetExceptionCode [text] 1248

GetExceptionInformation [text] 1247, 1248

GetLastError

effective use [text] 1079

ERROR_IO_PENDING [text] 69

IO_STATUS_BLOCK

.Status [text] 360

GetModuleName [text] 1046

GetOverlappedResult [text] 71

GetQueuedCompletionStatus [text] 71, 78-80

GetScatterGatherList

DMA_OPERATIONS [text] 871, 873-885

gflags [text] 538, 539

global

never used [text] 344

GO [lab] 43, 44

input [lab] 62, 63, 75

output [lab] 65, 66, 75

Go

WinDbg [text] 459

Graphics

driver [text] 98, 115-122

illustrated [text] 116, 120, 121

Group

HKLM\...\Services\diivername [text] 452

Registry [text] 455

GS [text] 279

GUI app

paradigm [text] 1276

GUI thread

driver impact [text] 93

GUID

defined [text] 1515, 1516

GUID_POWER_DEVICE_ENABLE [text] 1522

GUID_POWER_DEVICE_WAKE_ENABLE [text] 1522

HidD_GetHidGUID [text] 1488, 1489

MSWmi_MofData_GUID [text] 1520

WMI [text] 1519

WMI dat [text] 1517

GUID_POWER_DEVICE_ENABLE [text] 1522

GUID_POWER_DEVICE_WAKE_ENABLE [text] 1522

Gulliver’s Travels [text] 39

H

HAL [text] 40, 169-240

bus driver [text] 243

cache [text] 241

DMA [text] 241

HalGetAdapter [text] 1543

HalGetBusData [text] 254, 256

HalGetInterruptVector [text] 254, 760-764

HalTranslateBusAddress [text] 254-256

interrupt [text] 180, 241

multiprocessor [text] 242

PCI [text] 1587

portability [text] 38, 40

READ_PORT_BUFFER_UCHAR [text] 248, 250

READ_PORT_BUFFER_ULONG [text] 248, 250

READ_PORT_BUFFER_USHORT [text] 248, 250

READ_PORT_UCHAR [text] 247

using [text] 251, 252

READ_PORT_ULONG [text] 247

using [text] 251, 252

READ_PORT_USHORT [text] 247

using [text] 251, 252

READ_REGISTER_BUFFER_UCHAR [text] 248, 249

READ_REGISTER_BUFFER_ULONG [text] 248, 249

READ_REGISTER_BUFFER_USHORT [text] 248, 249

READ_REGISTER_UCHAR [text] 247

using [lab] 42, [text] 251, 252

READ_REGISTER_ULONG [text] 247

using [text] 251, 252

READ_REGISTER_USHORT [text] 247

using [text] 251, 252

special [text] 244

uniprocessor [text] 242

WRITE_REGISTER_BUFFER_UCHAR [text] 248, 248, 249

WRITE_REGISTER_BUFFER_ULONG [text] 248, 248, 249

WRITE_REGISTER_BUFFER_USHORT [text] 248, 248, 249

WRITE_REGISTER_UCHAR [text] 247, 247-293

using [lab] 42, [text] 251, 251, 252

WRITE_REGISTER_ULONG [text] 247, 247-294

illustrated [text] 295-298

using [text] 251, 251, 252

WRITE_REGISTER_USHORT [text] 247, 247-293

using [text] 251, 251, 252

HalAssignSlotResources [text] 1589

HALF_PTR [text] 1328

UHALF_PTR [text] 1328

HalGetAdapter [text] 1543

HalGetBusData [text] 254, 256-1588

simulator [lab] 71

HalGetBusDataByOffset [text] 1588

HalGetInterruptVector [text] 254, 760-764

HalTranslateBusAddress [text] 254-256

simulator [lab] 71

Hal… [text] 176

Handle [text] 563

DuplicateHandle [text] 563

FILE_OBJECT [text] 568

state [text] 562

Handler [text] 1184, 1185

HandleToLong [text] 1330

HandleToUlong [text] 1330

HARDWARE

HKEY_LOCAL_MACHINE [text] 149

Hardware

shared state [text] 787, 788

Hardware Abstraction Layer

see HAL [text] 238

Hardware simulator [lab] 41, 42, 48

control panel [lab] 49, 50

Get State button [lab] 42, 44-68

starting [lab] 68

HdwSim.sys [lab] 40-42, 48

starting [lab] 68

HdwSimDriver.reg [lab] 48

HeaderType

PCI_COMMON_CONFIG [text] 1596, 1600

Heisenbug [text] 955

HelloWorld.c [text] 369, 393-395

helloworld.sys [lab] 27

HID [text] 1453, 1484-1487

control endpoint [text] 1459

data [text] 1455

descriptor

report [text] 1469

string [text] 1468

device descriptor [text] 1462

Device_Qualifier [text] 1477

DirectX [text] 1495

endpoint [text] 1460, 1462-1467

control [text] 1459, 1460

interrupt [text] 1459, 1460

full speed [text] 1454

transaction [text] 1458

HidD_GetAttributes [text] 1488

HidD_GetCaps [text] 1489

HidD_GetFeature [text] 1494

HidD_GetHidGUID [text] 1488, 1489

HidD_GetPreparsedData [text] 1489

HidD_SetFeature [text] 1494

high speed [text] 1454

transaction [text] 1458

interface [text] 1465

interrupt endppint [text] 1459

item [text] 1470-1472

keyboard [text] 1479-1481, 1485

low speed [text] 1454

transaction [text] 1458

Mouclass [text] 1480, 1485

mouse [text] 1479-1481, 1485

Other_Speed_Configuration [text] 1478

ProductID [text] 1463

report [text] 1455-1457, 1461-1493

requirements [text] 1459

scope [text] 1472

global [text] 1475

local [text] 1476

main [text] 1473, 1474

serial number [text] 1463

Sermouse [text] 1480, 1485

SetupDiEnumDeviceInterfaces [text] 1488, 1489

SetupDiGetClassDevs [text] 1488, 1489

SetupDiGetDeviceInterfaceDetail [text] 1488, 1489

string descriptor [text] 1468

transaction [text] 1458

VendorID [text] 1463

HidD_GetAttributes

HID [text] 1488

HidD_GetCaps

HID [text] 1489

HidD_GetFeature [text] 1494

HidD_GetHidGuid [text] 1488, 1489

HidD_GetPreparsedData

HID [text] 1489

HidD_SetFeature [text] 1494

Hidgame

miniport [text] 1480, 1485

Hidusb

miniport [text] 1480, 1485

High speed

bulk transfer [text] 1355

HID [text] 1454, 1458

endpoints [text] 1460

USB [text] 1349, 1351

History

x86 [text] 260

HKEY_CLASSES_ROOT [text] 141

HKEY_CURRENT_USER [text] 141

HKEY_LOCAL_MACHINE [text] 141, 143

HARDWARE [text] 142, 149

SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter [text] 378

SYSTEM\CurrentControlSet\Services\drivername [text] 148, 452

DisplayName [text] 148, 452

ErrorControl [text] 148, 452

Group [text] 452

ImagePath [text] 148

Start [text] 148, 452

Type [text] 148, 452

SYSTEM\CurrentControlSet\Services\EventLog\System\drivername

EvemtMessageFile [text] 1045

TypesSupported [text] 1045

HKEY_USERS [text] 141

Host

configuration [text] 429, 431

illustrated [text] 432

Hub

enumeration [text] 1360, 1361

USB [text] 1348

USB root [text] 1350, 1351

Human Interface Device class [text] 1453, 1484

HyperCriticalWorkQueue [text] 995

Hyperthreading [text] 28

I

I/O

buffered [text] 630, 632

direct [text] 630, 632

I/O bus [text] 187

illustrated [text] 188

I/O Completion Port [text] 58, 74, 75

architecture

illustrated [text] 82

ConnectNamedPipe [text] 79

CreateIoCompletionPort [text] 76, 77

DeviceIoControl [text] 79

GetQueuedCompletionStatus [text] 71, 78, 79

LockFileEx [text] 79

maximum concurrency value [text] 75

PostQueuedCompletionStatus [text] 79

ReadDirectoryChangesW [text] 79

ReadFile [text] 79

TransactNamedPipe [text] 79

WaitCommEvent [text] 79

WriteFile [text] 79

I/O Manager [text] 169, 170, 173, 174

buffering [text] 630, 632-650

illustrated [text] 639-642, 645-657

Driver object [text] 323

illustrated [text] 106-108, 340-1117

interrupt [text] 180, 203

MajorFunction dispatch [text] 337

services [text] 176

I/O port [text] 217

BaseAddress [text] 1584

bus relative [text] 253

HalTranslateBusAddress [text] 254-256

system relative [text] 253

HalTranslateBusAddress [text] 254-256

I/O Request Packet

see IRP [text] 63

I/O Verification [text] 495

I8042

FDO [text] 1480, 1485

IA64 [text] 26

alignment [text] 1325

IACK

input [lab] 62

output [lab] 65

ICE [text] 963

IDE

not used [text] 408

Idle

priority [text] 87, 177, 178

IDT [text] 206

illustrated [text] 754

IE

input [lab] 62

output [lab] 65

If [text] 1185

Illegal instruction [text] 468

ImagePath

Registry [text] 453

Immediate addressing [text] 280

IN [text] 1217, 1217

in [text] 217

In-Circuit Emulator [text] 958, 963

inc [text] 288

lock [text] 287

two cycles [text] 27

Index register [text] 279

Indexed addressing [text] 280

Information

EVENTLOG_INFORMATION_TYPE [text] 1045

InitializeListHead [text] 725, 733

InputBufferLength

IO_STACK_LOCATION.Parameters.DeviceIoControl [text] 695

InsertHeadList [text] 733

InsertTailList [text] 733

cancel-safe-queue [text] 1613

Inside Microsoft Windows [text] 1624

Installation

Registry [text] 456

Instruction

arithmetic [text] 273

call/return [text] 268

control transfer [text] 276

interrupt [text] 277

jump [text] 276

mov [text] 267

string [text] 277

pointer

eip [text] 266

rip [text] 266

stack [text] 268

Instructions [text] 191

INT

input [lab] 61

int

INT32 [text] 1327

INT64 [text] 1327

int 3 [text] 277

int n [text] 277

INT32 [text] 1327

INT64 [text] 1327

INT_PTR [text] 1328

Interface

_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1392, 1438

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1430, 1431, 1434

_URB_SELECT_INTERFACE [text] 1400

descriptor (USB) [text] 1365, 1371, 1372

device [text] 552, 553

IoGetDeviceInerfaceAlais [text] 555

IoGetDeviceInterface [text] 555

IoOpenDeviceInterfaceRegistryKey [text] 555

IoRegisterDeviceInterface [text] 555

IoSetDeviceInterfaceState [text] 555

HID [text] 1465

IoRegisterDeviceInterface [text] 556

IoSetDeviceInterfaceState [text] 556

rules [text] 18

SetDiGetDeviceInterfaceDetail [text] 557

SetupDiDestroyDeviceInfoList [text] 557

SetupDiEnumDeviceInterfaces [text] 557

SetupDiGetClassDevs [text] 557

URB_FUNCTION_CLASS_INTERFACE [text] 1434

URB_FUNCTION_GET_INTERFACE [text] 1438

URB_FUNCTION_SELECT_INTERFACE [text] 1400

URB_FUNCTION_VENDOR_INTERFACE [text] 1430

USB [text] 1465

Interface_Power

descriptor (USB) [text] 1365, 1380

INTERFACE_TYPE [text] 759, 763

InterlockedCompareExchange [text] 290, 291, 608

InterlockedDecrement [text] 289, 608

InterlockedExchange [text] 608

InterlockedIncrement [text] 288, 608

Intermediate-level driver [text] 99, 130-1149

Interrupt [text] 34

bus interrupt vector [text] 759

bus relative [text] 253

HalGetInterruptVector [text] 254-256

CM_RESOURCE_LIST [text] 1198

connecting [text] 762, 764, 765

defined [text] 208

descriptor table [text] 206

disconnecting [text] 1206

dispatching [text] 755

HAL [text] 241

HalGetInterruptVector [text] 760

hardware [text] 180

IACK

input [lab] 62

output [lab] 65

IDT [text] 206

IE

input [lab] 62

output [lab] 65

illustrated [text] 779

IoConnectInterrupt [text] 766-769

ISA [text] 200

ISR/DPC [text] 756, 757

KiInterruptDispatch [text] 754, 755

Lab3 [lab] 73

latency

unbounded [text] 43

layered driver [text] 753

level [text] 759

level-triggered [text] 201, 203

illustrated [text] 202

level-triggered. illustrated [text] 204

mapping [text] 180

message-based [text] 205

object

illustrated [text] 779

PCI [text] 200

processing

illustrated [text] 754

scope [text] 772

IRP..IoCompleteRequest [text] 772

IRP_MJ_CREATE..IRP_MJ_CLOSE [text] 772

IRP_MN_START_DEVICE..IRP_MN_STOP_DEVICE [text] 772

shared [text] 180, 203

system relative [text] 253

HalGetInterruptVector [text] 254-256

vector [text] 759

HalGetInterruptVector [text] 762, 764

Interrupt object [text] 173, 174

illustrated [text] 778

spin lock [text] 755

illustrated [text] 892, 1557

Interrupt Service Routine

see ISR [text] 181

Interrupt transfer [text] 1352, 1354

InterruptLine

PCI_COMMON_CONFIG [text] 1598, 1601

InterruptPin

PCI_COMMON_CONFIG [text] 1596, 1601

IntToPtr [text] 1330, 1331

INVALID_HANDLE_VALUE [text] 50

CreateIoCompletionPort [text] 76

example [text] 404

IO_ALLOCATION_ACTION [text] 791, 793-1546

IO_CD_ROM_INCREMENT [text] 357

IO_CSQ [text] 1608

example [text] 1613-1615, 1621, 1622

IO_DISK_INCREMENT [text] 357

IO_ERROR_LOG_ENTRY

.DumpDataSize [text] 1088

.ErrorCode [text] 1088

.FinalStatus [text] 1088

.IoControlCode [text] 1088

.MajorFunctionCode [text] 1088

.RetryCount [text] 1088

.SequenceNumber [text] 1088

.UniqueErrorValue [text] 1088

IO_ERROR_LOG_PACKET [text] 1081, 1084-1087

.DeviceOffset [text] 1086

.DumpData [text] 1086

.DumpDataSize [text] 1085

.ErrorCode [text] 1086

.EventCategory [text] 1085

.FinalStatus [text] 1086

.IoControlCode [text] 1086

.MajorFunctionCode [text] 1085

.NumberOfStrings [text] 1085

.RetryCount [text] 1085

.SequenceNumber [text] 1086

.StringOffset [text] 1085

.UniqueErrorValue [text] 1086

size [text] 1082

IO_KEYBOARD_INCREMENT [text] 357

IO_MAILSLOT_INCREMENT [text] 357

IO_MOUSE_INCREMENT [text] 357

IO_NAMED_PIPE_INCREMENT [text] 357

IO_NETWORK_INCREMENT [text] 357

IO_NO_INCREMENT [text] 354, 357-359

example [text] 400

IO_PARALLEL_INCREMENT [text] 357

IO_SERIAL_INCREMENT [text] 357

IO_SOUND_INCREMENT [text] 357

IO_STACK_LOCATION [text] 690

.DeviceObject [text] 691

.FileObject [text] 691

.MajorFunction [text] 690, 718

.MinorFunction [text] 690, 1201

example [text] 1193

.Parameters [text] 690

.Create [text] 692

.EaLength [text] 692

.FileAttributes [text] 692

.Options [text] 692

.SecurityContext [text] 692

.ShareAccess [text] 692

.DeviceIoControl [text] 695

.InputBufferLength [text] 695

.IoControlCode [text] 695, 1107

.OutputBufferLength [text] 695

.Type3InputBuffer [text] 695

.Others

.Argument1 [text] 1439, 1440, 1443

.Power [text] 1168

.State [text] 1222, 1224

.DeviceState [text] 1224

.SystemState [text] 1223

.Type [text] 1222

.Read [text] 693

.ByteOffset [text] 693

.Key [text] 693

.Length [text] 693

.StartDevice

.AllocatedResources [text] 1198

.AllocatedResourcesTranslated [text] 761

.AllocatedResourceTranslated [text] 1198

.Write [text] 694

.ByteOffset [text] 694

.Key [text] 694

.Length [text] 643, 694

.Parameters.DeviceIoControl.Type3InputBuffer [text] 672

.Read

.Length [text] 637

example [text] 569-574, 577-1615

IoSkipCurrentIrpStackLocation

example [text] 1203, 1205-1207

IO_STATUS_BLOCK [text] 685, 686

.Information [text] 359, 634, 635

example [text] 400, 401

values [text] 365

.Status [text] 359, 360, 362

example [text] 400, 401

user-defined [text] 362

example [text] 1442

IO_VIDEO_INCREMENT [text] 357

IO_WORKITEM [text] 995

IoAcquireCancelSpinLock [text] 742, 748

IoAllocateAdapterChannel [text] 1544, 1545

illustrated [text] 1555, 1561

IoAllocateController [text] 788, 790

IoAllocateErrorLogEntry [text] 1080, 1081, 1087

size [text] 1082

IoAllocateIrp [text] 1109

illustrated [text] 1137-1139

IoAllocateMdl [text] 816, 824

IoAllocateWorkItem [text] 994, 995

IoAttachDevice [text] 1113, 1118

illustrated [text] 1119-1122

IoAttachDeviceToDeviceStack [text] 1123, 1185

IoBuildAsynchronousFsdRequest [text] 1110

IoBuildDeviceIoControlRequest [text] 1109

example [text] 1443

IoBuildPartialMdl [text] 816, 823-1447

IoBuildSynchronousFsdRequest [text] 1110

IoCallDriver [text] 687, 1105-1447

illustrated [text] 1119-1122, 1136-1139

PoCallDriver [text] 1211

USBD [text] 1446

IoCompleteRequest [text] 353, 354, 638-1134

DPC [text] 782

example [text] 400, 401, 576-1622

illustrated [text] 894-896, 1136-1561

interrupt scope [text] 772

priority boost [text] 354, 356-359

required [text] 1126

IoConnectInterrupt [text] 766-769, 1195

IRP_MN_START_DEVICE [text] 1195

preconditions [text] 769

IoControlCode

IO_STACK_LOCATION.Parameters.DeviceIoControl [text] 695

IoCopyCurrentIrpStackLocationToNext [text] 696, 1217

example [text] 1196

IoCreateController [text] 788, 789

IoCreateDevice [text] 348-350

AddDevice [text] 1177

device extension [text] 346

DeviceCharacteristics [text] 351

DeviceExtensionSize [text] 349

DeviceName [text] 350

DeviceType [text] 350

DriverObject [text] 349

example [text] 328, 397

Exclusive [text] 351

illustrated [text] 778

IoCreateSymbolicLink

example [text] 330, 398

IoCsqInitialize [text] 1610, 1611, 1620

IoCsqInsertIrp [text] 1607, 1608

IoCsqRemoveIrp [text] 1607

IoCsqRemoveNextIrp [text] 1607, 1608

IOCTL

IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1439, 1440, 1443

IOCTL code [text] 652

illustrated [text] 653

IOCTL_HELLO_INITIALIZE [lab] 45

LAB2_IOCTL_HELLO_INITIALIZE [lab] 55

IOCTL_HELLO_READ [lab] 45

LAB2_IOCTL_HELLO_READ [lab] 55

IOCTL_HELLO_WRITE [lab] 45

LAB2_IOCTL_HELLO_WRITE [lab] 55

IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1439, 1440, 1443

IOCTL_LAB_HELLO_READ [lab] 52, 56

IOCTL_LAB_HELLO_WRITE [lab] 53, 56

IOCTL_LAB_INITIALIZE [lab] 56, 59

IoDeleteDevice

example [text] 330, 334-402

IRP_MN_REMOVE_DEVICE [text] 1209

IoDeleteSymbolicLink [text] 334

example [text] 402

IoDetachDevice

IRP_MN_REMOVE_DEVICE [text] 1209

IoFlushAdapterBuffers [text] 1563, 1566

illustrated [text] 1559, 1560, 1564

IoFreeAdapterChannel [text] 1549

illustrated [text] 1559-1561

IoFreeController [text] 792, 795-1548

IoFreeIrp [text] 1132

IoFreeMdl [text] 823

IoFreeWorkItem [text] 994, 995

IoGetCurrentIrpStackLocation [text] 696, 1617

example [text] 570, 585-661

IoGetDeviceInterfaceAlias [text] 555

IoGetDeviceInterfaces [text] 555

IoGetDeviceObjectPointer [text] 1105, 1123

IoGetDmaAdapter [text] 877

IoGetNextIrpStackLocation [text] 696, 697, 1107

IoInitializeDpcRequest [text] 774

illustrated [text] 778

IoInitializeTimer

Lab4 [lab] 79

IoIs32BitProcess [text] 1337

IoIs32bitProcess [text] 1336, 1339, 1340

IoMakeAssociatedIrp [text] 1111

IoMapTransfer [text] 801, 1550, 1551

illustrated [text] 1556

IoMarkIrpPending [text] 353, 704-1139

example [text] 637, 644-661

illustrated [text] 889, 1554

IRP.PendingReturned [text] 1200

IoOpenDeviceInterfaceRegistryKey [text] 555

IoQueueWorkItem [text] 994, 995

IoRegisterDeviceInterface [text] 555, 556

IoRegisterShutdownNotification [text] 1274

IoReleaseCancelSpinLock [text] 745-748

IoRequestDpc [text] 613, 771-776

illustrated [text] 893, 1558

IoSetCancelRoutine [text] 742, 748

cancel-safe queue [text] 1621

IoSetCompletionRoutine [text] 1107, 1128-1196

illustrated [text] 1137-1139

power [text] 1225

IoSetDeviceInterfaceState [text] 555, 556

USB [text] 1446

IoSkipCurrentIrpStackLocation [text] 696

example [text] 1203, 1205-1207

IoStartNextPacket [text] 705, 717

DPC [text] 782

illustrated [text] 894-896, 1559-1561

IoStartPacket [text] 704, 705, 713-717

illustrated [text] 889, 896-1561

IoStartTimer [text] 931, 932

Lab4 [lab] 79

IoStatus

see IO_STATUS_BLOCK [text] 360

IOSTATUS_BLOCK

.Status [text] 363

IoStopTimer [text] 932, 933

IoTimer [text] 928-931, 938

IO_TIMER_ROUTINE [text] 931

IoInitializeTimer [text] 929, 930

IoStartTimer [text] 932

IoStopTimer [text] 932, 933

Lab4 [lab] 77-79

resolution [text] 936

IoWriteErrorLogEntry [text] 1088

IoWriteLogErrorEntry [text] 1080

Io… [text] 176

IRP [text] 676-679

.AssociatedIrp [text] 685, 1124

.SystemBuffer [text] 637

.AssociatedIrp.IrpCount [text] 1124

.AssociatedIrp.MasterIrp [text] 1124

.AssociatedIrp.SystemBuffer [text] 686, 1124

example [text] 643

.Cancel [text] 685, 749

.CancelIrql [text] 685

example [text] 745, 746

.CancelRoutine [text] 685

.DeviceQueueEntry [text] 685

.IoStatus [text] 685

.IoStatus.Information [text] 686

.IoStatus.Status [text] 686

.ListEntry [text] 685

.MasterIrp [text] 685

.MdlAddress [text] 685, 686

example [text] 661, 662

.PendingReturned [text] 685, 686, 1200

.StackSize [text] 1108

.SystemBuffer [text] 634, 635, 685

.Tail.Overlay

.ListEntry [text] 729, 1613-1617

illustrated [text] 732

.UserBuffer [text] 634, 635, 685, 686

Neither I/O [text] 673

associated [text] 1104

cancel [text] 736-738

complete [lab] 44

completing [lab] 66, 75, [text] 1126

creating [text] 680

creation [text] 170

deallocation [text] 1112

defined [text] 63

freeing [text] 682

interrupt scope [text] 772

IoAllocateIrp [text] 1109

IoBuildAsynchronousFsdRequest [text] 1110

IoBuildDeviceIoControlRequest [text] 1109

IoBuildSynchronousFsdRequest [text] 1110

IoCompleteRequest [text] 353, 354, 359-681

DPC [text] 782

example [text] 400, 401, 576-663

illustrated [text] 894-896, 1559-1561

IoFreeIrp [text] 1132

IoGetCurrentIrpStackLocation [text] 1617

example [text] 637, 643-661

IoGetNextIrpStackLocation [text] 1107

IoIs32bitProcess [text] 1339, 1340

IoMarkIrpPending [text] 353, 704

example [text] 644, 661

illustrated [text] 889, 1554

IoSetCompetionRoutine [text] 1196

IoStartPacket

illustrated [text] 889, 1554

IRP_MJ_CLEANUP [text] 65

IRP_MJ_CLOSE [text] 65

IRP_MJ_CREATE [text] 65

IRP_MJ_CREATE_MAILSLOT [text] 65

IRP_MJ_CREATE_NAMED_PIPE [text] 65

IRP_MJ_DEVICE_CHANGE [text] 65

IRP_MJ_DEVICE_CONTROL [text] 65

IRP_MJ_DIRECTORY_CONTROL [text] 65

IRP_MJ_FILE_SYSTEM_CONTROL [text] 65

IRP_MJ_FLUSH_BUFFERS [text] 65

IRP_MJ_INTERNAL_DEVICE_CONTROL [text] 65

IRP_MJ_LOCK_CONTROL [text] 65

IRP_MJ_PNP [text] 65, 333

IRP_MJ_POWER [text] 65

IRP_MJ_QUERY_EA [text] 65

IRP_MJ_QUERY_INFORMATION [text] 65

IRP_MJ_QUERY_QUOTA [text] 65

IRP_MJ_QUERY_SECURITY [text] 65

IRP_MJ_QUERY_VOLUME_INFORMATION [text] 65

IRP_MJ_READ [text] 65

IRP_MJ_SET_EA [text] 65

IRP_MJ_SET_INFORMATION [text] 65

IRP_MJ_SET_QUOTA [text] 65

IRP_MJ_SET_SECURITY [text] 65

IRP_MJ_SHUTDOWN [text] 65

IRP_MJ_SYSTEM_CONTROL [text] 65

IRP_SET_VOLUME_INFORMATION [text] 65

list [text] 729

illustrated [text] 724, 730, 731

pass-through [text] 1172, 1173

processing [text] 683

processing flow [text] 340

queue [text] 702

illustrated [text] 724, 730, 731

none [text] 703

reference count [text] 1182, 1183

decrementer [text] 1188

incrementer [text] 1187

reuse [text] 1106, 1107

role in driver [text] 64

structure [text] 684, 685

types [text] 64

Irp [text] 1217, 1217

IRP ordering [text] 701

IRP processing [text] 707-709

IRP stack [text] 687, 696

.Parameters

.DeviceIoControl

.Type3InputBuffer [text] 672

.Parameters.Read.Length [text] 637

.Parameters.Write.Length [text] 643

call usage verifier [text] 516

CreateFile [text] 692

DeviceIoControl [text] 695

illustrated [text] 689

IO_STACK_LOCATION [text] 690, 691

example [text] 661

IO_STACK_LOCATION.Parameters.Power [text] 1168

IoCopyCurrentIrpStackLocationToNext [text] 696

example [text] 1196

IoGetCurrentIrpStackLocation [text] 637, 696

example [text] 570, 585-643

IoGetNextIrpStackLocation [text] 696, 697

IoSkipCurrentIrpStackLocation [text] 696

example [text] 1203, 1205-1207

IRP.StackSize [text] 1108

PIO_STACK_LOCATION

example [text] 661

ReadFile [text] 693

usage [text] 688

WriteFile [text] 694

IRP_MJ_* [text] 63

dispatch routines [text] 337

handler [text] 340

IRP_MJ_CLEANUP [text] 65, 321-338

IRP_MJ_CLOSE [text] 65, 321-338

IRP_MJ_CREATE [text] 65, 321-338

IRP_MJ_CREATE_MAILSLOT [text] 65

IRP_MJ_CREATE_NAMED_PIPE [text] 65

IRP_MJ_DEVICE_CHANGE [text] 65

IRP_MJ_DEVICE_CONTROL [text] 65, 338

IRP_MJ_DIRECTORY_CONTROL [text] 65

IRP_MJ_FILE_SYSTEM_CONTROL [text] 65

IRP_MJ_FLUSH_BUFFERS [text] 65

IRP_MJ_INTERNAL_DEVICE_CONTROL [text] 65, 338, 339

IRP_MJ_LOCK_CONTROL [text] 65

IRP_MJ_PNP [text] 65, 321-338

IRP_MJ_POWER [text] 65, 338

IRP_MJ_QUERY_EA [text] 65

IRP_MJ_QUERY_INFORMATION [text] 65

IRP_MJ_QUERY_QUOTA [text] 65

IRP_MJ_QUERY_SECURITY [text] 65

IRP_MJ_QUERY_VOLUME_INFORMATION [text] 65

IRP_MJ_READ [text] 65, 338

IRP_MJ_SET_EA [text] 65

IRP_MJ_SET_INFORMATION [text] 65

IRP_MJ_SET_QUOTA [text] 65

IRP_MJ_SET_SECURITY [text] 65

IRP_MJ_SHUTDOWN [text] 65

IRP_MJ_SYSTEM_CONTROL [text] 65, 338

IRP_MJ_WRITE [text] 65, 338

IRP_SET_VOLUME_INFORMATION [text] 65

IRP_MJ_CLEANUP [text] 65, 321-338

example

w/FsContext [text] 583-585

handler [text] 173, 174

MajorFunction [text] 1175

IRP_MJ_CLOSE [text] 65, 321-338

handler [text] 173, 174, 401

interrupt scope [text] 772

Lab2 [lab] 70

MajorFunction [text] 1175

IRP_MJ_CREATE [text] 65, 321-338

example

w/FsContext [text] 569-576

File Object [text] 565

FILE_OBJECT [text] 564

FILEOBJECT.FsContext [text] 568

handler [text] 173, 174, 400

interrupt scope [text] 772

Lab2 [lab] 70

MajorFunction [text] 1175

IRP_MJ_CREATE_MAILSLOT [text] 65

IRP_MJ_CREATE_NAMED_PIPE [text] 65

IRP_MJ_DEVICE_CHANGE [text] 65

IRP_MJ_DEVICE_CONTROL [text] 65, 338

IoBuildDeviceIoControlRequest [text] 1109

IRP_MN_QUERY_ALL_DATA [text] 1520

IRP_MN_QUERY_SINGLE_INSTANCE [text] 1520

Lab2 [lab] 70

Lab3 [lab] 74

IRP_MJ_DIRECTORY_CONTROL [text] 65

IRP_MJ_FILE_SYSTEM_CONTROL [text] 65

IRP_MJ_FLUSH_BUFFERS [text] 65

IoBuildAsynchronousFsdRequest [text] 1110

IoBuildSynchronousFsdRequest [text] 1110

IRP_MJ_INTERNAL_DEVICE_CONTROL [text] 65, 338-1107

IoBuildDeviceIoControlRequest [text] 1109

IRP_MJ_LOCK_CONTROL [text] 65

IRP_MJ_MAXIMUM_FUNCTION [text] 1172

IRP_MJ_PNP [text] 65, 312-1216

blocking [text] 1180

handler [text] 174, 1191-1196

IRP_MN_CANCEL_REMOVE_DEVICE [text] 1194

completion [text] 1201

IRP_MN_CANCEL_STOP_DEVICE [text] 1194

completion [text] 1201

IRP_MN_EJECT [text] 1194

IRP_MN_QUERY_POWER [text] 1215

IRP_MN_QUERY_REMOVE_DEVICE [text] 1194

IRP_MN_QUERY_STOP_DEVICE [text] 1194, 1202-1205

IRP_MN_REMOVE_DEVICE [text] 313, 333-1209

IRP_MN_SET_POWER [text] 1223

IRP_MN_START

simulator [lab] 71

IRP_MN_START_DEVICE [text] 256, 312-1197

completion [text] 1201

illustrated [text] 778

interrupt scope [text] 772

USB [text] 1446

IRP_MN_STOP_DEVICE [text] 320, 321, 333-1207

interrupt scope [text] 772

IRP_MN_SURPRISE_REMOVAL [text] 1194

MajorFunction [text] 1174

unplug notification [text] 1361

IRP_MJ_POWER [text] 65, 313-1212

blocking forbidden [text] 1181

documentation lies [text] 1210

example [text] 1214

handler [text] 174, 1213-1225

IRP_MN_POWER_SEQUENCE [text] 1167, 1214

IRP_MN_QUERY_POWER [text] 1167

handler [text] 1218

IRP_MN_SET_POWER [text] 1167, 1221, 1222

IRP_MN_WAIT_WAKE [text] 1167, 1214

MajorFunction [text] 1174

IRP_MJ_QUERY_EA [text] 65

IRP_MJ_QUERY_INFORMATION [text] 65

IRP_MJ_QUERY_QUOTA [text] 65

IRP_MJ_QUERY_SECURITY [text] 65

IRP_MJ_QUERY_VOLUME_INFORMATION [text] 65

IRP_MJ_READ [text] 65, 338

buffered [text] 634

example [text] 637

example

w/FsContext [text] 577-582

handler [text] 173, 174

IoBuildAsynchronousFsdRequest [text] 1110

IoBuildSynchronousFsdRequest [text] 1110

USB [text] 1447

IRP_MJ_SET_EA [text] 65

IRP_MJ_SET_INFORMATION [text] 65

IRP_MJ_SET_QUOTA [text] 65

IRP_MJ_SET_SECURITY [text] 65

IRP_MJ_SET_VOLUME_INFORMATION [text] 65

IRP_MJ_SHUTDOWN [text] 65, 1273, 1274

IoBuildAsynchronousFsdRequest [text] 1110

IoBuildSynchronousFsdRequest [text] 1110

MajorFunction [text] 1175

IRP_MJ_SYSTEM_CONTROL [text] 65, 338-1514

IRP_MJ_WRITE [text] 65, 338

buffered [text] 635

handler [text] 173, 174

IoBuildAsynchronousFsdRequest [text] 1110

IoBuildSynchronousFsdRequest [text] 1110

USB [text] 1447

IRP_MN_* [text] 1192

decode [text] 1193

IRP_MN_REMOVE_DEVICE [text] 313, 320-333

IRP_MN_SET_POWER [text] 313

IRP_MN_START [text] 312

IRP_MN_START_DEVICE [text] 313, 320, 321

IRP_MN_STOP_DEVICE [text] 320, 321, 333

IRP_MN_CANCEL_REMOVE_DEVICE [text] 1194

completion [text] 1201

IRP_MN_CANCEL_STOP_DEVICE [text] 1194

completion [text] 1201

IRP_MN_EJECT [text] 1194

IRP_MN_POWER_SEQUENCE [text] 1167, 1214

IRP_MN_QUERY_ALL_DATA [text] 1520

IRP_MN_QUERY_POWER [text] 1167, 1215

handler [text] 1218

IRP_MN_QUERY_REMOVE_DEVICE [text] 1194

IRP_MN_QUERY_SINGLE_INSTANCE [text] 1520

IRP_MN_QUERY_STOP_DEVICE [text] 1194, 1202-1205

IRP_MN_REMOVE_DEVICE [text] 313, 320-1209

IRP_MN_SET_POWER [text] 313, 1167-1222

IRP_MN_SET_POWER *PHRASE=IRP_MJ_PNP

IRP_MN_SET_POWER [text] 1215

IRP_MN_START

simulator [lab] 71

IRP_MN_START_DEVICE [text] 256, 313-1197

completion [text] 1201

illustrated [text] 778

interrupt scope [text] 772

USB [text] 1446

IRP_MN_STOP_DEVICE [text] 320, 321, 333-1207

interrupt [text] 1206

interrupt scope [text] 772

IRP_MN_SURPRISE_REMOVAL [text] 1194

IRP_MN_WAIT_WAKE [text] 1167, 1214

IrpCount

IRP [text] 1124

IRPs [text] 1184

IRQL

driver verifier [text] 492

elevated

unbounded [text] 43

memory use [text] 490

pageable driver [text] 1537

IRQL_NOT_LESS_OR_EQUAL [text] 474, 475, 477, 478

ISA bus [text] 245

ISA System Architecture [text] 1625

IsListEmpty [text] 733

Isochronous

_URB_ISOCH_TRANSFER [text] 1409

URB_FUNCTION_ISOCH_TRANSFER [text] 1409

Isochronous I/O

_URB_ISOCH_TRANSFER [text] 1392

Isochronous transfer [text] 1352, 1356

ISR [text] 173, 174, 181-757

algorithm [text] 770, 771

check device interrupt [text] 203

connected [text] 758, 759

connecting [text] 760, 761, 766-769

connection [text] 763

context [text] 630

illustrated [text] 340, 683-1558

IoConnectInterrupt [text] 766

KeSynchronizeExecution [text] 608-613

KiInterruptDispatch [text] 754, 755

MDL [text] 799

pageable driver [text] 1537

preconditions [text] 769

process map [text] 166, 167

prototype [text] 766

spin lock [text] 755, 759-765

illustrated [text] 754

J

Joseph [text] 191, 1184-1217

K

KAFFINITY [text] 759

Kbdhid

FDO [text] 1480, 1485

Kd_IHVAUDIO_Mask [text] 378

Kd_IHVVIDEO_Mask [text] 378

KDPC [text] 777

KdPrint [text] 374

%ls [text] 374

buffer limit [text] 382

example [text] 395, 398-402

sample output [lab] 37

KdPrintEx [text] 375

%ls [text] 374

buffer limit [text] 382

ComponentId [text] 376

Level [text] 377, 379

KeAcquireInStackQueuedSpinLock [text] 603, 604, 613

KeAcquireInStackQueuedSpinLockAtDpcLevel [text] 603

KeAcquireSpinLock [text] 598, 613

cancel-safe queue [text] 1612

KeAcquireSpinLockAtDpcLevel [text] 601

KeCancelTimer [text] 935

KeDelayExecutionThread [text] 926, 927

KeepObject [text] 791, 793-1548

KeFlushIoBuffers [text] 897, 898, 900-1565

illustrated [text] 890, 899-1564

KeInitializeDpc [text] 941

Lab4 [lab] 80

KeInitializeEvent [text] 1011, 1184-1196

example [text] 1442

KeInitializeMutex [text] 1009

KeInitializeSemaphore [text] 1007

KeInitializeSpinLock [text] 596, 603

KeInitializeTimer [text] 935, 940, 941

Lab4 [lab] 80

KeInitializeTimerEx [text] 935, 942

KeQueryPerformanceCounter [text] 945-948

KeQuerySystemTime [text] 949

KeQueryTickCount [text] 949

KeQueryTimeIncrement [text] 949

KeReadStateTimer [text] 935

KeReleaseInStackQueuedSpinLock [text] 603, 604, 613

KeReleaseInStackQueuedSpinLockAtDpcLevel [text] 603

KeReleaseMutex [text] 1009

KeReleaseSemaphore [text] 1007

KeReleaseSpinLock [text] 600, 613

cancel-safe queue [text] 1612

KeReleaseSpinLockAtDpcLevel [text] 601

KeResetEvent [text] 1012

Kernel

mode [text] 154

entering [text] 155

services [text] 175, 176

Kernel memory map

illustrated [text] 808, 809, 813

Kernel spew [text] 371

Kernel symbols [text] 448, 449

KeSetBasePriorityThread [text] 996, 997, 1001

KeSetEvent [text] 1012

KeSetPriorityThread [text] 996, 997, 1000

KeSetTimer [text] 935, 943

Lab4 [lab] 80

KeSetTimerEx [text] 935, 943

KeStallExecutionProcessor [text] 924, 925

KeSynchronizeExecution [text] 599, 608-1003

illustrated [text] 891, 892, 896-1561

IRQL checking [text] 492

SyncCritSect [text] 183

KEVENT [text] 1011

example [text] 1442

KeInitializeEvent [text] 1196

KeWaitForSingleObject [text] 1109, 1110

on stack [text] 1195, 1196, 1199, 1200

KeWaitForMultipleObjects [text] 1020

timer [text] 939

KeWaitForSingleObject [text] 1020, 1109-1444

example [text] 1197, 1204-1209

timer [text] 939

Key

IO_STACK_LOCATION.Parameters.Read [text] 693

IO_STACK_LOCATION.Parameters.Write [text] 694

Keyboard

DirectX [text] 1496

driver [text] 113

HID [text] 1479-1481, 1485

Kbdhid [text] 1480, 1485

Ke… [text] 176

KFAST_MUTEX [text] 1013

KFLOATING_SAVE [text] 1325

KiInterruptDispatch [text] 754, 755

KINTERRUPT [text] 766-769

KLOCK_QUEUE_HANDLE [text] 604

KMODE_EXCEPTION_NOT_HANDLED [text] 465-467

KMUTEX [text] 1009

KPROCESSOR_MODE [text] 820, 927

KSEMAPHORE [text] 1007

KSPIN_LOCK [text] 596, 603-759

KTIMER [text] 940

KeInitializeTimer [text] 940

Lab4 [lab] 77, 80

L

L"…" [text] 324

L1 cache [text] 229, 231

illustrated [text] 221, 226-236

L2 cache [text] 229, 231

illustrated [text] 190, 221-236

L2 cache. illustrated [text] 235

Lab [lab] 72

Lab 1

hellobug1 [lab] 38

overview [lab] 27

Lab1

hellobug1 [lab] 28

hellobug2 [lab] 28, 38

Lab1HelloWorld [lab] 27

Lab2 [lab] 46

CloseHandle [lab] 51

CreateFile [lab] 51

DeviceIoControl [lab] 51-53

test.exe [lab] 57

Lab3

interrupts [lab] 73

Language

mc [text] 1051

LARGE_INTEGER

alignment [text] 1325

Latency

thread [text] 1028

LatencyTImer

PCI_COMMON_CONFIG [text] 1600

LatencyTimer

PCI_COMMON_CONFIG [text] 1597

Layered driver [text] 129, 130, 132-1151

completion routine [text] 1103, 1130

debugging [text] 972

filter [text] 1113-1115

illustrated [text] 1136, 1152

interrupt [text] 753

IoAttachDevice [text] 1118

IoAttachDeviceToDeviceStack [text] 1123

IoCallDriver [text] 687, 1105-1447

illustrated [text] 1119-1122, 1137-1139

IoCompleteRequest [text] 1126

IoGetNextIrpStackLocation [text] 1107

IoSetCompletionRoutine [text] 1107, 1128-1135

illustrated [text] 1137-1139

IRP reuse [text] 1106, 1107

new IRP [text] 1108, 1111, 1112

PoCallDriver [text] 1164, 1211

STATUS_PENDING [text] 1133

STATUS_SUCCESS [text] 1136

structure [text] 1149

lea [text] 277

Legacy

serial port [text] 481, 482

Legacy driver

comparison [text] 1142, 1143

events [text] 309

installing [text] 450

Length

cable (USB) [text] 1383, 1384

IO_STACK_LOCATION.Parameters.Read [text] 693

IO_STACK_LOCATION.Parameters.Write [text] 694

Level

DbgPrintEx [text] 379

KdPrintEx [text] 379

Level-triggered interrupt [text] 201, 203

illustrated [text] 202, 204

LFENCE [text] 304

lint

PREfast [text] 507-509

List

ExInterlockedInsertHeadList [text] 728, 733

ExInterlockedInsertTailList [text] 728, 733

ExInterlockedRemoveHeadList [text] 728, 729, 733

illustrated [text] 732

InitializeListHead [text] 725, 733

InsertHeadList [text] 733

InsertTailList [text] 733

cancel-safe [text] 1613

IRP

illustrated [text] 730, 731

IRP.Tail.Overlay

.DeviceQueueEntry [text] 685

.ListEntry [text] 685

IsListEmpty [text] 733

LIST_ENTRY [text] 725, 729

illustrated [text] 724, 730, 731

RemoveEntryList [text] 733

cancel-safe [text] 1614

RemoveHeadList [text] 733

RemoveTailList [text] 733

Tail.Overlay

.ListEntry

illustrated [text] 732

LIST_ENTRY [text] 725, 729

illustrated [text] 724, 730, 731

Local variables

ebp [text] 270

stack [text] 269

lock

prefix [text] 282-290, 294-303

LOCK_OPERATION [text] 820

LockFileEx [text] 79

LogEvents [text] 457

HKLM\...\Parameters [text] 452

Logical analyzer [text] 958, 959

LONG

FILE_LONG_ALIGNMENT [text] 343

long

LONG32 [text] 1327

LONG64 [text] 1327

LONG32 [text] 1327

LONG64 [text] 1327

LONG_PTR [text] 1328

longjmp [text] 1235

LongToHandle [text] 1330

LongToPtr [text] 1330, 1331

Lookaside list [text] 914, 915

ExAllocateFromNPagedLookasideList [text] 917

ExDeleteNPagedLookasideList [text] 919

ExFreeToNPagedLookasideList [text] 918

ExInitializeNPagedLookasideList [text] 915

NPAGED_LOOKASIDE_LIST [text] 915

POOL_RAISE_IF_ALLOCATION_FAILURE [text] 916

Low resource simulation [text] 493

Low speed

cable length [text] 1383

HID [text] 1454, 1458

endpoints [text] 1460

USB [text] 1349, 1351-1354

Low-level driver [text] 99, 130-1149

Lower [text] 1185

M

Mailing lists [text] 1628

Mailslot

IRP_MJ_CREATE_MAILSLOT [text] 65

MajorFunciton

DRIVER_OBJECT [text] 311, 312

MajorFunction

example [text] 327

handler [text] 336

handlers [text] 322, 337

map

WinDbg [lab] 9

Map file [lab] 8

_NT_KD_FILES [lab] 10, 11

format [lab] 9

illustrated [lab] 20

Map registers [text] 849

DMA_OPERATIONS.FreeMapRegisters [text] 871, 873

mapfile.ini [lab] 10, 11

MAPI [text] 172

Mapped memory I/O [text] 209, 211

MapTransfer [text] 801

DMA_OPERATIONS [text] 871, 873-883

illustrated [text] 891

Marginal design [text] 956

Mason, W. Anthony [text] 1624

Master

DEVICE_DESCRIPTION [text] 854

MasterIrp

IRP [text] 685, 1124

Maximum concurrency value [text] 75

MaximumLatency

PCI_COMMON_CONFIG [text] 1596, 1601

maxmem

BOOT.INI [text] 445

mc

+1 [text] 1052

custom job step [text] 1072

increment [text] 1052

input [text] 1051

Language [text] 1051

message compiler [text] 1050

MessageId [text] 1051

output [text] 1058, 1059

Severity [text] 1051

SymbolicName [text] 1051

MDI [text] 1285, 1286

MDL [text] 800

.ByteCount

illustrated [text] 813

.ByteOffset

illustrated [text] 813

.MappedSystemVa

illustrated [text] 813

.StartVa

illustrated [text] 813

creation [text] 816

driver [text] 812

I/O Manager [text] 812

Direct I/O [text] 819

direct I/O [text] 659

DMA_OPERATIONS.MapTransfer [text] 883

DPC [text] 799

illustrated [text] 802-811, 813

IoAllocateMdl [text] 816, 824

IoBuildPartialMdl [text] 825, 1447

IoMapTransfer [text] 1551

IRP.MdlAddress [text] 685, 686

example [text] 661, 662

ISR [text] 799

MmGetMdlByteCount [text] 815

MmGetMdlByteCount *PHRASE=MmGetMdlByteOffset [text] 827

MmGetMdlByteOffset [text] 815, 827

MmGetMdlSze [text] 814

MmGetSystemAddressForMdl [text] 659, 826

MmGetSystemAddressForMdlSafe [text] 659, 814-826

example [text] 661, 662

illustrated [text] 808

MmInitializeMdl [text] 817

MmIsAddressValid [text] 826

MmPrepareMdlForReuse [text] 817

MmProbeAndLockPages [text] 801, 815-821

illustrated [text] 807

MmSizeOfMdl [text] 827

Neither I/O [text] 670

opaque data type [text] 814

partial [text] 816, 822-824

rationale [text] 799

usage [text] 630, 632

using [text] 801

MdlAddress

example [text] 661, 662

IRP [text] 685, 686

Memory [text] 191

bus relative [text] 253

HalTranslateBusAddress [text] 254-256

mapped [text] 32

paged [text] 32

special memory pool [text] 491

system relative [text] 253

HalTranslateBusAddress [text] 254-256

virtual [text] 32

Memory allocation

ExAllocatePool [text] 907, 1221

example [text] 572

ExAllocatePoolWithTag [text] 911

ExFreePool [text] 574, 913

example [text] 585, 1226

ExFreePoolWithTag [text] 913

Memory bus

illustrated [text] 188

Memory Descriptor List

see MDL [text] 800

Memory fence [text] 304

Memory map

32-bit [text] 156, 157

64-bit [text] 158

illustrated [text] 156-158, 803-813

Memory pool tracking [text] 494

MessageId

mc [text] 1051

MESSAGETABLE [text] 362, 1050-1059

%n [text] 1065-1068

examining [text] 1062

illustrated [text] 1037

usage [text] 1064

METHOD_BUFFERED [text] 652, 653

METHOD_IN_DIRECT [text] 652, 653, 660

METHOD_NEITHER [text] 652, 653

METHOD_OUT_DIRECT [text] 660

METHOD_OUT_DIRECT *PHRASE=CTL_CODE

METHOD_OUT_DIRECT [text] 652, 653

MFC [text] 1277-1280, 1282

adding controls [text] 1297-1300

Afx [text] 1281

AppWizard [text] 1284, 1285

illustrated [text] 1290-1296

CButton [text] 1283

CDialog [text] 1283

CFrameWnd [text] 1283

classes [text] 1283

ClassWizard [text] 1289, 1302, 1303

illustrated [text] 1304-1314, 1317

CScrollView [text] 1283

CView [text] 1283

dialog-based app [text] 1287

efficiency [text] 1316

illustrated [text] 1288

MDI [text] 1286

SDI [text] 1286

MFC framework [text] 1301

illustrated [text] 1315

MFENCE [text] 304

Microseconds

KeStallExecutionProcessor [text] 925

Microsoft

symbol server [lab] 11

microsoft.public

ddk.win2000

acpi [text] 1626

bus.technologies [text] 1626

comm [text] 1626

debugging [text] 1626

display [text] 1626

general [text] 1626

input [text] 1626

modem [text] 1626

multimedia [text] 1626

network [text] 1626

printer.video [text] 1626

printers [text] 1626

setup [text] 1626

storage [text] 1626

development.device.drivers [text] 1626

win2000

hardware [text] 1626

win32.programmer

kernel [text] 1626

MIMD [text] 26

Minidriver [text] 1151

illustrated [text] 1153

Minidump [text] 470

crash dump analysis [text] 473

selecting [text] 472

MinimumGrant

PCI_COMMON_CONFIG [text] 1596, 1601

Miniport

display [text] 119

illustrated [text] 116

driver [text] 99-102, 132

illustrated [text] 103

Hidgame [text] 1480, 1485

Hidusb [text] 1480, 1485

NDIS

illustrated [text] 111, 112

SCSI [text] 125-128

illustrated [text] 123, 124

MM_LOWEST_SYSTEM_ADDRESS [text] 1324

MmGetMdlByteCount [text] 815, 827

MmGetMdlByteOffset [text] 815

MmGetMdlSize [text] 814

MmGetSystemAddressForMdl [text] 659, 826

MmGetSystemAddressForMdlSafe [text] 659, 818-826

example [text] 661, 662

illustrated [text] 808

MmGetSystemAddressForMldSafe [text] 814

MmInitializeMdl [text] 817

MmIsAddressValid [text] 826

MmLockPagableCodeSection [text] 1531, 1532

MmLockPagableDataSection [text] 1531

MmLockPagableSectionsByHandle [text] 1532

MmPageEntireDriver [text] 1536

MmPrepareMdlForReuse [text] 817

MmProbeAndLockPages [text] 801, 815-1244

illustrated [text] 807

MmResetDriverPaging [text] 1536

MmSizeOfMdl [text] 827

MmUnlockPagableImageSection [text] 1532

Mm… [text] 176

Mode

kernel [text] 154

user [text] 154

mof

compiler [text] 1520

illustrated [text] 1521

mofcomp [text] 1520

MSWmi_MofData_GUID [text] 1520

wmicore.mof [text] 1517

Monolithic driver [text] 131, 132, 172

IRP stack [text] 688

Mouclass

HID [text] 1480, 1485

Mouhid

FDO [text] 1480, 1485

Mouse

DirectX [text] 1496

driver [text] 113

HID [text] 1479-1481, 1485

Mouhid [text] 1480, 1485

Sermouse [text] 1480, 1485

mov [text] 267, 280

MSC_WARNING_LEVEL [text] 419

msdl.microsoft.com/

downloads/

symbols [lab] 11

MSDN

documentation [lab] 25

MSWmi_MofData_GUID [text] 1520

multi(n)

BOOT.INI [text] 439, 447

Multicore processor [text] 26, 28

Multiple-reader-single-writer [text] 1015

Multiprocessor [text] 23, 26-28

/onecpu [text] 446

architecture [text] 219, 220

HAL [text] 242, 244

hyperthreading [text] 28

limitations [text] 26

lock [text] 282-287

NUMA [text] 198, 605-607

illustrated [text] 199

safety [text] 282-287

scheduler [text] 30

SMP [text] 27

spin lock [text] 605-607

Multitasking [text] 23, 24

Multithreading [text] 23, 25

cooperative [text] 31

preemptive [text] 31

Mutex [text] 1003, 1008

deadlock detection [text] 498

fast [text] 1003, 1005

fast mutex

comparison [text] 1014

KeInitializeMutex [text] 1009

KeReleaseMutex [text] 1009

KeWaitForMultipleObjects

priority [text] 1020

KeWaitForSingleObject

priority [text] 1020

KMUTEX [text] 1009

owned [text] 1010

synchronization [text] 1004

my_AddDevice [text] 1185

my_PassDownToNextPowerDriver [text] 1217

Myth

portability [text] 38, 39

N

Nagar, Rajeev [text] 1624

Name

device [text] 548

persistence [text] 554

Name space

object manager [text] 314-317

?? [text] 315

Device [text] 315

DosDevices [text] 315

NDIS

driver [text] 109

illustrated [text] 110-112

intermediate

illustrated [text] 111, 112

miniport

illustrated [text] 111, 112

Nebbett, Gary [text] 1624

neg

lock [text] 287

Neither I/O [text] 632, 670, 671

DeviceIoControl [text] 672

DeviceIoControlEx [text] 672

METHOD_NEITHER [text] 652, 653

ReadFile [text] 671

ReadFileEx [text] 671

WriteFile [text] 671

WriteFileEx [text] 671

net start [lab] 34

net start drivername [text] 461

net stop [lab] 34

net stop drivername [text] 463

Network

debugging port [text] 484

driver [text] 98, 109

illustrated [text] 110-112

Newcomer [text] 191, 1184-1217

Newcomer, Joseph M. [text] 2, 3, 1624

newcomer@flounder.com [text] 2

Next [text] 1185

NextLowerDriver [text] 1185, 1185-1217

No [text] 191

Noise [text] 957

Non [text] 1184, 1184

Non-paged pool [text] 160, 161, 164-905

ExInitializeNPagedLookasideList [text] 915

illustrated [text] 159, 162

NonPagedPool [text] 907

NonPagedPoolCacheAligned [text] 907

Non-Uniform Memory Access

see NUMA [text] 198

NonPagedPool [text] 907

Normal

priority class [text] 87

noserialmice

BOOT.INI [text] 445

not

lock [text] 287

Notification

event [text] 1004

NPAGED_LOOKASIDE_LIST [text] 915

NT Architecture [text] 153

NT system services [text] 175, 176

NT_DEBUG_BAUD_RATE [lab] 10, 11

NT_DEBUG_PORT [lab] 10, 11

NT_KD_FILES [lab] 10, 11

NT_SUCCESS [text] 329

example [text] 330, 398-1096

NT_SYMBOL_PATH [lab] 10, 11

NTDETECT [text] 140, 142

NTFS

illustrated [text] 123, 124

NTSD

debugger [text] 434

NTSTATUS [text] 336, 1217

checking [text] 329

example [text] 326, 395

NULL [text] 1185

Null modem cable [lab] 29

NUMA [text] 198

illustrated [text] 199

queued spin lock [text] 606, 607

Server 2008 [text] 198

spin lock [text] 605

Vista [text] 198

O

Object

adapter

AdapterControl handler [text] 1547, 1548

IoFreeAdapterChannel [text] 1549

NT4 [text] 1542

controller [text] 787, 788

device [text] 173, 174

DMA_ADAPTER [text] 868, 869

driver [text] 173, 174, 323

illustrated [text] 1186

event [text] 56

File [text] 563

File Object [text] 562

functional device

illustrated [text] 1186

interrupt [text] 173, 174

manager services [text] 175, 176

timer [text] 173, 174

Object extension [text] 344

Object Manager Name Space [text] 314, 316, 317

?? [text] 315, 317, 318

\ [text] 315

Device [text] 315

DosDevices [text] 315

illustrated [text] 315

object viewer [text] 316

OBJECT_ATTRIBUTES [text] 998

Ob… [text] 176

OCA [text] 530-532

analysis [text] 533

cost [text] 535

VeriSign [text] 534

Web sites [text] 536

Winqual [text] 534

oca.microsoft.com/en/windiag.asp [text] 536

OF [text] 274-276

Of [text] 1184

OHCI

USB [text] 1362

OLE [text] 141

onecpu

BOOT.INI [text] 446

Oney, Walter [text] 1624

Opaque

partially-opaque [text] 684

OPEN_EXISTING [text] 53

example [lab] 58, [text] 403

Operating System [text] 23

defined [text] 33

operating systems

BOOT.INI [text] 438

Optimized code [text] 974, 975

Optimizing compiler [text] 619-623

Options

IO_STACK_LOCATION.Parameters.Create [text] 692

or

lock [text] 287, 294-298

Oscilloscope [text] 958, 960

Other_Speed_Configuration [text] 1478

descriptor (USB) [text] 1365, 1379

OUT [text] 1217

out [text] 217

Output

STATUS [lab] 64

OutputBufferLength

IO_STACK_LOCATION.Parameters.DeviceIoControl [text] 695

Outstanding [text] 1184

OutstandingIO [text] 1184

Overflow [text] 207

OVERLAPPED [text] 69-71, 94

.hEvent [text] 70

.Offset [text] 70

design [text] 550

.OffsetHigh [text] 70

design [text] 550

Overrun

memory [text] 491

OVR [lab] 44

input [lab] 61

P

PADAPTER_OBJECT [text] 1545

PADDDEVICE [text] 332

PAE [text] 849

Page fault [text] 207

Pageable driver [text] 1529, 1530

code [text] 1533, 1534

data [text] 1535

ISR [text] 1537

MmLockPagableCodeSection [text] 1531, 1532

MmLockPagableDataSection [text] 1531

MmLockPagableSectionsByHandle [text] 1532

MmPageEntireDriver [text] 1536

MmResetDriverPaging [text] 1536

MmUnlockPagableImageSection [text] 1532

Paged

memory [text] 32

Paged pool [text] 160, 161, 905

illustrated [text] 159, 162

PagedPool [text] 907

PagedPoolCacheAligned [text] 907

PagedPool [text] 907

Parameters

ebp [text] 270

IO_STACK_LOCATION

.Create [text] 692

.DeviceIoControl [text] 695

.Read [text] 693

.Write [text] 694

stack [text] 269

Partial MDL [text] 822-824

DMA [text] 822

IoBuildPartialMdl [text] 816, 825

USB [text] 822

partition(n)

BOOT.INI [text] 441, 447

Pass-through [text] 1172, 1173

power [text] 1217

Passing [text] 1217

Passive

prioirty [text] 177, 178

PASSIVE_LEVEL

exception handler [text] 1248-1251

ExRaiseStatus [text] 1249

thread [text] 1004

PC architecture [text] 190

PCI [text] 245, 1569

BaseAddress [text] 1582-1584

BaseClass [text] 1579, 1580

BIOS [text] 1585

BIST [text] 1572, 1581

bridge [text] 1585

bus analyzer [text] 961, 962

bus segment [text] 190

bus segments [text] 1590

illustrated [text] 1586

BusNumber [text] 855

command register [text] 1572, 1574, 1575

configuration [text] 1570

configuration space [text] 1571-1573

device numbers [text] 1591

DeviceID [text] 1572, 1578

enumeration [text] 1593, 1594, 1602-1604

extender card [text] 965

function numbers [text] 1592

HAL [text] 1587

HalAssignSlotResources [text] 1589

HalGetBusData [text] 1588

HalGetBusDataByOffset [text] 1588

mapping

illustrated [text] 1586

status register [text] 1572, 1576, 1577

SubSystemID [text] 1578

SubVendorID [text] 1578

VendorID [text] 1572, 1578

WDM [text] 1147

PCI architecture [text] 190

PCI System Architecture [text] 1625

PCI+ [text] 205

PCI-X [text] 205

PCI-X System Architecture [text] 1625

PCI_BRIDGE_TYPE

PCI_COMMON_CONFIG [text] 1596

PCI_COMMON_CONFIG [text] 1596-1601

HalGetBusData [text] 1588

HalGetBusDataByOffset [text] 1588

PCI_DEVICE_TYPE

PCI_COMMON_CONFIG [text] 1596

PCI_MULTIFUNCTION

PCI_COMMON_CONFIG [text] 1596

PCI_SLOT_NUMBER [text] 1595

PCMCIA [text] 245, 1499

CardBus [text] 1500, 1501

enumeration [text] 1505

tool [text] 1504

PCONTROLLER_OBJECT

IoAllocateController [text] 790

IoCreateController [text] 789

PCSTR [text] 324

PCWSTR [text] 324

PDEVICE_OBJECT [text] 1217

example [text] 326, 395

PDMA_ADAPTER [text] 876

PDO [text] 1157

illustrated [text] 1160, 1171-1186

Serenum [text] 1480, 1485

Pdo [text] 1185

PDRIVER_CANCEL [text] 713, 742, 743

PDRIVER_CONTROL [text] 790, 876-1546

controller object [text] 791, 793

PDRIVER_DISPATCH [text] 332

PDRIVER_EXTENSION [text] 332

PDRIVER_STARTIO [text] 332

PDRIVER_UNLOAD [text] 332

Pending

IoMarkIrpPending [text] 1133, 1137-1139

example [text] 644, 661

IRP.PendingReturned [text] 686

PendingReturned

IRP [text] 1200

STATUS_PENDING [text] 1133, 1137-1199

PendingReturned

IRP [text] 685, 686, 1200

Pentium 4 [text] 28

Pentium Pro and Pentium II System Architecture [text] 1625

Pentium Pro Processor System Architecture [text] 1625

Pentium Processor System Architecture [text] 1625

Performance

I/O [text] 216

portability [text] 41

Performance measurement [text] 974, 975

Performance timer [text] 944

KeQueryPerformanceCounter [text] 945-948

Persistence

device name [text] 554

PEXCEPTION_POINTERS [text] 1264

PEXECPTION_POINTERS [text] 1256

PF [text] 274-276

PFILE_OBJECT

example [text] 569-582, 584, 585

Physical address [text] 165

DMA [text] 167, 832

DMA_OPERATIONS.MapTransfer [text] 871, 873

Physical Device Object

see PDO [text] 1157

Physical memory [text] 164

illustrated [text] 803-807, 809-813

on-card [text] 168

PIO_COMPLETION_ROUTINE [text] 1129

PIO_CSQ

example [text] 1613-1615, 1621, 1622

PIO_DPC_ROUTINE [text] 774, 777

PIO_ERROR_LOG_PACKET [text] 1084, 1087

PIO_STACK_LOCATION [text] 690

example [text] 569-574, 577-1615

PIO_TIMER_ROUTINE [text] 930

PIO_WORKITEM [text] 995

PIO_WORKITEM_ROUTINE [text] 995

Pipe

_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408

_URB_PIPE_REQUEST [text] 1401, 1410-1412

URB_FUNCTION_ABORT_PIPE [text] 1401

URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408

URB_FUNCTION_RESET_PIPE [text] 1410

URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412

URB_FUNCTION_SYNC_RESET_PIPE [text] 1411

USB [text] 1358

Pipeline

portability [text] 42

PIRP [text] 1217

PKDPC [text] 777

PKINTERRUPT [text] 766-769

PKSTART_ROUTINE [text] 998

Plug-and-Play [text] 1162, 1163, 1189, 1190

AddDevice [text] 312, 313, 321

driver size [text] 1448-1450

DriverEntry [text] 313

IRP_MJ_PNP [text] 65, 312-1180

IRP_MN_REMOVE_DEVICE [text] 320, 321

IRP_MN_START_DEVICE [text] 320, 321

IRP_MN_STOP_DEVICE [text] 320, 321

IRP_MJ_POWER [text] 65

power management [text] 1155

unload [text] 335

PMY_FDO_EXTENSION [text] 1217

POBJECT_ATTRIBUTES [text] 998

PoCallDriver [text] 1164, 1211-1217

example [text] 1217, 1225

Vista [text] 1211

POINTER_32 [text] 1329

POINTER_64 [text] 1329

Pool

driver verifier

tracking [text] 494

non-paged [text] 160, 161

illustrated [text] 159, 162

paged [text] 160, 161

illustrated [text] 159, 162

special [text] 491

tracking [text] 494

POOL_RAISE_IF_ALLOCATION_FAILURE [text] 916

PoolTag [text] 541

allocation [text] 910

ExAllocatePoolWithTag [text] 911

ExFreePoolWithTag [text] 913

pop [text] 268

popf [text] 268

Port

BaseAddress [text] 1584

driver [text] 99-102

illustrated [text] 103

SCSI [text] 127

video

XP [text] 1321

Portability

myth [text] 38

performance [text] 41

PoSetPowerState

example [text] 1224, 1230

PoStartNextPowerIrp [text] 1211, 1213-1217

example [text] 1217, 1218, 1226-1230

PostMessage [text] 92, 93

PostQueuedCompletionStatus [text] 79, 81

Power [text] 1162, 1217

completion routine [text] 1227-1230

context [text] 1220-1222

GUID_POWER_DEVICE_ENABLE [text] 1522

Interface_Power (USB) [text] 1365, 1380

IO_STACK_LOCATION.Parameters.Power [text] 1168

IRP_MJ_POWER [text] 65, 338-1212

handler [text] 1225

manager services [text] 175, 176

pass-through [text] 1217

Plug-and-Play [text] 1155

PoCallDriver [text] 1164, 1211-1217

example [text] 1225

Vista [text] 1211

PoSetPowerState

example [text] 1224, 1230

PoStartNextPowerIrp [text] 1211, 1213

example [text] 1217, 1218, 1226-1230

states [text] 1165, 1166

SystemPowerState [text] 1222

Power management

setting power state [text] 1219

Power state

D0 [text] 1165

required [text] 1166

D1 [text] 1165

optional [text] 1166

D2 [text] 1165

optional [text] 1166

D3 [text] 1165

required [text] 1166

device [text] 1165

setting [text] 1219

system [text] 1165

PowerDevice0

example [text] 1224

Po… [text] 176

PPCI_COMMON_CONFIG [text] 1601

Preemption

scheduler [text] 31

Preemptive [text] 23

PREfast [text] 507, 508

running [text] 509

Printer

driver [text] 122

illustrated [text] 121

language monitor [text] 122

illustrated [text] 121

port monitor [text] 122

illustrated [text] 121

spooler [text] 122

illustrated [text] 121

Priority

APC [text] 177, 178

boost [text] 354, 356-359

DIRQL [text] 177-179

DISPATCH [text] 177, 178

illusrtrated [text] 178

illustrated [text] 177

KeSetBasePriorityThread [text] 996, 997, 1001

KeSetPriorityThread [text] 996, 997, 1000

passive [text] 177, 178

Priority-scheduled [text] 23, 30

Process

accessing [text] 630

defined [text] 35

file locks owned by [text] 35

handles owned by [text] 35

memory owned by [text] 35

Process map

dispatch handler [text] 166, 167

DPC [text] 166, 167

ISR [text] 166, 167

Processor [text] 191

multicore [text] 26, 28

ProductID

HID [text] 1463

PRODUCTVERSION [text] 983

ProfIf

PCI_COMMON_CONFIG [text] 1600

ProgIf

PCI_COMMON_CONFIG [text] 1596

Programmed I/O [text] 209, 210

Programming the Microsoft Windows Driver Model [text] 1624

Prolog [text] 270

PROTECTED_POOL *PHRASE=Tag

PROTECTED_POOL [text] 913

Provider

WMI [text] 1523

PsCreateSystemThread [text] 996-998

PsTerminateSystemThread [text] 996, 997, 999

PSTR [text] 324

Ps… [text] 176

PtrToInt [text] 1330

PtrToLong [text] 1330

PtrToShort [text] 1330

PtrToUlong [text] 1330

PtrToUshort [text] 1330

PUNICODE_STRING

illustrated [text] 325

PURB

defined [text] 1392

push [text] 268

pushf [text] 268

PutDmaAdapter

DMA_OPERATIONS [text] 871, 872

PutScatterGatherList

DMA_OPERATIONS [text] 871, 873-886

PWSTR [text] 324

Q

Q103059

KB article [text] 467

Quantum [text] 355

scheduler [text] 88

Queue

ADAPTER_OBJECT [text] 719

cancel-safe [text] 723, 1607-1619

canceling [text] 1621, 1622

inserting [text] 1613

IO_CSQ [text] 1608, 1614, 1615

IoCsqInitialize [text] 1610, 1611, 1620

IoCsqInsertIrp [text] 1607, 1608

IoCsqRemoveIrp [text] 1607

IoCsqRemoveNextIrp [text] 1607, 1608

locking [text] 1612

peeking [text] 1615-1618

removing [text] 1614

CONTROLLER_OBJECT [text] 720

CriticalWorkQueue [text] 995

CurrentIrp [text] 706

custom [text] 702, 721, 722

DelayedWorkQueue [text] 995

ExInterlockedInsertHeadList [text] 728, 733

ExInterlockedInsertTailList [text] 728, 733

ExInterlockedRemoveHeadList [text] 728, 733

illustrated [text] 732

FIFO [text] 704

HyperCriticalWorkQueue [text] 995

InitializeListHead [text] 725, 733

InsertHeadList [text] 733

InsertTailList [text] 733

cancel-safe [text] 1613

IoQueueWorkItem [text] 994, 995

IoStartNextPacket [text] 705, 715-782

IoStartPacket [text] 704, 705, 713-717

IRP [text] 679, 701, 702

illustrated [text] 730, 731

IRP.Tail.Overlay

.DeviceQueueEntry [text] 685

IsListEmpty [text] 733

KeRemoveEntryDeviceQueue [text] 746

LIST_ENTRY [text] 725, 729

illustrated [text] 724, 730, 731

non-FIFO [text] 701

none [text] 703

RemoveEntryList [text] 733

cancel-safe [text] 1614

RemoveHeadList [text] 733

RemoveTailList [text] 733

StartIo [text] 704, 711, 712

illustrated [text] 707-709

system worker thread [text] 1002

Tail.Overlay

.ListEntry

illustrated [text] 732

Queued spin lock

NUMA [text] 606, 607

R

r8..r15

64-bit [text] 265

r8b..r15b

8-bit [text] 265

r8d..r15d

32-bit [text] 265

r8w..r15w

16-bit [text] 265

RaiseException [text] 1247, 1258

rdisk(n)

BOOT.INI [text] 440

Read

IO_STACK_LOCATION

.Parameters [text] 693

speculative [text] 300

READ_PORT_BUFFER_UCHAR [text] 248, 250

READ_PORT_BUFFER_ULONG [text] 248, 250

READ_PORT_BUFFER_USHORT [text] 248, 250

READ_PORT_UCHAR [text] 247

using [text] 251, 252

READ_PORT_ULONG [text] 247

using [text] 251, 252

READ_PORT_USHORT [text] 247

using [text] 251, 252

READ_REGISTER_BUFFER_UCHAR [text] 248, 249

READ_REGISTER_BUFFER_ULONG [text] 248, 249

READ_REGISTER_BUFFER_USHORT [text] 248, 249

READ_REGISTER_UCHAR [text] 247

using [lab] 42, [text] 251, 252

READ_REGISTER_ULONG [text] 247

using [text] 251, 252

READ_REGISTER_USHORT [text] 247

using [text] 251, 252

ReadDirectoryChangesW [text] 48, 79

ReadDmaCounter

DMA_OPERATIONS [text] 871, 873

ReadFile [text] 48, 60-66

asynchronous [text] 94

buffered [text] 634, 637, 638

illustrated [text] 639-642

design [text] 550

direct [text] 658

handler [text] 322

I/O Completion Port [text] 79

IO_STACK_LOCATION

.Parameters

.Read [text] 693

IRP_MJ_READ [text] 65, 338

synchronous [text] 89

ReadFileEx [text] 48, 57-72

buffered [text] 634, 637, 638

illustrated [text] 639-642

direct [text] 658

handler [text] 322

IRP_MJ_READ [text] 65, 338

Real-time

hard [text] 44

not [text] 43

priority class [text] 87

soft [text] 44

Reboot

.reboot [text] 464

Rebuild [text] 415

Rebuild all [text] 415

Rector, Brent E. [text] 3, 1624

Recursive acquisition [text] 1010

Reference [text] 1184

Reference count

IRP [text] 1182, 1183

decrementer [text] 1188

incrementer [text] 1187

REG_BINARY [text] 145, 1092

REG_DWORD [text] 145, 1092

REG_EXPAND_SZ [text] 145, 1092

REG_MULTI_SZ [text] 145, 1092

REG_SZ [text] 145, 1092

RegCreateKey [text] 1046

REGEDIT4 [text] 452

Register

base [text] 279

dump [text] 476

illustrated [text] 263, 264

index [text] 279

Register architecture [text] 261

RegisterEventSource [text] 1043-1045

Registers [text] 191

Registry [text] 140

boot time availability [text] 149

BreakOnEntry [text] 457

DebugMask [text] 457

DisplayName [text] 453, 454

driver [text] 146

ErrorControl [text] 455

Event Log [text] 1045

Group [text] 455

hardware [text] 142

helloworld.reg [lab] 31

HKEY_LOCAL_MACHINE

HARDWARE [text] 142

ImagePath [text] 453

installation keys [text] 456

IoOpenDeviceInterfaceRegistryKey [text] 555

LogEvents [text] 457

NTDETECT [text] 142

operations [text] 144

permanent entries [text] 1098

REG_BINARY [text] 145

REG_DWORD [text] 145

REG_EXPAND_SZ [text] 145

REG_MULTI_SZ [text] 145

REG_SZ [text] 145

RegCreateKey [text] 1046

RegSetValueEx [text] 1046

RTL_QUERY_REGISTRY_DIRECT [text] 1095

RTL_REGISTRY_QUERY_TABLE [text] 1094

RtlQueryRegistryValues [text] 1093, 1096

Start [text] 455

transient entries [text] 1098

Type [text] 455

RegSetValueEx [text] 1046

Remote debugging [text] 425-427

illustrated [text] 432

Remove [text] 1184

Remove event

KeSetEvent [text] 1188

RemoveEntryList [text] 733

cancel-safe-queue [text] 1614

RemoveEvent [text] 1184

RemoveHeadList [text] 733

RemoveTailList [text] 733

Report

HID [text] 1490-1493

ReportEvent [text] 1043, 1047-1068

Requests [text] 1217

Reserved [text] 191, 1184-1217

PCI_SLOT_NUMBER [text] 1595

RESET

input [lab] 62

output [lab] 65, 67

Resource

examining [text] 1060-1063

ret [text] 268, 270

Retail Build

driver [text] 372

kernel [text] 370

Return [text] 1185, 1185-1217

Return address [text] 269

Rev.2007.12 [text] 191, 1184-1217

RevisionID

PCI_COMMON_CONFIG [text] 1596

Rights [text] 191, 1184-1217

Ring 0 [text] 154

Ring 3 [text] 154

rip

64-bit [text] 266

RISC

architecture [text] 192

ROMBaseAddress

PCI_COMMON_CONFIG [text] 1598, 1601

RTL services [text] 175, 176

RTL_QUERY_REGISTRY_DIRECT [text] 1095

RTL_REGISTRY_ABSOLUTE [text] 1096

RTL_REGISTRY_OPTIONAL [text] 1096

RTL_REGISTRY_QUERY_TABLE [text] 1094

RtlCopyMemory [text] 1340

RtlInitUnicodeString [text] 325

example [text] 328, 330-402

RtlQueryRegistryValues [text] 1093, 1096

RtlZeroMemory [text] 1094

Rtl… [text] 176

Run-time library services [text] 175, 176

Russinovich, Mark [text] 1624

S

Sample® [text] 985

sbb

lock [text] 287

Scaled addressing [text] 280

Scatter-Gather [text] 861

defined [text] 858

DEVICE_DESCRIPTION

.ScatterGather [text] 854

DMA_OPERATIONS.GetScatterGatherList [text] 871, 873-885

DMA_OPERATIONS.PutScatterGatherList [text] 871, 873-886

efficiency [text] 860

emulation [text] 862, 863

hardware [text] 864

types [text] 859

Scheduler [text] 86

priority [text] 87, 177, 178

Scheduling

algorithm [text] 30

preemption [text] 31, 34

priority [text] 30

thread [text] 25

SCM [text] 24

Screen buffer size [lab] 17-19

scsci(n)

BOOT.INI [text] 439

SCSI

bus analyzer [text] 961, 962

disk class driver

illustrated [text] 689

driver [text] 125, 126

illustrated [text] 123, 124

miniport [text] 125-128

illustrated [text] 123, 124

miniport driver

illustrated [text] 106-108, 689-1117

port driver [text] 127

illustrated [text] 106-108, 689-1117

SCSI Request Block (SRB) [text] 125

SRB [text] 125

verification [text] 499

SCSI Verification [text] 499

SDI [text] 1285, 1286

Security

C2 [text] 16

event log [text] 1033

reference monitor [text] 175, 176

SecurityContext

IO_STACK_LOCATION.Parameters.Create [text] 692

Segment register [text] 279

SEH

see Exception handler [text] 1235

Semaphore [text] 1003, 1004, 1006

KeInitializeSemaphore [text] 1007

KeReleaseSemaphore [text] 1007

KSEMAPHORE [text] 1007

SEMAPHORE_INCREMENT [text] 357

Serenum

PDO [text] 1480, 1485

Serial cable [lab] 29

Serial number

HID [text] 1463

Serial port

driver [text] 113, 114

legacy [text] 481, 482

Sermouse

HID [text] 1480, 1485

Server

limitations [text] 26

SERVICE_DEMAND_START [text] 452, 455

SERVICE_ERROR_NORMAL [text] 452, 455

SERVICE_KERNEL_DRIVER [text] 452, 455

Services

executive [text] 175, 176

I/O Manager [text] 176

kernel [text] 175, 176

NT system [text] 175, 176

object manager [text] 175, 176

power manager [text] 175, 176

RTL [text] 175, 176

run-time library [text] 175, 176

security [text] 175, 176

SetEndOfFile [text] 48

SetFilePointer [text] 48

SetFilePointerEx [text] 83, 84

setjmp [text] 1235

Settings

advanced [lab] 12

SetupDiDestroyDeviceInfoList [text] 557

SetupDiEnumDeviceInterfaces [text] 557

HID [text] 1488, 1489

SetupDiGetClassDevs [text] 557

HID [text] 1488, 1489

SetupDiGetDeviceInterfaceDetail [text] 557

HID [text] 1488, 1489

Severity

error code [text] 361, 1053-1259

mc [text] 1051

Se… [text] 176

SF [text] 274-276

SFENCE [text] 304

Shanley, Tom [text] 1625

ShareAccess

IO_STACK_LOCATION.Parameters.Create [text] 692

Shared interrupt [text] 203

Sharing

exclusive [text] 52

FILE_SHARE_DELETE [text] 52

FILE_SHARE_READ [text] 52

FILE_SHARE_WRITE [text] 52

Shortcut

WinDbg [lab] 4, 5

Shutdown notification [text] 1273, 1274

IoRegisterShutdownNotification [text] 1274

IRP_MJ_SHUTDOWN [text] 65

Signaled [text] 1184, 1184

Signed driver [text] 1342-1345

Simulator

documentation [lab] 25

hardware [lab] 41, 42, 48

control panel [lab] 49, 50

Get State button [lab] 42, 44-68

starting [lab] 68

Single-writer-multiple-reader [text] 1015

Size

DMA_OPERATIONS [text] 871, 872

SIZE_T [text] 1328

Skip [text] 191

Sleep

KeDelayExecutionThread [text] 926, 927

SleepEx [text] 57, 73

SMSS [text] 24

Snooping

cache [text] 231, 232

Solomon, David A. [text] 1624

sos

BOOT.INI [text] 446, 447

SOURCES [text] 409, 411

.rc [text] 986

C_DEFINES [text] 513

DEPRECATE_DDK_FUNCTIONS [text] 513

MSC_WARNING_LEVEL [text] 419

SOURCES= [text] 410

TARGETLIBS= [text] 410

TARGETNAME= [text] 410

TARGETPATH= [text] 410, 414

TARGETTYPE= [text] 410

VERIIFIER_DDK_EXTENSIONS [text] 515

SOURCES= [text] 410

Special [text] 191

Special memory pool [text] 491

Speculative read [text] 218, 300-977

Spew

kernel [text] 371

Spin lock [text] 594

call usage verifier [text] 518

cancel [text] 741, 742, 747, 748

IoAcquireCancelSpinLock [text] 742

IoReleaseCancelSpinLock [text] 747, 748

classic [text] 595

NUMA [text] 605

deadlock detection [text] 498

DISPATCH_LEVEL [text] 599

improper use [text] 490

interrupt [text] 755, 759-765

illustrated [text] 892, 1557

ISR

illustrated [text] 754

KeAcquireInStackQueuedSpinLock [text] 603, 604

KeAcquireInStackQueuedSpinLockAtDpcLevel [text] 603

KeAcquireSpinLockAtDpcLevel [text] 601

KeAcqureSpinLock [text] 598

KeInitailizeSpinLock [text] 603

KeInitializeSpinLock [text] 596

KeReleaseInStackQueuedSpinLock [text] 603, 604

KeReleaseInStackQueuedSpinLockAtDpcLevel [text] 603

KeReleaseSpinLock [text] 600

KeReleaseSpinLockAtDpcLevel [text] 601

KeSynchronizeExecution [text] 599

KLOCK_QUEUE_HANDLE [text] 604

KSPIN_LOCK [text] 596, 603

limitations [text] 599, 602

queued [text] 595, 603

KLOCK_QUEUE_HANDLE [text] 604

NUMA [text] 606, 607

starvation [text] 602

video miniport [text] 1321

visual [text] 597

Spin wait [text] 924

Spooler [text] 122

illustrated [text] 121

SRB [text] 125, 127

SRV* [lab] 11

SS [text] 279

SSIZE_T [text] 1328

Stack

call [text] 268

epilog [text] 270

esp [text] 266

illustrated [text] 269

illustrated [text] 269

pop [text] 268

popf [text] 268

prolog [text] 270

push [text] 268

pushf [text] 268

ret [text] 268

rsp [text] 266

SS [text] 279

switch [text] 490

Stack backtrace [text] 477

Stack overflow [text] 468

StackSize

IRP [text] 1108

STANDARD_RIGHTS_READ [text] 51

STANDARD_RIGHTS_WRITE [text] 51

Start

HKLM\...\Services\drivername [text] 452

Registry [text] 455

StartIo [text] 704, 711

cancel [text] 744

cancel spin lock [text] 741, 742, 747, 748

DEVICE_OBJECT.CurrentIrp [text] 706

DRIVER_OBJECT [text] 327

.DriverStartIo [text] 332

handler [text] 712, 718

illustrated [text] 707-709

IoStartNextPacket [text] 705, 715-782

illustrated [text] 894-896, 1559-1561

IoStartPacket [text] 704, 705, 713-717

illustrated [text] 889, 896-1561

queue [text] 702

Starvation

spin lock [text] 602

State

IO_STACK_LOCATION.Parameters.Power [text] 1168

per-handle [text] 562

shared [text] 344

static

never used [text] 344

STATUS

BUSY

output [lab] 64

DONE

input [lab] 61, 63

output [lab] 64, 66

EOP

input [lab] 61, 63

ERR

input [lab] 61, 63

output [lab] 64, 66

input [lab] 60, 61, 63

INT

input [lab] 61

output [lab] 64

output [lab] 60, 64

OVR

input [lab] 61

UND

output [lab] 64, 66

Status [text] 1217, 1217

_URB_CONTROL_GET_STATUS_REQUEST [text] 1392, 1425-1428

PCI_COMMON_CONFIG [text] 1598, 1600

URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425

URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427

URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426

URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428

STATUS_ACCESS_VIOLATION [text] 1250

STATUS_BUFFER_OVERFLOW [lab] 47, [text] 363

STATUS_BUFFER_TOO_SMALL [lab] 47, [text] 363, 364

STATUS_CANCELLED [text] 746, 1621, 1622

STATUS_DATA_ERROR [lab] 47, [text] 363

STATUS_DATA_LATE_ERROR [lab] 47, [text] 363

STATUS_DATA_OVERRUN [lab] 47, [text] 363

STATUS_DATATYPE_MISALIGNMENT [text] 1251

STATUS_DELETE_PENDING [text] 1191, 1213

STATUS_DEVICE_CONFIGURATION_ERROR [lab] 47, [text] 363

STATUS_INSUFFICIENT_RESOURCES [lab] 47, [text] 363, 572-1185

STATUS_INVALID_BUFFER_SIZE [lab] 47, [text] 363

STATUS_INVALID_DEVICE_REQUEST [lab] 47, [text] 363

STATUS_INVALID_DEVICE_STATE [lab] 47, [text] 363

STATUS_INVALID_PARAMETER [lab] 47, [text] 363, 571-574

STATUS_IO_DEVICE_ERROR [lab] 47, [text] 363

STATUS_MORE_PROCESSING_REQUIRED [text] 1111, 1130-1201

STATUS_NO_MEMORY [text] 1221

STATUS_NOT_IMPLEMENTED [lab] 47, [text] 363

STATUS_PENDING [lab] 47, [text] 353, 661-1199

example [text] 637

IRP.PendingReturned [text] 685

STATUS_SUCCESS [lab] 47, [text] 353, 359-1185

example [text] 400, 401

STATUS_UNSUCCESSFUL [lab] 47, [text] 363

std [text] 277

Stop [text] 1184

Stop event

KeClearEvent [text] 1187

KeSetEvent [text] 1188

StopEvent [text] 1184

Streaming driver [text] 133, 135

illustrated [text] 134

String

descriptor

HID [text] 1468

descriptor (USB) [text] 1365, 1376, 1377

movs [text] 277

REG_EXPAND_SZ [text] 145, 1092

REG_MULTI_SZ [text] 145, 1092

REG_SZ [text] 145, 1092

sub

lock [text] 287

SubClass

PCI_COMMON_CONFIG [text] 1596

Subclass

PCI_COMMON_CONFIG [text] 1600

SubSystemID

PCI_COMMON_CONFIG [text] 1598, 1601

SubVendorID

PCI_COMMON_CONFIG [text] 1598, 1601

support.microsoft.com/

ddk [text] 1627

Swift, Jonathon [text] 39

Symbol server [lab] 11

Symbolic link

IoCreateSymbolicLink [text] 330

IoDeleteSymbolicLink [text] 334

example [text] 402

SymbolicName

mc [text] 1051

Symbols

_NT_SYMBOL_PATH [lab] 10, 11

kernel [lab] 7, [text] 448, 449

path [lab] 7

Symmetric Multiprocessing [text] 27

SyncCritSect [text] 183

Synchronization [text] 589, 593

cancel spin lock [text] 741, 742, 747

cancel-safe queue [text] 1612

canonical order [text] 616, 617

correct [text] 592

deadlock [text] 614-616

event [text] 1003, 1004, 1011, 1012

ExAcquireFastMutex [text] 1013

ExAcquireFastMutexUnsafe [text] 1013

ExAcquireResourceExclusiveLite [text] 1016

ExAcquireResourceSharedLite [text] 1016

ExAcquireSharedStartExclusive [text] 1019

ExAcquireSharedWaitForExclusive [text] 1019

ExConvertExclusiveToSharedLite [text] 1019

executive resource [text] 1003, 1005-1016

ExInterlockedInsertHeadList [text] 728

ExInterlockedInsertTailList [text] 728

ExInterlockedRemoveHeadList [text] 728

ExReleaseFastMutex [text] 1013

ExReleaseFastMutexUnsafe [text] 1013

failure [text] 590, 591

fast mutex [text] 1003, 1005-1013

IoAcquireCancelSpinLock [text] 742

IoReleaseCancelSpinLock [text] 745, 746

KeAcquireSpinLock [text] 598

KeInitializeSpinLock [text] 596

KeReleaseSpinLock [text] 600

KeSynchronizeExecition

illustrated [text] 891, 1556

KeSynchronizeExecution [text] 599, 608-1003

illustrated [text] 896, 1561

KeWaitForMultipleObjects [text] 1020

KeWaitForSingleObject [text] 1020

KSPIN_LOCK [text] 596

multiple-reader-single-writer [text] 1015

mutex [text] 1003, 1004, 1008, 1009

need [text] 589

non-exclusive [text] 1015

queued spin lock [text] 603, 604

required [text] 344

semaphore [text] 1003, 1004, 1006, 1007

spin lock [text] 594, 595, 597-1003

limitations [text] 599, 602

SynchronizationEvent [text] 1184, 1184

SYNCHRONIZE [text] 51, 51

Synchronize

SynchronizationEvent [text] 1196

Synchronous I/O [text] 54

CancelSynchronousIo [text] 338

DPC [text] 775

I/O Manager [text] 170

System address [text] 167

System DMA [text] 214, 216-841

illustrated [text] 842-848

System mask

DbgPrintEx [text] 380

System Properties [text] 471

System worker thread [text] 1002

CriticalWorkQueue [text] 995

DelayedWorkQueue [text] 995

HyperCriticalWorkQueue [text] 995

SystemBuffer [text] 634, 635

example [text] 643

IRP [text] 685, 686, 1124

SystemContext

IO_STACK_LOCATION.Parameters.Power [text] 1168

SystemPowerState [text] 1228

T

Tag

allocation [text] 910

ExAllocatePoolWithTag [text] 911

ExFreePoolWithTag [text] 913

Tail.Overlay

.DeviceQueueEntry [text] 746

IRP [text] 685

.ListEntry [text] 729, 1613-1617

illustrated [text] 732

IRP [text] 685

TAPI [text] 172

Target

configuration [text] 430

illustrated [text] 432

TARGETLIBS= [text] 410

TARGETNAME= [text] 410

TARGETPATH= [text] 410, 414

TARGETTYPE= [text] 410

Taxonomy

I/O [text] 209

TDI [text] 109

illustrated [text] 110

Terminal Server [text] 24

Termination handler

__finally [text] 1260, 1265-1269

test.exe [lab] 33

CreateFile [lab] 58

Lab2 [lab] 57, 69

sample output [lab] 36, 37

Thread

defined [text] 25, 36

design guidelines [text] 1026-1028

driver [text] 990, 991, 996-998

IoAllocateWorkItem [text] 994, 995

IoFreeWorkItem [text] 994, 995

IoQueueWorkItem [text] 994, 995

kernel [text] 25

KeSetBasePriorityThread [text] 996, 997, 1001

KeSetPriorityThread [text] 996, 997, 1000

latency [text] 1028

multithreaded [text] 25

mutex

owned [text] 1010

performance [text] 1028

PKSTART_ROUTINE [text] 998

priority [text] 30

private state [text] 37

PsCreateSystemThread [text] 996-998

PsTerminateSystemThread [text] 996, 997, 999

scheduling [text] 25

shared state [text] 36

system worker [text] 991, 994, 995

Thunking [text] 1338

32-bit [text] 1333, 1334

64-bit [text] 1333-1335, 1339, 1340

Time

KeQuerySystemTime [text] 949

KeQueryTickCount [text] 949

KeQueryTimeIncrement [text] 949

timeout=

BOOT.INI [text] 437

Timer

10ms [text] 937

15ms [text] 937

custom [text] 934-936, 939

DPC [text] 173, 174, 928-938

high-resolution [text] 944

IO_TIMER_ROUTINE [text] 931

IoInitializeTimer [text] 929, 930

IoStartTimer [text] 931, 932

IoStopTimer [text] 932, 933

IoTimer [text] 929-931

Lab4 [lab] 77-79

KeCancelTimer [text] 935

KeIniializeTimer

Lab4 [lab] 80

KeInitializeTimer [text] 935, 940, 941

KeInitializeTimerEx [text] 935, 942

KeQueryPerformanceCounter [text] 945-948

KeQUeryTimeIncrement [text] 949

KeReadStateTimer [text] 935

KeSetTimer [text] 935, 943

Lab4 [lab] 80

KeSetTimerEx [text] 935, 943

KeStallExecutionProcessor [text] 924

KTIMER [text] 940

Lab4 [lab] 77, 80

Lab4 [lab] 77-80

log delay [text] 950

object [text] 173, 174

PIO_TIMER_ROUTINE [text] 930

precision [text] 951

resolution [text] 936, 937

types [text] 923

unreleased [text] 490

Timeslice [text] 31, 88

To [text] 1185

Toggle breakpoint [lab] 21

Top-level driver [text] 99, 130-1149

Trace

ASSERT [text] 384, 385

ASSERTMSG [text] 384, 385

DbgPrint [text] 374

DbgPrintEx [text] 375

KdPrint [text] 374

KdPrintEx [text] 375

WPP [text] 525

TransactNamedPipe [text] 79

Transport Driver Interface [text] 109

illustrated [text] 110

TRUE [text] 1184

Type

HKLM\...\Services\drivername [text] 452

IO_STACK_LOCATION.Parameters.Power [text] 1168

Registry [text] 455

Type3InputBuffer [text] 672

IO_STACK_LOCATION.Parameters.DeviceIoControl [text] 695

TypesSupported

HKLM\...\EventLog\System\drivername [text] 1045

U

UHALF_PTR [text] 1328

UHCI

USB [text] 1362

UINT32 [text] 1327

UINT64 [text] 1327

UINT_PTR [text] 1328

UIntToPtr [text] 1330, 1331

ULONG32 [text] 1327

ULONG64 [text] 1327

ULONG_PTR [text] 1328

ULongToPtr [text] 1330, 1331

UNALIGNED [text] 1325

UND

output [lab] 66

Underrun

memory [text] 491

Unicode [text] 324

RtlInitUnicodeString [text] 325

UNICODE_STRING [text] 325

UNICODE_STRING

example [text] 326, 395

FILE_OBJECT.FileName [text] 567

illustrated [text] 325

RtlInitUnicodeString [text] 325

example [text] 328, 330-334

Uniprocessor

/onecpu [text] 446

HAL [text] 242

Unload [text] 173, 174, 308

DRIVER_OBJECT

.DriverUnload [text] 332

example [text] 327, 334

guiidelines [text] 333

Plug-and-Play [text] 335

Unload handler [text] 319, 321-402

Lab2 [lab] 70

Plug-and-Play [text] 1231

Unplug

USB [text] 1361

URB [text] 1389, 1391

.UrbBulkOrInterruptTransfer [text] 1395

.UrbControlDescriptorRequest [text] 1395

.UrbControlFeatureRequest [text] 1396

.UrbControlGetConfigurationRequet [text] 1396

.UrbControlGetInterfaceRequest [text] 1396

.UrbControlGetStatusRequest [text] 1395

.UrbControlTransfer [text] 1391, 1395

.UrbControlVendorClassRequest [text] 1396

.UrbFrameLengthControl [text] 1391, 1394

.UrbGetCurrentFrameNumber [text] 1394

.UrbGetFrameLength [text] 1391, 1394

.UrbHeader [text] 1391, 1393-1397

.Function [text] 1397, 1398, 1439, 1440

.Length [text] 1397, 1398, 1439

.Status [text] 1397, 1398, 1440

.UrbIsochronousTransfer [text] 1395

.UrbPipeRequest [text] 1391, 1393

.UrbSelectConfiguration [text] 1391, 1393

.UrbSelectInterface [text] 1391, 1393

.UrbSetFrameLength [text] 1391, 1394

_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408

_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1392, 1413-1445

_URB_CONTROL_FEATURE_REQUEST [text] 1392, 1417-1424

_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1392, 1437

_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1392, 1438

_URB_CONTROL_GET_STATUS_REQUEST [text] 1392, 1425-1428

_URB_CONTROL_TRANSFER [text] 1407

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1392, 1429-1436

_URB_FRAME_LENGTH_CONTROL [text] 1402, 1403

_URB_GET_CURRENT_FRAME_NUMBER [text] 1406

_URB_GET_FRAME_LENGTH [text] 1404

_URB_ISOCH_TRANSFER [text] 1392, 1409

_URB_PIPE_REQUEST [text] 1401, 1410-1412

_URB_SELECT_CONFIGURATION [text] 1399

_URB_SELECT_INTERFACE [text] 1400

_URB_SET_FRAME_LENGTH [text] 1405

defined [text] 1392

IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1439, 1440, 1443

URB_FUNCTION_ABORT_PIPE [text] 1401

URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408

URB_FUNCTION_CLASS_DEVICE [text] 1433

URB_FUNCTION_CLASS_ENDPOINT [text] 1435

URB_FUNCTION_CLASS_INTERFACE [text] 1434

URB_FUNCTION_CLASS_OTHER [text] 1436

URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421

URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423

URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422

URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424

URB_FUNCTION_CONTROL_TRANSFER [text] 1407

URB_FUNCTION_GET_CONFIGURATION [text] 1437

URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406

URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413

URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414

URB_FUNCTION_GET_FRAME_LENGTH [text] 1404

URB_FUNCTION_GET_INTERFACE [text] 1438

URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425

URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427

URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426

URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428

URB_FUNCTION_ISOCH_TRANSFER [text] 1409

URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403

URB_FUNCTION_RESET_PIPE [text] 1410

URB_FUNCTION_SELECT_CONFIGURATION [text] 1399

URB_FUNCTION_SELECT_INTERFACE [text] 1400

URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415

URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416

URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417

URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419

URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420

URB_FUNCTION_SET_FRAME_LENGTH [text] 1405

URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412

URB_FUNCTION_SYNC_RESET_PIPE [text] 1411

URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402

URB_FUNCTION_VENDOR_DEVICE [text] 1429

URB_FUNCTION_VENDOR_ENDPOINT [text] 1431

URB_FUNCTION_VENDOR_INTERFACE [text] 1430

URB_FUNCTION_VENDOR_OTHER [text] 1432

UrbBulkOrInterruptTransfer [text] 1391

UrbGetCurrentFrameNumber [text] 1391

USB_CONFIGURATION_DESCRIPTOR_TYPE [text] 1445

UsbBuildInterruptOrBulkTransfer [text] 1447

URB_FUNCTION_ABORT_PIPE [text] 1401

URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408

URB_FUNCTION_CLASS_DEVICE [text] 1433

URB_FUNCTION_CLASS_ENDPOINT [text] 1435

URB_FUNCTION_CLASS_INTERFACE [text] 1434

URB_FUNCTION_CLASS_OTHER [text] 1436

URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421

URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423

URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422

URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424

URB_FUNCTION_CONTROL_TRANSFER [text] 1407

URB_FUNCTION_GET_CONFIGURATION [text] 1437

URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406

URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413

URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414

URB_FUNCTION_GET_FRAME_LENGTH [text] 1404

URB_FUNCTION_GET_INTERFACE [text] 1438

URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425

URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427

URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426

URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428

URB_FUNCTION_ISOCH_TRANSFER [text] 1409

URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403

URB_FUNCTION_RESET_PIPE [text] 1410

URB_FUNCTION_SELECT_CONFIGURATION [text] 1399

URB_FUNCTION_SELECT_INTERFACE [text] 1400

URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415

URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416

URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417

URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419

URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420

URB_FUNCTION_SET_FRAME_LENGTH [text] 1405

URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412

URB_FUNCTION_SYNC_RESET_PIPE [text] 1411

URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402

URB_FUNCTION_VENDOR_DEVICE [text] 1429

URB_FUNCTION_VENDOR_ENDPOINT [text] 1431

URB_FUNCTION_VENDOR_INTERFACE [text] 1430

URB_FUNCTION_VENDOR_OTHER [text] 1432

UrbHeader [text] 1391

USB

_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408

_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1413-1416

_URB_CONTROL_FEATURE_REQUEST [text] 1417-1424

_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1437

_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1438

_URB_CONTROL_GET_STATUS_REQUEST [text] 1425-1428

_URB_CONTROL_TRANSFER [text] 1407

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1429-1436

_URB_FRAME_LENGTH_CONTROL [text] 1402, 1403

_URB_GET_CURRENT_FRAME_NUMBER [text] 1406

_URB_GET_FRAME_LENGTH [text] 1404

_URB_ISOCH_TRANSFER [text] 1409

_URB_PIPE_REQUEST [text] 1401, 1410-1412

_URB_SELECT_CONFIGURATION [text] 1399

_URB_SELECT_INTERFACE [text] 1400

_URB_SET_FRAME_LENGTH [text] 1405

1.1 [text] 1350

2.0 [text] 1349, 1351

bulk transfer [text] 1352, 1355

BulkUsb driver [text] 1448, 1449

bus analyzer [text] 961, 962

cable length [text] 1383, 1384

CallUSBD [text] 1441, 1442

compared to Firewire [text] 1386

components [text] 1350

configuration [text] 1363

_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1437

_URB_SELECT_CONFIGURATION [text] 1399

HID [text] 1462

HID *PHRASE=HID

configuration [text] 1464

URB_FUNCTION_GET_CONFIGURATION [text] 1437

URB_FUNCTION_SELECT_CONFIGURATION [text] 1399

USBD_CreateConfigurationRequestEx [text] 1446

control transfer [text] 1352, 1353

_URB_CONTROL_TRANSFER [text] 1407

URB_FUNCTION_CONTROL_TRANSFER [text] 1407

Debugging [text] 973

debugging port [text] 485

descriptor [text] 1363-1380

_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1413-1416

HID [text] 1462

string [text] 1468

URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413

URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414

URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415

URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416

UsbBuildGetDescriptorRequest [text] 1445, 1446

USBD_ParseConfigurationDescriptorEx [text] 1446

device

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1429, 1433

URB_FUNCTION_CLASS_DEVICE [text] 1433

URB_FUNCTION_VENDOR_DEVICE [text] 1429

driver [text] 98, 1381

driver size [text] 1448-1450

driver stack [text] 1362

endpoint [text] 1357

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1435

HID [text] 1466, 1467

URB_FUNCTION_CLASS_ENDPOINT [text] 1435

URB_FUNCTION_VENDOR_ENDPOINT [text] 1431

enumeration [text] 1359-1361

feature

_URB_CONTROL_FEATURE_REQUEST [text] 1417-1424

URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421

URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423

URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422

URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424

URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417

URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419

URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420

frame

_URB_FRAME_LENGTH_CONTROL [text] 1402, 1403

_URB_GET_CURRENT_FRAME_NUMBER [text] 1406

_URB_GET_FRAME_LENGTH [text] 1404

_URB_SET_FRAME_LENGTH [text] 1405

URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406

URB_FUNCTION_GET_FRAME_LENGTH [text] 1404

URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403

URB_FUNCTION_SET_FRAME_LENGTH [text] 1405

URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402

full speed [text] 1349, 1351-1454

function

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1436

URB_FUNCTION_CLASS_OTHER [text] 1436

HID [text] 1453, 1484

high speed [text] 1349, 1351-1454

hub [text] 1348

hub controller [text] 1350

hub enumeration [text] 1360, 1361

hub repeater [text] 1350

interface [text] 1465

_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1438

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1430, 1431, 1434

_URB_SELECT_INTERFACE [text] 1400

URB_FUNCTION_CLASS_INTERFACE [text] 1434

URB_FUNCTION_GET_INTERFACE [text] 1438

URB_FUNCTION_SELECT_INTERFACE [text] 1400

URB_FUNCTION_VENDOR_INTERFACE [text] 1430

interrupt transfer [text] 1352, 1354

IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1439, 1440

IoSetDeviceInterfaceState [text] 1446

IRP_MJ_READ [text] 1447

IRP_MJ_WRITE [text] 1447

IRP_MN_START_DEVICE [text] 1446

isochronous

_URB_ISOCH_TRANSFER [text] 1409

URB_FUNCTION_ISOCH_TRANSFER [text] 1409

isochronous transfer [text] 1352, 1356

low speed [text] 1349, 1351-1454

model [text] 1348

OHCI [text] 1362

partial MDL [text] 822

pipe [text] 1358

_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408

_URB_PIPE_REQUEST [text] 1401, 1410-1412

URB_FUNCTION_ABORT_PIPE [text] 1401

URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408

URB_FUNCTION_RESET_PIPE [text] 1410

URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412

URB_FUNCTION_SYNC_RESET_PIPE [text] 1411

Plug-and-Play [text] 1382

root hub [text] 1350, 1351

status

_URB_CONTROL_GET_STATUS_REQUEST [text] 1425-1428

URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425

URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427

URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426

URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428

topology [text] 1351

UHCI [text] 1362

URB_FUNCTION_ABORT_PIPE [text] 1401

URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408

URB_FUNCTION_CLASS_DEVICE [text] 1433

URB_FUNCTION_CLASS_ENDPOINT [text] 1435

URB_FUNCTION_CLASS_INTERFACE [text] 1434

URB_FUNCTION_CLASS_OTHER [text] 1436

URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421

URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423

URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422

URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424

URB_FUNCTION_CONTROL_TRANSFER [text] 1407

URB_FUNCTION_GET_CONFIGURATION [text] 1437

URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406

URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413

URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414

URB_FUNCTION_GET_FRAME_LENGTH [text] 1404

URB_FUNCTION_GET_INTERFACE [text] 1438

URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425

URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427

URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426

URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428

URB_FUNCTION_ISOCH_TRANSFER [text] 1409

URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403

URB_FUNCTION_RESET_PIPE [text] 1410

URB_FUNCTION_SELECT_CONFIGURATION [text] 1399

URB_FUNCTION_SELECT_INTERFACE [text] 1400

URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415

URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416

URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417

URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419

URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420

URB_FUNCTION_SET_FRAME_LENGTH [text] 1405

URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412

URB_FUNCTION_SYNC_RESET_PIPE [text] 1411

URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402

URB_FUNCTION_VENDOR_DEVICE [text] 1429

URB_FUNCTION_VENDOR_ENDPOINT [text] 1431

URB_FUNCTION_VENDOR_INTERFACE [text] 1430

URB_FUNCTION_VENDOR_OTHER [text] 1432

USB-to-USB [text] 1385

USB_CONFIGURATION_DESCRIPTOR [text] 1445

USB_CONFIGURATION_DESCRIPTOR_TYPE [text] 1445

UsbBuildGetDescriptorRequest [text] 1446

USBD [text] 1444

vendor

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1432

URB_FUNCTION_VENDOR_OTHER [text] 1432

WDM [text] 1147

USB Request Block

see URB [text] 1389, 1391, 1392

USB_CONFIGURATION_DESCRIPTOR [text] 1445

USB_CONFIGURATION_DESCRIPTOR_TYPE [text] 1445

UsbBuildGetDescriptorRequest [text] 1445, 1446

UsbBuildInterruptOrBulkTransferRequest [text] 1447

USBD

CallUSBD [text] 1441, 1445

defiend [text] 1442

illustrated [text] 1136

IoCallDriver [text] 1447

IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1443

USBD_CreateConfigurationRequestEx [text] 1446

USBD_ParseConfigurationDescriptorEx [text] 1446

USBD_CreateConfigurationRequestEx [text] 1446

USBD_ParseConfigurationDescriptorEx [text] 1446

USBD_TRANSFER_DIRECTION_IN [text] 1447

USBD_TRANSFER_DIRECTION_OUT [text] 1447

User

mode [text] 154

User space

accessing [text] 630

UserBuffer [text] 634, 635

IRP [text] 685, 686

Neither I/O [text] 671, 673

V

Vendor

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1392, 1432

URB_FUNCTION_VENDOR_OTHER [text] 1432

VendorID

HID [text] 1463

PCI_COMMON_CONFIG [text] 1596, 1600

Verifier

call usage [text] 515-518

create settings [text] 500

deadlock detection [text] 498

disabling [text] 505

DMA verification [text] 496

Forcing IRQL checking [text] 492

I/O verification [text] 495

low resource simulation [text] 493

memory pool tracking [text] 494

reboot [text] 504

SCSI verification [text] 499

selection [text] 502, 503

settings [text] 501

Version

DEVICE_DESCRIPTION [text] 854

VERSIONINFO [text] 983

VERSIONINFO [text] 980-984, 987

ProductVersion [text] 985

StringFileInfo

CompanyName [text] 984

FileDescription [text] 984

FileVersion [text] 984

InternalName [text] 984

LegalCopyright [text] 984

LegalTrademarks [text] 985

OriginalFileName [text] 985

ProductName [text] 985

VFT_DRV [text] 983

VGA

illustrated [text] 120

Video port

XP [text] 1321

Virtual address [text] 165

Virtual memory [text] 23, 32-164

drivers [text] 166, 167

kernel (other) [text] 163

kernel map [text] 155-158, 160, 161

illustrated [text] 159, 162

on-card [text] 168

Win32 [text] 156

Virtual memory map

illustrated [text] 803-809

VirtualAlloc [text] 1264

Viscarola, Peter [text] 1624

Vista

asymmetric multiprocessor [text] 27

asymmetric multiprocessors [text] 18

BOOT.INI (gone!) [text] 431

CancelIoEx [text] 338

CancelSynchronousIo [text] 338

driver verifier [text] 504

HAL [text] 243

message-based interrupts [text] 205

NUMA [text] 198, 199

PoCallDriver [text] 1211

Registry [text] 1046

Visual studio

not used [text] 408

volatile [text] 624-626

example [text] 290

VOS_NT_WINDOWS32 [text] 983

VS_VERSION_INFO [text] 983

W

Wait-wake

GUID_POWER_DEVICE_WAKE_ENABLE [text] 1522

Waitable object

event [text] 1011

executive resource (not!) [text] 1016

fast mutex (not!) [text] 1013

mutex [text] 1009

semaphore [text] 1007

WaitCommEvent [text] 79

WaitForMultipleObjectsEx [text] 57, 73

WaitForSingleObjectEx [text] 57, 73

Warning

EVENTLOG_WARNING_TYPE [text] 1045

warning

#pragma [text] 420, 421

WCHAR [text] 324

WDF [text] 8

WDM [text] 129

Firewire [text] 1147

illustrated [text] 1144

PCI [text] 1147

Programming the Windows Driver Model [text] 1624

subset [text] 1145, 1148-1155

USB [text] 1147

Win2K [text] 1184, 1185

Win32 Programming [text] 3, 1624

Win98

WDM [text] 1145

Win9x

illustrated [text] 1144

WinDbg [text] 460

!analyze –v [lab] 21, [text] 469

!dma [text] 497

-k [lab] 5

.reboot [text] 464

.reload [lab] 21

_NT_DEBUG_PORT [lab] 10, 11

_NT_KD_FILES [lab] 10, 11

_NT_SYMBOL_PATH [lab] 10, 11

break [lab] 15

crash dump analysis [text] 473

debugging model [lab] 20

documentation [lab] 25

downloading driver [lab] 8, 9

_NT_KD_FILES [lab] 10, 11

environment variables [lab] 6, 7, 10-14

F10 [lab] 21, [text] 462

F5 [lab] 15, 21

F8 [lab] 21

gflags [text] 538, 539

Go [text] 459, 462

go [lab] 15

illustrated [text] 432

local debuggin [text] 383

register dump [text] 476

running [lab] 32

shortcut [lab] 4, 5

stack backtrace [text] 477

trace output [lab] 37

Windows

Data Center Edition

limitations [text] 26

Windows Management Instrumentation

see WMI [text] 1512

Windows NT Driver Development [text] 1624

Windows NT File System Internals [text] 1624

Windows NT/2000 Native API Reference [text] 1624

Windows PreProcessor Trace

see WPP [text] 525

WinLogon [text] 24

Winqual [text] 534

WinSock

driver

illustrated [text] 110

WMD

CardBus [text] 1147

WMI [text] 1512

data [text] 1517, 1520-1524

event block [text] 1518

events [text] 1523

generic property page provider [text] 1522

GUID [text] 1519

illustrated [text] 1513

instance [text] 1519

IRP_MJ_SYSTEM_CONTROL [text] 65, 338-1514

IRP_MN_QUERY_ALL_DATA [text] 1520

IRP_MN_QUERY_SINGLE_INSTANCE [text] 1520

MOF compiler

illustrated [text] 1521

register provider [text] 1523

WPP [text] 525, 527, 528

WnDbg

debugger [text] 433

WORD

FILE_WORD_ALIGNMENT [text] 343

Work item

IO_WORK_ITEM [text] 995

IoAllocateWorkItem [text] 994, 995

IoFreeWorkItem [text] 994, 995

IoQueueWorkItem [text] 994, 995

PIO_WORKITEM [text] 995

PIO_WORKITEM_ROUTINE [text] 995

WORK_QUEUE_TYPE [text] 995

Workstation

limitations [text] 26

WPP [text] 526

DebugPrint [text] 526

GUID [text] 527

WMI [text] 528

Write

IO_STACK_LOCATION

.Parameters [text] 694

ordering [text] 301-303

Write buffer [text] 297-303

Write-back cache [text] 222, 231

Write-through cache [text] 222, 231

WRITE_REGISTER_BUFFER_UCHAR [text] 248, 248, 249

WRITE_REGISTER_BUFFER_ULONG [text] 248, 248, 249

WRITE_REGISTER_BUFFER_USHORT [text] 248, 248, 249

WRITE_REGISTER_UCHAR [text] 247, 247-293

using [lab] 42, [text] 251, 251, 252

WRITE_REGISTER_ULONG [text] 247, 247-294

illustrated [text] 295-298

using [text] 251, 251, 252

WRITE_REGISTER_USHORT [text] 247, 247-293

using [text] 251, 251, 252

WriteFile [text] 48, 60-67

buffered [text] 635, 643, 644

illustrated [text] 645-648

design [text] 550

direct [text] 658

Direct I/O [text] 661-663

illustrated [text] 664-669

handler [text] 322

I/O Completion Port [text] 79

IO_STACK_LOCATION

.Parameters

.Write [text] 694

IRP_MJ_WRITE [text] 65, 338

WriteFileEx [text] 48, 57-72

buffered [text] 635, 643, 644

illustrated [text] 645-648

direct [text] 658

Direct I/O [text] 661-663

illustrated [text] 664-669

handler [text] 322

IRP_MJ_WRITE [text] 65, 338

www.bullseye.com [text] 521

www.chsw.com [text] 1627

www.eclectic-eng.com [text] 2

www.flounder.com [text] 1627

mvp_tips.htm [text] 2

www.lvr.com [text] 1627

www.microsoft.com/

DDK/Debugging/default.asp [lab] 3

hwdev [text] 1627

hwtest [text] 1346

whdc/default.mspx [text] 8

whdc/maintain/StartWER.mspx [text] 536

whdc/maintain/WER/DebugOCA.mspx [text] 536

www.osr.com [text] 1627

www.pcausa.com [text] 1627

www.sysinternals.com [text] 1627

www.tssc.de/index.htm [text] 1504

www.usb.org/developers [text] 1627

www.winInternals.com [text] 1627

www.yourvote.com/pci [text] 1627

X

x86

instruction set [text] 261

x86 architecture [text] 187-189

xadd [text] 288, 289

lock [text] 287-289

xchg

lock [text] 287

xor

lock [text] 287

XP

features [text] 1319

Z

Zero-page thread [text] 87

priority [text] 177, 178

ZF [text] 274-276

InterlockedCompareExchange [text] 290

Zw… [text] 176