1.1.4 Objects and Resources
-
IoCreateDevice
-
Initializes a device object, representing a physical, virtual, or logical
device for which the driver is being loaded into the system, and allocates
space for the driver-defined device extension associated with the device
object. This routine also initializes a device object representing a logical
or virtual device if the driver can reconfigure its devices dynamically, as,
for example, when a disk is repartitioned dynamically.
-
IoDeleteDevice
-
Removes a device object from the system when a driver is being unloaded or
when its logical or virtual devices are being reconfigured dynamically.
-
IoGetDeviceObjectPointer
-
Returns a pointer to a device object with a given name if the caller’s desired
access to the object can be granted; also returns a pointer to the file object
referenced by the named device object. In effect, this routine establishes a
connection between the caller and the next-lower-level driver. A successful
caller can use the returned device object pointer to initialize its own device
object(s) and as an argument to IoBuildAsynchronousFsdRequest, IoBuildSynchronousFsdRequest,
IoBuildDeviceIoControlRequest, IoAttachDeviceToDeviceStack, and IoCallDriver.
-
IoAttachDevice
-
“Attaches” a given source device object (belonging to the caller) to a named
target device object (usually belonging to the next-lower-level-driver), so
that I/O requests bound for the target device are routed first to the caller.
-
IoAttachDeviceToDeviceStack
-
“Attaches” the caller’s device object to the highest device object in a chain
of drivers and returns a pointer to the previously highest device object. I/O
requests bound for the target device are routed first to the caller.
-
IoDetachDevice
-
Releases an attachment between the caller’s device object and a target
driver’s device object.
-
IoCreateSymbolicLink
-
Sets up a symbolic link object, aliasing a named device object to a
user-visible name for the same device.
-
IoCreateUnprotectedSymbolicLink
-
Sets up a symbolic link object, aliasing a named device object to a
user-visible name for the same device and allowing user-mode callers to affect
the mode of the device (for example, parallel and serial drivers call this
routine so users can redirect output).
-
IoDeleteSymbolicLink
-
Releases a symbolic link between a device object name and a user-visible name.
-
IoAssignArcName
-
Sets up a symbolic link between a named device object (such as a tape, floppy,
or CD-ROM) and the corresponding ARC name for the device.
-
IoDeassignArcName
-
Releases the symbolic link created by calling IoAssignArcName.
-
IoSetShareAccess
-
Sets the access allowed to a given file object representing a device. (Only
highest-level drivers can call this routine.)
-
IoConnectInterrupt
-
Registers a driver’s ISR), according to the parameters obtained by calling HalGetInterruptVector.
Returns a pointer to a set of allocated, initialized, and connected interrupt
objects that is used as an argument to KeSynchronizeExecution.
-
IoDisconnectInterrupt
-
Releases a driver’s interrupt object(s) when the driver unloads.
-
IoReadPartitionTable
-
Returns a list of partitions on a disk with a given sector size.
-
IoSetPartitionInformation
-
Sets the partition type and number for a (disk) partition.
-
IoWritePartitionTable
-
Writes partition tables for a disk, given the device object representing the
disk, the sector size, and a pointer to a buffer containing the drive
geometry.
-
IoCreateController
-
Initializes a controller object, representing a physical device controller
shared by two or more like devices with the same driver, and specifies the
size of the controller extension.
-
IoDeleteController
-
Removes a controller object from the system.
-
KeInitializeSpinLock
-
Initializes a variable of type KSPIN_LOCK.
-
KeInitializeDpc
-
Initializes a DPC object, setting up a driver-supplied CustomDpc routine that
can be called with a given context.
-
KeInitializeTimer
-
Initializes a notification timer object to the Not-Signaled state.
-
KeInitializeTimerEx
-
Initializes a notification or synchronization timer object to the Not-Signaled
state.
-
KeInitializeEvent
-
Initializes an event object as a synchronization (single waiter) or
notification (multiple waiters) type event and sets up its initial state
(Signaled or Not-Signaled).
-
ExInitializeFastMutex
-
Initializes a fast mutex variable, used to synchronize mutually exclusive
access to a shared resource by a set of threads.
-
KeInitializeMutex
-
Initializes a mutex object at a given level number as set to the Signaled
state.
-
KeInitializeSemaphore
-
Initializes a semaphore object to a given count and specifies an upper bound
the count can attain.
-
IoCreateNotificationEvent
-
Initializes a named notification event to be used to synchronize access
between two or more components. Notification events are not auto-resetting.
-
IoCreateSynchronizationEvent
-
Initializes a named synchronization event to be used to serialize access to
hardware between two otherwise unrelated drivers.
-
PsCreateSystemThread
-
Creates a kernel-mode thread associated with a given process object or with
the default system process; returns a handle for the thread.
-
PsTerminateSystemThread
-
Terminates the current thread and satisfies as many waits as possible for the
current thread object.
-
KeSetBasePriorityThread
-
Sets up the runtime priority, relative to the system process, for a
driver-created thread.
-
KeSetPriorityThread
-
Sets up the runtime priority for a driver-created thread with a real-time
priority attribute.
-
MmIsThisAnNtAsSystem
-
Returns TRUE if the current platform is a server, indicating that more
resources are likely to be necessary to process I/O requests than if the
machine is a client.
-
MmQuerySystemSize
-
Returns whether a small, medium, or large amount of memory is available on the
current platform.
-
ExInitializeNPagedLookasideList
-
Initializes a lookaside list of nonpaged memory. After a successful
initialization, fixed-size blocks can be allocated from and freed to the
lookaside list.
-
ExInitializePagedLookasideList
-
Initializes a lookaside list of paged memory. After a successful
initialization, fixed-size blocks can be allocated from and freed to the
lookaside list.
-
ExInitializeZone
-
Initializes a zone header for a caller-allocated zone from which fixed-size
entries can be allocated and to which entries can be released.
-
ExInitializeResourceLite
-
Initializes a resource, for which the caller provides the storage, to be used
for synchronization by a set of threads.
-
ExReinitializeResourceLite
-
Reinitializes an existing resource variable.
-
ExDeleteResourceLite
-
Deletes a caller-initialized resource from the system’s resource list.
-
ObReferenceObjectByHandle
-
Returns a pointer to the object body and handle information (attributes and
granted access rights), given the handle for an object, the object’s type, and
a mask, specifying the desired access to the object, and the access mode (user
or kernel, for which access is always granted). A successful call increments
the reference count for the object.
-
ObReferenceObjectByPointer
-
Increments the reference count for a given object so the caller can ensure
that the object is not removed from the system while the caller is using it.
-
ObDereferenceObject
-
Releases a reference to an object (decrements the reference count), given a
pointer to the object body.
-
RtlInitString
-
Sets up the specified string in a buffer.
-
RtlInitAnsiString
-
Sets up the specified ANSI string in a buffer.
-
RtlInitUnicodeString
-
Sets up the specified Unicode string in a buffer.
-
InitializeObjectAttributes
-
Sets up a parameter of type OBJECT_ATTRIBUTES for a subsequent call to a ZwCreateXxx
or ZwOpenXxx routine.
-
ZwCreateDirectoryObject
-
Creates a directory object with the specified object attributes and allowed
access; returns a handle for the directory object.
-
ZwCreateFile
-
Creates or opens a file object representing a physical, logical, or virtual
device, a directory, a data file, or a volume; returns a handle for the file
object.
-
ZwCreateKey
-
Creates or opens a key object in the registry; returns a handle for the key
object.
-
ZwDeleteKey
-
Deletes an existing, open key in the registry when the last handle for the key
is closed.
-
ZwMakeTemporaryObject
-
Resets an opened object’s “permanent” attribute, so that the object and its
name can be deleted when the reference count for the object becomes zero.
-
ZwClose
-
Releases the handle for an opened object, causing the handle to become invalid
and decrementing the reference count of the object handle.