Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a szakasz felsorolja és ismerteti azokat a figyelmeztetéseket, amelyeket az illesztőprogramok kódelemzése jelent, amikor az illesztőprogram kódjában lehetséges hibát észlel. Vegye figyelembe, hogy egyes figyelmeztetések kernel módú kódhoz készültek, és a felhasználói módú illesztőprogramok elemzésekor figyelmen kívül hagyhatók.
Fontos
Az illesztőprogramok kódelemzése a Windows 24H2 WDK-ban és az EWDK-ban érhető el, de felhívjuk a figyelmét, hogy ezt a jövőben megszüntetik.
A továbbiakban a CodeQL lesz az illesztőprogramok elsődleges statikus elemző eszköze. A CodeQL hatékony lekérdezési nyelvet biztosít, amely a kódot adatbázisként kezeli lekérdezni, így egyszerűen írhat lekérdezéseket adott viselkedések, minták és egyebek céljából.
További információ a CodeQL használatáról a következőben található: CodeQL és a Static Tools Logo Test.
Az illesztőprogramok kódelemzése a következő típusú figyelmeztetéseket tartalmazza:
Általános figyelmeztetések (6000-6999): Lehetséges hibák a C és C++ szintaxisban és az általános kódolási gyakorlatban. A figyelmeztetések leírásáért lásd a C/C++ figyelmeztetések kódelemzését.
Windows-specifikus figyelmeztetések (28600-28799): Ezek a figyelmeztetések a Windows bizonyos használati mintáira vonatkoznak, de nem jellemzőek az illesztőprogramokra.
Driver-Specific figyelmeztetések (28100-28199): Hibák az illesztőprogramok alkalmazással, más illesztőprogramokkal és az operációs rendszerrel való interakciójában.
Széljegyzethibák (28200-28299 és 36000-36999): Ezek a figyelmeztetések azt jelzik, hogy helytelenül kódolt vagy nem megfelelő környezetben használták a széljegyzeteket. A legtöbb esetben az ilyen figyelmeztetés jelenléte azt jelzi, hogy a széljegyzet nem rendelkezik a kívánt (vagy bármilyen) hatással.
Memóriafoglalási figyelmeztetések (30029-30035): Ezek memóriafoglalási figyelmeztetések.
Ebben a részben
| Téma | Leírás |
|---|---|
C28101 figyelmeztetés: Az Illesztőprogramok modul arra következtetett, hogy az aktuális függvény nem a megfelelő típusú függvény |
|
C28110 figyelmeztetés: Az illesztőprogramoknak védeni kell a lebegőpontos hardver állapotát. Lásd az úszó használatát |
|
C28111 figyelmeztetés: A lebegőpontos állapot mentéséhez használt IRQL nem egyezik az aktuális IRQL-sel (ehhez a visszaállítási művelethez). |
|
C28114 figyelmeztetés: Egy teljes IRP-verembejegyzés másolásával bizonyos mezők inicializálva maradnak, amelyeket törölni vagy frissíteni kell. |
|
C28120 figyelmeztetés: A függvény nem hívható meg az aktuális IRQ-szinten. A jelenlegi szint túl alacsony. |
|
C28121 figyelmeztetés: A függvény nem hívható meg az aktuális IRQ-szinten. A jelenlegi szint túl magas. |
|
C28122 figyelmeztetés: A függvény meghívása nem engedélyezett alacsony IRQ-szinten. A korábbi függvényhívások nem összhangban vannak ezzel a korlátozással. |
|
C28123 figyelmeztetés: A függvény meghívása nem engedélyezett magas IRQ-szinten. A korábbi függvényhívások nem összhangban vannak ezzel a korlátozással. |
|
C28124 figyelmeztetés: A hívás hatására az IRQ-szint az elemzett függvény számára elfogadható minimális érték alá kerül. |
|
C28126 figyelmeztetés: A ObReferenceObject* AccessMode paraméterének IRP->RequestorMode-nak kell lennie |
|
C28127 figyelmeztetés: A rutinként használt függvény nem felel meg pontosan a várt típusnak. |
|
C28128 figyelmeztetés: A mezőhöz való hozzáférés közvetlenül megtörtént. Ezt rutinból kell csinálni. |
|
C28129 figyelmeztetés: Hozzárendelés történt egy operandushoz, amelyet csak bitkészletekkel és törlésekkel lehet módosítani |
|
C28131 figyelmeztetés: A DriverEntry rutinnak az argumentum másolatát kell mentenie, nem a mutatót, mert az I/O-kezelő felszabadítja a puffert |
|
C28132 figyelmeztetés: A mutató méretének figyelembevétele |
|
figyelmeztetés C28133: Az IoInitializeTimer a legjobban az AddDevice-ből hívható |
|
C28134 figyelmeztetés: A készletcímkének integrálnak kell lennie, nem sztringnek vagy sztringmutatónak |
|
C28135 figyelmeztetés: Ha a KeWaitForSingleObject első argumentuma helyi változó, a Mód paraméternek KernelMode-nak kell lennie |
|
C28139 figyelmeztetés: Az argumentumnak pontosan meg kell egyeznie a típussal |
|
C28141 figyelmeztetés: Az argumentum hatására az IRQ-szint az aktuális IRQL alatt van beállítva, és ez a függvény nem használható erre a célra |
|
C28143 figyelmeztetés: Az IoMarkIrpPending hívását kezdeményező kézbesítési rutinnak is vissza kell adnia STATUS_PENDING |
|
C28144 figyelmeztetés: A megszakítási rutinon belül, a kilépési ponton az Irp->CancelIrql irQL-jének kell lennie az aktuális IRQL-nek. |
|
C28145 figyelmeztetés: Az átlátszatlan MDL-struktúrát az illesztőprogram nem módosíthatja |
|
C28146 figyelmeztetés: A kernel módú illesztőprogramoknak ntstrsafe.h-t kell használniuk, nem strsafe.h-t. A forrásfájlban található |
|
C28147 figyelmeztetés: Az alapértelmezett készletcímke ('kdD' vagy 'mdW' ) használata a függvény hívásaihoz nem célja a készletcímkézésnek |
|
C28150 figyelmeztetés: A függvény hatására az IRQ-szint az elemzett függvény számára elfogadható maximális érték fölé kerül |
|
C28151 figyelmeztetés: Az érték nem jogi érték az IRQL-hez |
|
C28152 figyelmeztetés: Egy AddDevice-szerű függvény visszatérése váratlanul DO_DEVICE_INITIALIZING |
|
C28153 figyelmeztetés: A jegyzetből származó IRQL értéke ebben a környezetben nem értékelhető ki. |
|
C28156 figyelmeztetés: A tényleges IRQL nem felel meg a szükséges IRQL-nek |
|
C28157 figyelmeztetés: Az IRQL soha nem lett visszaállítva |
|
C28158 figyelmeztetés: A program nem mentett IRQL-t |
|
C28161 figyelmeztetés: Kilépés a lebegő hardver használatára vonatkozó jog megszerzése nélkül |
|
C28162 figyelmeztetés: Kilépés a lebegőpontos hardver használatára való jogosultság megtartása közben |
|
C28165 figyelmeztetés: Az osztály függvénymutatója nem egyezik a függvényosztály |
|
C28166 figyelmeztetés: A függvény nem állítja vissza az IRQL-t arra az értékre, amely a függvénybejegyzéskor aktuális volt, és erre szükség van. |
|
C28167 figyelmeztetés: A függvény módosítja az IRQL-t, és nem állítja vissza az IRQL-t, mielőtt kilép. Megjegyzést kell fűzni a módosításhoz, vagy vissza kell állítani az IRQL-t. |
|
C28168 figyelmeztetés: A diszpécser függvény nem rendelkezik Dispatch_type megjegyzéssel, amely megfelel a küldési tábla bejegyzésének |
|
C28169 figyelmeztetés: A küldési függvény nem rendelkezik Dispatch_type széljegyzetekkel |
|
C28170 figyelmeztetés: A függvény lapozott szegmensben van deklarálva, de sem PAGED_CODE, sem PAGED_CODE_LOCKED nem található |
|
C28171 figyelmeztetés: A függvény több PAGED_CODE vagy PAGED_CODE_LOCKED |
|
C28172 figyelmeztetés: A függvény PAGED_CODE vagy PAGED_CODE_LOCKED van deklarálva, hogy lapozott szegmensben van |
|
C28173 figyelmeztetés: Az aktuális függvény úgy tűnik, hogy helytelenül alkalmazkodik a 4 GB-nál nagyobb fizikai memóriához |
|
C28175 figyelmeztetés: A vezető nem érheti el a strustruktúra tagját |
|
C28176 figyelmeztetés: A szerkezet tagját nem módosíthatja az illesztőprogram |
|
C28177 figyelmeztetés: A függvény egynél több függvényosztálysal van eljegyzve. A rendszer egy ki nem veszi az összeset. |
|
C28260 figyelmeztetés: A függvényen belüli tulajdonság elemzése közben szintaxishiba történt a széljegyzetekben |
|
A függvény tulajdonsága szintaxishibát talált a széljegyzetekben. |
|
C28268 figyelmeztetés: A függvény függvényosztálya nem egyezik az itt használt típusdef függvényosztályával |
|
C28601 figyelmeztetés: Ne blokkolja a HWND_BROADCAST |
|
C28602 figyelmeztetés: A SendMessageTimeout meghívásának elkerülése HWND_BROADCAST |
|
C28604 figyelmeztetés: A SendMessageTimeout meghívásának elkerülése SMTO_ABORTIFHUNG 0-s időtúllépéssel |
|
C28615 figyelmeztetés: A __except() blokkban _resetstkoflw kell meghívnia _alloca hívásakor a __try blokkban. Ne hívja meg a _resetstkoflw a catch() blokkon belülről |
|
C28616 figyelmeztetés: Többszálú AV-feltétel |
|
C28617 figyelmeztetés: Kerülje a _beginthread() visszatérési értékét. Használja inkább a _beginthreadex() |
|
C28623 figyelmeztetés: GetMessagePos() koordináták alá nem írt leadása. A LOWORD/HIWORD helyett GET_X_LPARAM/GET_Y_LPARAM használata |
|
C28624 figyelmeztetés: Nincs hívás a Kiadás() felé az LResultFromObject-ből származó növekményes újraszámlálás egyeztetéséhez |
|
C28625 figyelmeztetés: A bizalmas adatok törlésére használt függvényhívást a rendszer optimalizálja |
|
C28636 figyelmeztetés: A LocalFree hívása a GetSecurityDescriptorOwner/Group/Dacl/Sacl hívásaiból beszerzett, nem lefoglalt mutatón |
|
C28637 figyelmeztetés: A függvény globális inicializálóban való meghívása nem biztonságos |
|
C28638 figyelmeztetés: a függvény delayload csonkja hiányzik egyező deklarációból |
|
C28639 figyelmeztetés: Szoros fogópont meghívása sztringgel |
|
C28640 figyelmeztetés: a függvény delayload csonkjának statikus függvénynek kell lennie |
|
C28644 figyelmeztetés: Nem ellenőrzött DPA_InsertPtr visszaadott értéke |
|
C28645 figyelmeztetés: A MessageBox a kérdőjeles üzenetszimbólummal lett meghívva, amely már nem ajánlott |
|
C28648 figyelmeztetés: A PulseEvent egy megbízhatatlan függvény |
|
C28649 figyelmeztetés: Az automatikus vagy globális veremtömbök soha nem null értékűek |
|
C28650 figyelmeztetés: A(z) !0 által használt típus nem kezeli hibaesetként. Állapotérték visszaadása, például: ! Az IGAZ érték nem ugyanaz, mint a hibát jelző állapotérték visszaadása. |
|
C28651 figyelmeztetés: A statikus inicializáló a tagfüggvénymutatók miatt másolást okoz az írási oldalakon |
|
C28652 figyelmeztetés: A statikus inicializáló a bitenkénti túlterhelés miatt másolást okoz az írási oldalakon |
|
C28714 figyelmeztetés: A szemantikailag különböző egész számtípusok között |
|
C28715 figyelmeztetés: A szemantikailag különböző egész számtípusok közötti öntés |
|
C28716 figyelmeztetés: Fordító által beszúrt öntött a szemantikailag különböző integráltípusok között |
|
C28717 figyelmeztetés: Érvénytelen VARIANT-típus |
|
C28718 figyelmeztetés: Nem névtelen puffer |
|
C28719 figyelmeztetés: Tiltott API-használat |
|
C28720 figyelmeztetés: Tiltott API-használat |
|
C28721 figyelmeztetés: Elavult teljesítményszámláló architektúrája |
|
C28722 figyelmeztetés: Nem névtelen puffer a függvénydeklarációban |
|
C28723 figyelmeztetés: Nem megadott puffer a függvénydefinícióban, amely nem rendelkezik megfelelő deklarációval |
|
C28725 figyelmeztetés: A Watson használata a SetUnhandledExceptionFilter helyett |
|
C28726 figyelmeztetés: Tiltott API-használat |
|
C28727 figyelmeztetés: Tiltott API-használat |
|
C28728 figyelmeztetés: Tiltott API-használat |
|
C28730 figyelmeztetés: "\0" lehetséges hozzárendelése közvetlenül egy mutatóhoz. |
|
C28735 figyelmeztetés: Tiltott Crimson API-használat |
|
C28736 figyelmeztetés: Tiltott API-argumentumok használata |
|
C28740 figyelmeztetés: Unannotated unsigned buffer |
|
C28741 figyelmeztetés: Nem névtelen puffer a függvényben |
|
C28742 figyelmeztetés: Nem névtelen puffer a függvényben |
|
C28750 figyelmeztetés: Az lstrlen és változatai tiltott használata |
|
C28751 figyelmeztetés: Az ExAllocatePool és változatai tiltott használata |
|
C28752 figyelmeztetés: A kernel32 vagy az advapi32 API tiltott használata |
|
C28753 figyelmeztetés: A paraméterek kiértékelésének nem definiált sorrendjére támaszkodva |
|
C30029 figyelmeztetés: Végrehajtható memóriát kérő memóriakiosztási függvény meghívása |
|
C30030 figyelmeztetés: Memóriakiosztási függvény meghívása és a végrehajtható memóriát jelző paraméter átadása |
|
C30031 figyelmeztetés: Memóriakiosztási függvény meghívása és a végrehajtható memóriát jelző paraméter átadása |
|
C30032 figyelmeztetés: Memóriakiosztási függvény meghívása és végrehajtható memória kérésének kényszerítése a POOL_NX_OPTOUT irányelv használatával |
|
C30033 figyelmeztetés: Végrehajtható lefoglalás észlelhető a POOL_NX_OPTIN. Ezt az illesztőprogramot úgy határozták meg, hogy egy másik illesztőprogram futtatáskor tölti be. Ellenőrizze, hogy a betöltési illesztőprogram meghívja-e ExInitializeDriverRuntime(DrvRtPoolNxOptIn) a DriverEntryben. |
|
C30034 figyelmeztetés: Jelölőérték átadása kiosztó függvénynek, amely végrehajtható memória lefoglalását eredményezheti. Ellenőrizze, hogy a kiosztási függvény nem kér-e végrehajtható, nem lapított készletet. |
|
C30035 figyelmeztetés: Olyan függvény hívása történt, amelyet az inicializálási függvényen belülről kell végrehajtani (például DriverEntry() vagy DllInitialize()). A PREfast nem tudta megállapítani, hogy a hívás az inicializálási függvényből történt-e. |