2014-11-20 2 views
-4

드라이버가 부팅 또는 시스템에서 초기화되었는지 감지해야하며이 정보를 얻기 위해 "DEVICE_OBJECT"변수가 있습니다. 이 정보를 추출하지 않고 "DEVICE_OBJECT"및 "DRIVER_OBJECT"속성을 조사하여 성공하지 못했습니다. 누구든지 할 수있는 방법에 대한 조언이 있습니까?드라이버 시작 유형 속성

+0

의미있는 도움말, OS, 드라이버 및 드라이버 검색 라이브러리를 시작하려면 더 많은 정보가 필요합니다. – IllusiveBrian

답변

0
NTSTATUS 
IopInitializeDeviceNodeService(PDEVICE_NODE DeviceNode, BOOLEAN BootDriverOnly) 
{ 
    NTSTATUS Status; 
    ULONG ServiceStart; 
    RTL_QUERY_REGISTRY_TABLE QueryTable[2]; 

    if (DeviceNode->ServiceName.Buffer == NULL) 
    { 
     return STATUS_UNSUCCESSFUL; 
    } 

    /* 
    * Get service start value 
    */ 

    RtlZeroMemory(QueryTable, sizeof(QueryTable)); 
    QueryTable[0].Name = L"Start"; 
    QueryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT; 
    QueryTable[0].EntryContext = &ServiceStart; 
    Status = RtlQueryRegistryValues(RTL_REGISTRY_SERVICES, 
     DeviceNode->ServiceName.Buffer, QueryTable, NULL, NULL); 
    if (!NT_SUCCESS(Status)) 
    { 
     DPRINT("RtlQueryRegistryValues() failed (Status %x)\n", Status); 
     return Status; 
    }