本文整理汇总了C++中ExInitializeFastMutex函数的典型用法代码示例。如果您正苦于以下问题:C++ ExInitializeFastMutex函数的具体用法?C++ ExInitializeFastMutex怎么用?C++ ExInitializeFastMutex使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ExInitializeFastMutex函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: InitTimerImpl
INIT_FUNCTION
NTSTATUS
NTAPI
InitTimerImpl(VOID)
{
ULONG BitmapBytes;
ExInitializeFastMutex(&Mutex);
BitmapBytes = ROUND_UP(NUM_WINDOW_LESS_TIMERS, sizeof(ULONG) * 8) / 8;
WindowLessTimersBitMapBuffer = ExAllocatePoolWithTag(NonPagedPool, BitmapBytes, TAG_TIMERBMP);
if (WindowLessTimersBitMapBuffer == NULL)
{
return STATUS_UNSUCCESSFUL;
}
RtlInitializeBitMap(&WindowLessTimersBitMap,
WindowLessTimersBitMapBuffer,
BitmapBytes * 8);
/* yes we need this, since ExAllocatePoolWithTag isn't supposed to zero out allocated memory */
RtlClearAllBits(&WindowLessTimersBitMap);
ExInitializeResourceLite(&TimerLock);
InitializeListHead(&TimersListHead);
return STATUS_SUCCESS;
}
开发者ID:HBelusca,项目名称:NasuTek-Odyssey,代码行数:28,代码来源:timer.c
示例2: ExpInitializeEventIds
BOOLEAN
ExpInitializeEventIds( VOID )
{
ExInitializeFastMutex( &ExpEventIdListMutex );
InitializeListHead( &ExpEventIdListHead );
ExpNextEventId = 1;
return TRUE;
}
开发者ID:BillTheBest,项目名称:WinNT4,代码行数:8,代码来源:eventid.c
示例3: PspInitializeJobStructures
VOID
NTAPI
INIT_FUNCTION
PspInitializeJobStructures(VOID)
{
InitializeListHead(&PsJobListHead);
ExInitializeFastMutex(&PsJobListLock);
}
开发者ID:RPG-7,项目名称:reactos,代码行数:8,代码来源:job.c
示例4: dump_hook_init
int dump_hook_init(PDRIVER_OBJECT drv_obj)
{
PLDR_DATA_TABLE_ENTRY table;
PHYSICAL_ADDRESS high_addr;
PLIST_ENTRY entry;
NTSTATUS status;
int resl = 0;
ExInitializeFastMutex(&dump_sync);
ExAcquireFastMutex(&dump_sync);
/* find PsLoadedModuleListHead */
entry = ((PLIST_ENTRY)(drv_obj->DriverSection))->Flink;
while (entry != drv_obj->DriverSection)
{
table = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
entry = entry->Flink;
if ( (table->BaseDllName.Length == 0x18) &&
(p32(table->BaseDllName.Buffer)[0] == 0x0074006E) )
{
ps_loaded_mod_list = pv(table->InLoadOrderLinks.Blink);
break;
}
}
ExReleaseFastMutex(&dump_sync);
do
{
if (ps_loaded_mod_list == NULL) break;
status = PsSetLoadImageNotifyRoutine(load_img_routine);
if (NT_SUCCESS(status) == FALSE) break;
high_addr.HighPart = 0;
high_addr.LowPart = 0xFFFFFFFF;
dump_mem = MmAllocateContiguousMemory(DUMP_MEM_SIZE, high_addr);
if (dump_mem == NULL) break;
dump_mdl = IoAllocateMdl(dump_mem, DUMP_MEM_SIZE, FALSE, FALSE, NULL);
if (dump_mdl == NULL) break;
MmBuildMdlForNonPagedPool(dump_mdl);
memset(dump_mem, 0, DUMP_MEM_SIZE);
resl = 1;
} while (0);
if (resl == 0) {
if (dump_mdl != NULL) IoFreeMdl(dump_mdl);
if (dump_mem != NULL) MmFreeContiguousMemory(dump_mem);
}
return resl;
}
开发者ID:capturePointer,项目名称:DiskCryptor-1,代码行数:56,代码来源:dump_hook.c
示例5: DokanAllocateFCB
// We must NOT call without VCB lcok
PDokanFCB
DokanAllocateFCB(
__in PDokanVCB Vcb
)
{
PDokanFCB fcb = ExAllocatePool(sizeof(DokanFCB));
if (fcb == NULL) {
return NULL;
}
ASSERT(fcb != NULL);
ASSERT(Vcb != NULL);
RtlZeroMemory(fcb, sizeof(DokanFCB));
fcb->Identifier.Type = FCB;
fcb->Identifier.Size = sizeof(DokanFCB);
fcb->Vcb = Vcb;
ExInitializeResourceLite(&fcb->MainResource);
ExInitializeResourceLite(&fcb->PagingIoResource);
ExInitializeFastMutex(&fcb->AdvancedFCBHeaderMutex);
#if _WIN32_WINNT >= 0x0501
FsRtlSetupAdvancedHeader(&fcb->AdvancedFCBHeader, &fcb->AdvancedFCBHeaderMutex);
#else
if (DokanFsRtlTeardownPerStreamContexts) {
FsRtlSetupAdvancedHeader(&fcb->AdvancedFCBHeader, &fcb->AdvancedFCBHeaderMutex);
}
#endif
fcb->AdvancedFCBHeader.ValidDataLength.LowPart = 0xffffffff;
fcb->AdvancedFCBHeader.ValidDataLength.HighPart = 0x7fffffff;
fcb->AdvancedFCBHeader.Resource = &fcb->MainResource;
fcb->AdvancedFCBHeader.PagingIoResource = &fcb->PagingIoResource;
fcb->AdvancedFCBHeader.AllocationSize.QuadPart = 4096;
fcb->AdvancedFCBHeader.FileSize.QuadPart = 4096;
fcb->AdvancedFCBHeader.IsFastIoPossible = FastIoIsNotPossible;
ExInitializeResourceLite(&fcb->Resource);
InitializeListHead(&fcb->NextCCB);
InsertTailList(&Vcb->NextFCB, &fcb->NextFCB);
InterlockedIncrement(&Vcb->FcbAllocated);
return fcb;
}
开发者ID:nmlgc,项目名称:dokany,代码行数:56,代码来源:create.c
示例6: FatCreateDcb
PFCB
NTAPI
FatCreateDcb(IN PFAT_IRP_CONTEXT IrpContext,
IN PVCB Vcb,
IN PFCB ParentDcb,
IN FF_FILE *FileHandle)
{
PFCB Fcb;
/* Allocate it and zero it */
Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(FCB), TAG_FCB);
RtlZeroMemory(Fcb, sizeof(FCB));
/* Set node types */
Fcb->Header.NodeTypeCode = FAT_NTC_DCB;
Fcb->Header.NodeByteSize = sizeof(FCB);
Fcb->Condition = FcbGood;
/* Initialize resources */
Fcb->Header.Resource = &Fcb->Resource;
ExInitializeResourceLite(Fcb->Header.Resource);
Fcb->Header.PagingIoResource = &Fcb->PagingIoResource;
ExInitializeResourceLite(Fcb->Header.PagingIoResource);
/* Initialize mutexes */
Fcb->Header.FastMutex = &Fcb->HeaderMutex;
ExInitializeFastMutex(&Fcb->HeaderMutex);
FsRtlSetupAdvancedHeader(&Fcb->Header, &Fcb->HeaderMutex);
/* Insert into parent's DCB list */
InsertHeadList(&ParentDcb->Dcb.ParentDcbList, &Fcb->ParentDcbLinks);
/* Set backlinks */
Fcb->ParentFcb = ParentDcb;
Fcb->Vcb = Vcb;
/* Initialize parent dcb list */
InitializeListHead(&Fcb->Dcb.ParentDcbList);
/* Set FullFAT handle */
Fcb->FatHandle = FileHandle;
/* Set names */
if (FileHandle)
{
FatSetFcbNames(IrpContext, Fcb);
/* Ensure the full name is set */
FatSetFullFileNameInFcb(IrpContext, Fcb);
}
return Fcb;
}
开发者ID:hoangduit,项目名称:reactos,代码行数:54,代码来源:dir.c
示例7: DriverEntry
NTSTATUS DriverEntry (IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
NTSTATUS ntStatus;
ntStatus= STATUS_SUCCESS;
PPJoyBus_DebugLevel= PPJOY_DEFAULT_DEBUGLEVEL;
PPJOY_DBGPRINT (FILE_PPJOYBUS|PPJOY_WARN, ("Built " __DATE__ " at " __TIME__) );
PPJOY_DBGPRINT (FILE_PPJOYBUS|PPJOY_FENTRY, ("DriverEntry (DriverObject=0x%p,RegistryPath=0x%p)",DriverObject, RegistryPath) );
RtlZeroMemory (&Globals,sizeof(Globals));
/* Setup copy of DriverObject first so we can use it for event log function */
Globals.DriverObject= DriverObject;
/* Allocate buffer to store registry path to the parameters registry key */
Globals.ParamRegistryPath.MaximumLength= RegistryPath->Length+sizeof(UNICODE_NULL)+sizeof(PARAM_KEY_NAME);
Globals.ParamRegistryPath.Length= RegistryPath->Length;
Globals.ParamRegistryPath.Buffer= ExAllocatePoolWithTag (PagedPool,Globals.ParamRegistryPath.MaximumLength,PPJOYBUS_POOL_TAG);
if (!Globals.ParamRegistryPath.Buffer)
{
PPJoyBus_WriteEventLog (PPJ_MSG_ERRORALLOCMEM,&ntStatus,sizeof(ntStatus),L"");
ntStatus= STATUS_INSUFFICIENT_RESOURCES;
goto Exit;
}
/* Copy driver registry path and append the parameters subkey name */
RtlCopyUnicodeString (&Globals.ParamRegistryPath,RegistryPath);
RtlAppendUnicodeToString (&Globals.ParamRegistryPath,PARAM_KEY_NAME);
ExInitializeFastMutex (&Globals.Mutex);
PPJOY_DBGPRINT (FILE_PPJOYBUS|PPJOY_BABBLE2, ("ParamRegistryPath=%S",Globals.ParamRegistryPath.Buffer) );
/* Set up pointers to our other entry points in the DeviceObject */
DriverObject->MajorFunction[IRP_MJ_CREATE]= PPJoyBus_CreateClose;
DriverObject->MajorFunction[IRP_MJ_CLOSE]= PPJoyBus_CreateClose;
DriverObject->MajorFunction[IRP_MJ_POWER]= PPJoyBus_Power;
DriverObject->MajorFunction[IRP_MJ_PNP]= PPJoyBus_PnP;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]= PPJoyBus_Ioctl;
DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL]= PPJoyBus_InternalIoctl;
DriverObject->DriverUnload= PPJoyBus_Unload;
DriverObject->DriverExtension->AddDevice= PPJoyBus_AddDevice;
PPJoyBus_WriteEventLog (PPJ_MSG_DRIVERSTARTEDVER,&ntStatus,sizeof(ntStatus),LVER_PRODUCTVERSION_STR);
Exit:
PPJOY_EXITPROC (FILE_PPJOYBUS|PPJOY_FEXIT_STATUSOK , "DriverEntry", ntStatus);
return ntStatus;
} /* DriverEntry */
开发者ID:Cyborg11,项目名称:PPJoy,代码行数:52,代码来源:PPJoyBus.c
示例8: ExpInitUuids
VOID
INIT_FUNCTION
NTAPI
ExpInitUuids(VOID)
{
ExInitializeFastMutex(&UuidMutex);
KeQuerySystemTime((PLARGE_INTEGER)&UuidLastTime);
UuidLastTime.QuadPart += TICKS_15_OCT_1582_TO_1601;
UuidCount = TICKS_PER_CLOCK_TICK;
RtlZeroMemory(UuidSeed, SEED_BUFFER_SIZE);
}
开发者ID:HBelusca,项目名称:NasuTek-Odyssey,代码行数:13,代码来源:uuid.c
示例9: CfixkrpInitializeFilament
VOID CfixkrpInitializeFilament(
__in PCFIXKRP_REPORT_CHANNEL Channel,
__in ULONG MainThreadId,
__out PCFIXKRP_FILAMENT Filament
)
{
RtlZeroMemory( Filament, sizeof( CFIXKRP_FILAMENT ) );
Filament->Channel = Channel;
Filament->MainThreadId = MainThreadId;
ExInitializeFastMutex( &Filament->ChildThreads.Lock );
}
开发者ID:jpassing,项目名称:cfix,代码行数:13,代码来源:filament.c
示例10: FatCreateFcb
PFCB
NTAPI
FatCreateFcb(IN PFAT_IRP_CONTEXT IrpContext,
IN PVCB Vcb,
IN PFCB ParentDcb,
IN FF_FILE *FileHandle)
{
PFCB Fcb;
/* Allocate it and zero it */
Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(FCB), TAG_FCB);
RtlZeroMemory(Fcb, sizeof(FCB));
/* Set node types */
Fcb->Header.NodeTypeCode = FAT_NTC_FCB;
Fcb->Header.NodeByteSize = sizeof(FCB);
Fcb->Condition = FcbGood;
/* Initialize resources */
Fcb->Header.Resource = &Fcb->Resource;
ExInitializeResourceLite(Fcb->Header.Resource);
Fcb->Header.PagingIoResource = &Fcb->PagingIoResource;
ExInitializeResourceLite(Fcb->Header.PagingIoResource);
/* Initialize mutexes */
Fcb->Header.FastMutex = &Fcb->HeaderMutex;
ExInitializeFastMutex(&Fcb->HeaderMutex);
FsRtlSetupAdvancedHeader(&Fcb->Header, &Fcb->HeaderMutex);
/* Insert into parent's DCB list */
InsertTailList(&ParentDcb->Dcb.ParentDcbList, &Fcb->ParentDcbLinks);
/* Set backlinks */
Fcb->ParentFcb = ParentDcb;
Fcb->Vcb = Vcb;
/* Set file handle and sizes */
Fcb->Header.FileSize.LowPart = FileHandle->Filesize;
Fcb->Header.ValidDataLength.LowPart = FileHandle->Filesize;
Fcb->FatHandle = FileHandle;
/* Initialize locks */
FsRtlInitializeFileLock(&Fcb->Fcb.Lock, NULL, NULL);
FsRtlInitializeOplock(&Fcb->Fcb.Oplock);
/* Set names */
FatSetFcbNames(IrpContext, Fcb);
return Fcb;
}
开发者ID:hoangduit,项目名称:reactos,代码行数:51,代码来源:fcb.c
示例11: vcos_global_lock
void vcos_global_lock(void)
{
#ifdef WIN32_KERN
if (global_lock_init == FALSE) {
ExInitializeFastMutex(&lock);
global_lock_init = TRUE;
}
ExAcquireFastMutex(&lock);
#else
if (global_lock_init == FALSE) {
InitializeCriticalSection(&lock);
global_lock_init = TRUE;
}
EnterCriticalSection(&lock);
#endif
}
开发者ID:MHesham,项目名称:bsp,代码行数:16,代码来源:vcos_pthreads.c
示例12: CcPfInitializePrefetcher
VOID
NTAPI
CcPfInitializePrefetcher(VOID)
{
/* Notify debugger */
DbgPrintEx(DPFLTR_PREFETCHER_ID,
DPFLTR_TRACE_LEVEL,
"CCPF: InitializePrefetecher()\n");
/* Setup the Prefetcher Data */
InitializeListHead(&CcPfGlobals.ActiveTraces);
InitializeListHead(&CcPfGlobals.CompletedTraces);
ExInitializeFastMutex(&CcPfGlobals.CompletedTracesLock);
/* FIXME: Setup the rest of the prefetecher */
}
开发者ID:Nevermore2015,项目名称:reactos,代码行数:16,代码来源:fssup.c
示例13: IntCreateMonitorObject
/* IntCreateMonitorObject
*
* Creates a MONITOR
*
* Return value
* If the function succeeds a pointer to a MONITOR is returned. On failure
* NULL is returned.
*/
static
PMONITOR
IntCreateMonitorObject()
{
HANDLE Handle;
PMONITOR Monitor;
Monitor = UserCreateObject(gHandleTable, NULL, &Handle, otMonitor, sizeof (MONITOR));
if (Monitor == NULL)
{
return NULL;
}
ExInitializeFastMutex(&Monitor->Lock);
return Monitor;
}
开发者ID:HBelusca,项目名称:NasuTek-Odyssey,代码行数:25,代码来源:monitor.c
示例14: DriverEntry
NTSTATUS
NTAPI
DriverEntry(IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath)
{
PDEVICE_EXTENSION DeviceExtension;
PDEVICE_OBJECT DeviceObject;
UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\Beep");
NTSTATUS Status;
UNREFERENCED_PARAMETER(RegistryPath);
/* Create the device */
Status = IoCreateDevice(DriverObject,
sizeof(DEVICE_EXTENSION),
&DeviceName,
FILE_DEVICE_BEEP,
0,
FALSE,
&DeviceObject);
if (!NT_SUCCESS(Status)) return Status;
/* Make it use buffered I/O */
DeviceObject->Flags |= DO_BUFFERED_IO;
/* Setup the Driver Object */
DriverObject->MajorFunction[IRP_MJ_CREATE] = BeepCreate;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = BeepClose;
DriverObject->MajorFunction[IRP_MJ_CLEANUP] = BeepCleanup;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = BeepDeviceControl;
DriverObject->DriverUnload = BeepUnload;
DriverObject->DriverStartIo = BeepStartIo;
/* Set up device extension */
DeviceExtension = DeviceObject->DeviceExtension;
DeviceExtension->ReferenceCount = 0;
DeviceExtension->TimerActive = FALSE;
IoInitializeDpcRequest(DeviceObject, (PIO_DPC_ROUTINE)BeepDPC);
KeInitializeTimer(&DeviceExtension->Timer);
ExInitializeFastMutex(&DeviceExtension->Mutex);
/* Page the entire driver */
MmPageEntireDriver(DriverEntry);
return STATUS_SUCCESS;
}
开发者ID:Nevermore2015,项目名称:reactos,代码行数:45,代码来源:beep.c
示例15: FspFileNodeCreate
NTSTATUS FspFileNodeCreate(PDEVICE_OBJECT DeviceObject,
ULONG ExtraSize, FSP_FILE_NODE **PFileNode)
{
PAGED_CODE();
*PFileNode = 0;
FSP_FILE_NODE_NONPAGED *NonPaged = FspAllocNonPaged(sizeof *NonPaged);
if (0 == NonPaged)
return STATUS_INSUFFICIENT_RESOURCES;
FSP_FILE_NODE *FileNode = FspAlloc(sizeof *FileNode + ExtraSize);
if (0 == FileNode)
{
FspFree(NonPaged);
return STATUS_INSUFFICIENT_RESOURCES;
}
RtlZeroMemory(NonPaged, sizeof *NonPaged);
ExInitializeResourceLite(&NonPaged->Resource);
ExInitializeResourceLite(&NonPaged->PagingIoResource);
ExInitializeFastMutex(&NonPaged->HeaderFastMutex);
KeInitializeSpinLock(&NonPaged->DirInfoSpinLock);
RtlZeroMemory(FileNode, sizeof *FileNode + ExtraSize);
FileNode->Header.NodeTypeCode = FspFileNodeFileKind;
FileNode->Header.NodeByteSize = sizeof *FileNode;
FileNode->Header.IsFastIoPossible = FastIoIsNotPossible;
FileNode->Header.Resource = &NonPaged->Resource;
FileNode->Header.PagingIoResource = &NonPaged->PagingIoResource;
FileNode->Header.ValidDataLength.QuadPart = MAXLONGLONG;
/* disable ValidDataLength functionality */
FsRtlSetupAdvancedHeader(&FileNode->Header, &NonPaged->HeaderFastMutex);
FileNode->NonPaged = NonPaged;
FileNode->RefCount = 1;
FileNode->FsvolDeviceObject = DeviceObject;
FspDeviceReference(FileNode->FsvolDeviceObject);
RtlInitEmptyUnicodeString(&FileNode->FileName, FileNode->FileNameBuf, (USHORT)ExtraSize);
FsRtlInitializeFileLock(&FileNode->FileLock, FspFileNodeCompleteLockIrp, 0);
*PFileNode = FileNode;
return STATUS_SUCCESS;
}
开发者ID:LucaBongiorni,项目名称:winfsp,代码行数:45,代码来源:file.c
示例16: DiskHook
BOOLEAN DiskHook(VOID)
{
if(UnloadInProgress) {
DbPrint(DC_DISK,DL_WARNING, ("DiskHook when UnloadInProgress!\n"));
return FALSE;
}
if(!DiskHooked) {
DbPrint(DC_DISK,DL_NOTIFY, ("DiskHook!\n"));
ExInitializeFastMutex(&DiskDevListMutex);
if(NT_SUCCESS(EnumDrivers(FindDiskDev, NULL))) {
DiskHooked=TRUE;
} else {
ExDestroyFastMutex(&DiskDevListMutex);
return FALSE;
}
}
return TRUE;
}
开发者ID:hackshields,项目名称:antivirus,代码行数:18,代码来源:diskio.c
示例17: RTDECL
RTDECL(int) RTSemMutexCreateEx(PRTSEMMUTEX phMutexSem, uint32_t fFlags,
RTLOCKVALCLASS hClass, uint32_t uSubClass, const char *pszNameFmt, ...)
{
AssertReturn(!(fFlags & ~RTSEMMUTEX_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER);
AssertCompile(sizeof(RTSEMMUTEXINTERNAL) > sizeof(void *));
PRTSEMMUTEXINTERNAL pThis = (PRTSEMMUTEXINTERNAL)RTMemAlloc(sizeof(*pThis));
if (!pThis)
return VERR_NO_MEMORY;
pThis->u32Magic = RTSEMMUTEX_MAGIC;
#ifdef RT_USE_FAST_MUTEX
ExInitializeFastMutex(&pThis->Mutex);
#else
KeInitializeMutex(&pThis->Mutex, 0);
#endif
*phMutexSem = pThis;
return VINF_SUCCESS;
}
开发者ID:sobomax,项目名称:virtualbox_64bit_edd,代码行数:20,代码来源:semmutex-r0drv-nt.cpp
示例18: DriverEntry
//.........这里部分代码省略.........
}
//
// Initialize our global resource and fire up the lookaside lists.
//
ExInitializeResourceLite( &FatData.Resource );
ExInitializeNPagedLookasideList( &FatIrpContextLookasideList,
NULL,
NULL,
POOL_RAISE_IF_ALLOCATION_FAILURE,
sizeof(IRP_CONTEXT),
TAG_IRP_CONTEXT,
MaxDepth );
ExInitializeNPagedLookasideList( &FatNonPagedFcbLookasideList,
NULL,
NULL,
POOL_RAISE_IF_ALLOCATION_FAILURE,
sizeof(NON_PAGED_FCB),
TAG_FCB_NONPAGED,
MaxDepth );
ExInitializeNPagedLookasideList( &FatEResourceLookasideList,
NULL,
NULL,
POOL_RAISE_IF_ALLOCATION_FAILURE,
sizeof(ERESOURCE),
TAG_ERESOURCE,
MaxDepth );
ExInitializeSListHead( &FatCloseContextSList );
ExInitializeFastMutex( &FatCloseQueueMutex );
KeInitializeEvent( &FatReserveEvent, SynchronizationEvent, TRUE );
//
// Register the file system with the I/O system
//
IoRegisterFileSystem(FatDiskFileSystemDeviceObject);
ObReferenceObject (FatDiskFileSystemDeviceObject);
#if __NDAS_FAT__
if (FatCdromFileSystemDeviceObject) {
IoRegisterFileSystem(FatCdromFileSystemDeviceObject);
ObReferenceObject (FatCdromFileSystemDeviceObject);
}
#else
IoRegisterFileSystem(FatCdromFileSystemDeviceObject);
ObReferenceObject (FatCdromFileSystemDeviceObject);
#endif
#if __NDAS_FAT__
FatData.FileSystemRegistered = TRUE;
RtlInitEmptyUnicodeString( &FatData.Root,
FatData.RootBuffer,
sizeof(FatData.RootBuffer) );
RtlInitUnicodeString( &tempUnicode, L"\\" );
RtlCopyUnicodeString( &FatData.Root, &tempUnicode );
RtlInitEmptyUnicodeString( &FatData.MountMgrRemoteDatabase,
FatData.MountMgrRemoteDatabaseBuffer,
开发者ID:tigtigtig,项目名称:ndas4windows,代码行数:67,代码来源:fatinit.c
示例19: DriverEntry
NTSTATUS
DriverEntry (
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
/*++
Routine Description:
Initialize the driver dispatch table.
Arguments:
DriverObject - pointer to the driver object
RegistryPath - pointer to a unicode string representing the path,
to driver-specific key in the registry.
Return Value:
NT Status Code
--*/
{
NTSTATUS status;
ULONG tempUlong;
Bus_KdPrint_Def (BUS_DBG_SS_INFO, ("%s, %s\n", __DATE__, __TIME__));
//
// Save the RegistryPath for WMI.
//
Globals.RegistryPath.MaximumLength = RegistryPath->Length +
sizeof(UNICODE_NULL);
Globals.RegistryPath.Length = RegistryPath->Length;
Globals.RegistryPath.Buffer = ExAllocatePoolWithTag(
PagedPool,
Globals.RegistryPath.MaximumLength,
BUSENUM_POOL_TAG_DRIVER_REGISTRYPATH
);
if (!Globals.RegistryPath.Buffer) {
return STATUS_INSUFFICIENT_RESOURCES;
}
RtlCopyUnicodeString(&Globals.RegistryPath, RegistryPath);
//
// Query OS Versions
//
Globals.bCheckVersion = PsGetVersion(
&Globals.MajorVersion,
&Globals.MinorVersion,
&Globals.BuildNumber,
NULL
);
if(Globals.bCheckVersion == TRUE) {
Bus_KdPrint_Def (BUS_DBG_SS_INFO,
("Checkd Build, Major Ver %d, Minor Ver %d, Build %d\n",
Globals.MajorVersion, Globals.MinorVersion, Globals.BuildNumber));
} else {
Bus_KdPrint_Def (BUS_DBG_SS_INFO,
("Free Build, Major Ver %d, Minor Ver %d, Build %d\n",
Globals.MajorVersion, Globals.MinorVersion, Globals.BuildNumber));
}
//
// Set entry points into the driver
//
DriverObject->MajorFunction [IRP_MJ_CREATE] =
DriverObject->MajorFunction [IRP_MJ_CLOSE] = Bus_CreateClose;
DriverObject->MajorFunction [IRP_MJ_PNP] = Bus_PnP;
DriverObject->MajorFunction [IRP_MJ_POWER] = Bus_Power;
DriverObject->MajorFunction [IRP_MJ_DEVICE_CONTROL] = Bus_IoCtl;
DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = Bus_SystemControl;
DriverObject->DriverUnload = Bus_DriverUnload;
DriverObject->DriverExtension->AddDevice = Bus_AddDevice;
//
// Init mutex
//
ExInitializeFastMutex(&Globals.Mutex);
//
// Default setting
//
Globals.PersistentPdo = TRUE;
Globals.LfsFilterInstalled = FALSE;
//
// Read options in the registry
//
// Disable persistent PDO option
status = DrReadKeyValueInstantly( RegistryPath,
BUSENUM_DRVREG_DISABLE_PERSISTENTPDO,
REG_DWORD,
&tempUlong,
//.........这里部分代码省略.........
开发者ID:JanD1943,项目名称:ndas4windows,代码行数:101,代码来源:busenum.c
示例20: LfsInitializeLogFileService
BOOLEAN
LfsInitializeLogFileService (
)
/*++
Routine Description:
This routine must be called during system initialization before the
first call to logging service, to allow the Log File Service to initialize
its global data structures. This routine has no dependencies on other
system components being initialized.
This routine will initialize the global structures used by the logging
service and start the Lfs worker thread.
Arguments:
None
Return Value:
TRUE if initialization was successful
--*/
{
LARGE_INTEGER CurrentTime;
PAGED_CODE();
DebugTrace( +1, Dbg, "LfsInitializeLogFileService: Enter\n", 0 );
//
// If the structure has already been initialized then we can return
// immediately.
//
if (LfsData.NodeTypeCode == LFS_NTC_DATA
&& LfsData.NodeByteSize == sizeof( LFS_DATA )
&& FlagOn( LfsData.Flags, LFS_DATA_INITIALIZED )) {
DebugTrace( -1, Dbg, "LfsInitializeLogFileService: Exit -> %01x\n", TRUE );
return TRUE;
}
//
// Zero out the structure initially.
//
RtlZeroMemory( &LfsData, sizeof( LFS_DATA ));
//
// Assume the operation will fail.
//
LfsData.Flags = LFS_DATA_INIT_FAILED;
//
// Initialize the global structure for Lfs.
//
LfsData.NodeTypeCode = LFS_NTC_DATA;
LfsData.NodeByteSize = sizeof( LFS_DATA );
InitializeListHead( &LfsData.LfcbLinks );
//
// Initialize the synchronization objects.
//
ExInitializeFastMutex( &LfsData.LfsDataLock );
//
// Initialize the buffer allocation. System will be robust enough to tolerate
// allocation failures.
//
ExInitializeFastMutex( &LfsData.BufferLock );
KeInitializeEvent( &LfsData.BufferNotification, NotificationEvent, TRUE );
LfsData.Buffer1 = LfsAllocatePoolNoRaise( PagedPool, LFS_BUFFER_SIZE );
if (LfsData.Buffer1 == NULL) {
return FALSE;
}
LfsData.Buffer2 = LfsAllocatePoolNoRaise( PagedPool, LFS_BUFFER_SIZE );
//
// Make sure we got both.
//
if (LfsData.Buffer2 == NULL) {
LfsFreePool( LfsData.Buffer1 );
LfsData.Buffer1 = NULL;
return FALSE;
}
//.........这里部分代码省略.........
开发者ID:JanD1943,项目名称:ndas4windows,代码行数:101,代码来源:sysinit.c
注:本文中的ExInitializeFastMutex函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论