- 30.04.2018
- 5 minute de citit
In acest articol
ZwWriteFile rutina scrie date intr – un fisier deschis.
Sintaxa
__kernel_entry NTSYSCALLAPI NTSTATUS NtWriteFile (HANDLE FileHandle, HANDLE Event, PIO_APC_ROUTINE ApcRoutine, PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, PLARGE_INTEGER ByOUL
Parametrii
FileHandle
[in] Maner la obiectul fisier. Acest handle este creat de un apel reusit catre NtCreateFile sau NtOpenFile.
Eveniment
[in, optional] Optional, un maner pentru un obiect eveniment pentru a seta la starea semnalata dupa finalizarea operatiei de scriere. Dispozitivele si driverele intermediare ar trebui sa seteze acest parametru la NULL .
ApcRoutine
[in, optional] Acest parametru este rezervat. Dispozitivele si driverele intermediare ar trebui sa seteze acest pointer la NULL .
ApcContext
[in, optional] Acest parametru este rezervat. Dispozitivele si driverele intermediare ar trebui sa seteze acest pointer la NULL .
IoStatusBlock
[out] Pointer catre o structura IO_STATUS_BLOCK care primeste starea finala finala si informatii despre operatia de scriere solicitata. Membrul de informatii primeste numarul de octeti efectiv scrise in fisier.
Tampon
[in] Pointer catre un buffer alocat apelantului care contine datele de scris in fisier.
Lungime
[in] Dimensiunea, in octeti, a bufferului indicat de Buffer .
ByteOffset
[in, optional] Pointer catre o variabila care specifica decalajul octetului de pornire din fisier pentru inceperea operatiei de scriere. Daca Lungimea si ByteOffset specifica o operatie de scriere dupa marca curenta de sfarsit de fisier, NtWriteFile extinde automat fisierul si actualizeaza marca de sfarsit de fisier; orice octet care nu este scris in mod explicit intre astfel de marci vechi si noi de sfarsit de fisier este definit ca zero.
In cazul in care apelul la NtCreateFile seta numai DesiredAccess pavilion FILE_APPEND_DATA, ByteOffset este ignorat. Datele din bufferul dat , pentru lungimea de octeti, sunt scrise incepand cu sfarsitul curent al fisierului.
Daca apelul catre NtCreateFile seteaza oricare dintre steagurile CreateOptions , FILE_SYNCHRONOUS_IO_ALERT sau FILE_SYNCHRONOUS_IO_NONALERT, Managerul I / O mentine pozitia fisierului curent. Daca da, apelantul NtWriteFile poate specifica faptul ca se foloseste offsetul pozitiei fisierului curent in locul unei valori explicite ByteOffset . Aceasta specificatie poate fi facuta utilizand una dintre urmatoarele metode:
- Specificati un pointer la o valoare LARGE_INTEGER cu membrul HighPart setat la -1 si membrul LowPart setat la valoarea definita de sistem FILE_USE_FILE_POINTER_POSITION.
- Treceti un pointer NULL pentru ByteOffset .
NtWriteFile actualizeaza pozitia fisierului curent prin adaugarea numarului de octeti scrise la finalizarea operatiei de scriere, daca foloseste pozitia fisierului curent mentinuta de I / O Manager.
me follo a mi madrastra peliculas porno de incesto
compilacion mamadas orgias de maduros
follando a mi compañera de piso mi primera follada
videos porno online videos pornos muy guarros
viejas anales xxx orgias
transexual española follando porbo
trio con mi esposa españolas pajeandose
asiatica forzada sexo camara oculta españa
mamadas de polla hermanos jovenes follando
porno gay marruecos videos porno morbosos
porno gay primera vez videos de peliculas eroticas
porno espaniol trios con españolas
porno forzado porno bix
tias buenas desnudas hijas calientes
mi mujer es muy puta se follan a mi mujer
pormo zoofilia con abuelas
xxx incesto real viejas zoofilia
coños ricos pollas arabes
videos madres lesbianas tias follando con animales
fiestas porno tetonas delgadas
Chiar si atunci cand I / O Manager mentine pozitia curenta a fisierului, apelantul poate reseta aceasta pozitie trecand o valoare explicita ByteOffset catre NtWriteFile . Acest lucru schimba automat pozitia curenta a fisierului la acea valoare ByteOffset , efectueaza operatia de scriere si apoi actualizeaza pozitia in functie de numarul de octeti efectiv scris. Aceasta tehnica ofera apelantului un serviciu de cautare si scriere atomica.
De asemenea, este posibil sa se inceapa o operatie de scriere la sfarsitul curent al fisierului specificand pentru ByteOffset un pointer la o valoare LARGE_INTEGER cu HighPart setat la -1 si LowPart setat la FILE_WRITE_TO_END_OF_FILE Acest lucru functioneaza indiferent daca Managerul I / O mentine pozitia curenta a fisierului.
Cheie
[in, optional] Dispozitivul si driverele intermediare ar trebui sa seteze acest pointer la NULL .
Valoare returnata
NtWriteFile returneaza STATUS_SUCCESS la succes sau codul de eroare NTSTATUS corespunzator la esec.
Apelantii NtWriteFile trebuie sa fi apelat deja NtCreateFile cu semnalizatorul FILE_WRITE_DATA, FILE_APPEND_DATA sau GENERIC_WRITE setat in parametrul DesiredAccess . Retineti ca accesul doar la FILE_APPEND_DATA la un fisier nu permite apelantului sa scrie oriunde in fisier, cu exceptia marcajului curent de sfarsit de fisier, in timp ce accesul FILE_WRITE_DATA la un fisier nu impiedica apelantul sa scrie la sau dincolo a unui dosar.
In cazul in care apelul precedent pentru a seta NtCreateFile CreateOptions pavilion FILE_NO_INTERMEDIATE_BUFFERING, The Lungime si ByteOffset parametrii la NtWriteFile trebuie sa fie o parte integranta a dimensiunii sectorului. Pentru mai multe informatii, consultati NtCreateFile .
NtWriteFile incepe operatiunea de scriere in fisier la ByteOffset , la pozitia curenta a fisierului sau la marca de la sfarsitul fisierului. Incheie operatiunea de scriere cand a scris octeti de lungime din Buffer . Daca este necesar, extinde lungimea fisierului si reseteaza marca de sfarsit de fisier.
Daca apelantul a deschis fisierul cu semnalizatorul DesiredAccess SYNCHRONIZE setat, apelantul poate astepta ca aceasta rutina sa seteze FileHandle dat la starea semnalizata.
Driverele ar trebui sa apeleze NtWriteFile in contextul procesului de sistem in trei cazuri:
- Driverul creeaza manerul fisierului pe care il trece la NtWriteFile .
- NtWriteFile notifica conducatorul auto despre finalizarea I / O prin intermediul unui eveniment creat de acesta.
- NtWriteFile notifica conducatorul auto despre finalizarea I / O prin intermediul unei rutine de apel invers APC pe care driverul il transmite catre NtWriteFile .
Manerele de fisiere si evenimente sunt valabile numai in contextul procesului in care sunt create manaurile. Prin urmare, pentru a evita gaurile de securitate, driverul ar trebui sa creeze orice fisier sau eveniment care sa treaca catre NtWriteFile in contextul procesului de sistem in loc de contextul procesului in care se afla driverul.
In mod similar, NtWriteFile ar trebui sa fie apelat in contextul procesului de sistem daca notifica driverul despre finalizarea I / O prin intermediul unui APC, deoarece APC-urile sunt intotdeauna declansate in contextul firului care emite cererea I / O. Daca driverul apeleaza NtWriteFile in contextul unui alt proces decat procesul de sistem, APC ar putea fi intarziat la nesfarsit sau s-ar putea sa nu se declanseze deloc, deoarece firul initial nu poate intra niciodata intr-o stare de asteptare alertabila.
Pentru mai multe informatii despre lucrul cu fisiere, consultati Utilizarea fisierelor intr-un driver.
Apelantii NtWriteFile trebuie sa ruleze la IRQL = PASSIVE_LEVEL si cu APC-uri speciale de nucleu activate.
Nota Daca apelul catre aceasta functie apare in modul utilizator, ar trebui sa utilizati numele “NtWriteFile” in loc de ” ZwWriteFile “.
Pentru apelurile de la driverele in modul kernel, versiunile Nt Xxx si Zw Xxx ale unei rutine Windows Native System Services se pot comporta diferit in modul in care gestioneaza si interpreteaza parametrii de intrare. Pentru mai multe informatii despre relatia dintre versiunile de rutina Nt Xxx si Zw Xxx , consultati Utilizarea versiunilor Nt si Zw ale rutinelor Native System Services.
Cerinte
Sprijinit de client minim de pornire disponibile cu Windows 2000. tinta Platforma universala Antet ntifs.h (includ Wdm.h, Ntddk.h, Ntifs.h) Biblioteca NtosKrnl.lib DLL Ntoskrnl.exe ICCV PASSIVE_LEVEL ( a se vedea sectiunea Comentarii) DDI Regulile privind conformitatea PowerIrpDDis, HwStorPortProhibitedDDIs
Vezi si
KeInitializeEvent
ZwCreateFile
ZwQueryInformationFile
ZwReadFile
ZwSetInformationFile








