Преглед на файлове

chapters/windows_eventloop: add doc link in footnote

Alexandre Janniaux преди 6 години
родител
ревизия
8e559c4164
променени са 1 файла, в които са добавени 33 реда и са изтрити 23 реда
  1. 33 23
      chapters/windows_eventloop.tex

+ 33 - 23
chapters/windows_eventloop.tex

@@ -9,9 +9,9 @@ ou IO completion ports, en proposant une implémentation de
 \subsection{poll, select}
 
 Comme dans la partie précédente, on dispose d'une fonction \inltype{select}
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/api/winsock2/nf-winsock2-select}}
 capable d'indiquer l'état de chacun des sockets décrits dans un tableau.
 
-% TODO: https://docs.microsoft.com/en-us/windows/desktop/api/winsock2/nf-winsock2-select
 \begin{code}{c}{Prototype de la fonction select}
 int WSAAPI select(
   int           nfds,
@@ -26,7 +26,9 @@ Malheureusement celle-ci ne peut être utilisée que sur des sockets venant de
 l'API winsock. Il nous sera donc impossible de l'utiliser pour construire la
 boucle événementielle sans changer d'IPC.
 
-De même, \inltype{poll} n'existe pas comme sous Linux et il s'agit d'une
+De même, \inltype{poll}
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/api/winsock2/nf-winsock2-wsapoll}}
+n'existe pas comme sous Linux et il s'agit d'une
 fonction winsock.
 
 \begin{code}{c}{Prototype de la fonction WSAPoll}
@@ -46,7 +48,9 @@ Pour obtenir le même effet que les fonctions sous Linux, sur des
 \inltype{HANDLE} de façon générique, Windows propose une famille de fonctions de
 la forme \inltype{WaitFor*}.
 
-D'abord, \inltype{WaitForSingleObject} attend que le \inltype{HANDLE} soit
+D'abord, \inltype{WaitForSingleObject}
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-waitforsingleobject}}
+attend que le \inltype{HANDLE} soit
 signalé, éventuellement en prenant en compte un ultimatum.
 
 \begin{code}{c}{Prototype de WaitForSingleObject sur MSDN}
@@ -58,9 +62,9 @@ DWORD WaitForSingleObject(
 
 Cependant, cela correspond peu à notre cas d'usage et sera plutôt utilisé pour
 les manipulations de processus. On peut donc s'intéresser à la variante nous
-concernant, qui sans surprise s'appelle \inltype{WaitForMultipleObjects}.
+concernant, qui sans surprise s'appelle \inltype{WaitForMultipleObjects}
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-waitformultipleobjects}}.
 
-%https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-waitformultipleobjects
 \begin{code}{c}{Prototype de la fonction WaitForMultipleObjects sur MSDN}
 DWORD WaitForMultipleObjects(
   DWORD        nCount,
@@ -86,11 +90,16 @@ faut donc parcourir à nouveau le tableau pour trouver les autres
 \subsection{Overlapped IO}
 
 Windows fournit ensuite un mécanisme bas niveau pour mettre les opérations d'IO
-en «tâche de fond». Ci-dessous, on voit dans les prototypes des fonctions de
-lecture et écriture
-%TODO phrase pas fini au dessus
+en «tâche de fond»
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/sync/synchronization-and-overlapped-input-and-output}}.
+Ci-dessous, on voit l'argument \inltype{lpOverlapped} dans les prototypes des
+fonctions de lecture
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-readfile}}
+et écriture
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-writefile}}
+qui va contenir l'état de l'opération lorsqu'elle est réalisée de façon
+asynchrone.
 
-%TODO https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-writefile
 \begin{code}{c}{Prototype de WriteFile sur MSDN}
 BOOL WriteFile(
   HANDLE       hFile,
@@ -101,8 +110,6 @@ BOOL WriteFile(
 );
 \end{code}
 
-
-%TODO https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-readfile
 \begin{code}{c}{Prototype de ReadFile sur MSDN}
 BOOL ReadFile(
   HANDLE                        hFile,
@@ -125,9 +132,10 @@ fournit ainsi un moyen de passer d'un modèle par disponibilité à un modèle p
 complétion.
 
 Il est possible d'étendre encore le modèle asynchrone en utilisant des
-«completion routines». Il faut alors utiliser la version suivante:
+«completion routines». Il faut alors utiliser la version \inltype{ReadFileEx}
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-readfileex}}
+pour la lecture.
 
-%TODO: https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-readfileex
 \begin{code}{c}{Prototype de la fonction ReadFileEx sur MSDN}
 BOOL ReadFileEx(
   HANDLE                          hFile,
@@ -138,10 +146,11 @@ BOOL ReadFileEx(
 );
 \end{code}
 
-Le paramètre \inltype{lpCompletionRoutine} est un pointeur de fonction du type
+Le paramètre \inltype{lpCompletionRoutine}
+\footnote{\url{https://msdn.microsoft.com/en-us/574eccda-03eb-4e8a-9d74-cfaecc7312ce}}
+est un pointeur de fonction du type
 suivant:
 
-%TODO: https://msdn.microsoft.com/en-us/574eccda-03eb-4e8a-9d74-cfaecc7312ce
 \begin{code}{c}{Définition de LPOVERLAPPED\_COMPLETION\_ROUTINE sur MSDN}
 typedef VOID (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE)(
     _In_    DWORD        dwErrorCode,
@@ -161,11 +170,11 @@ système similaire à epoll, dans un modèle par complétion, en étendant les
 sur beaucoup de points donc elle sera plus longuement décrite ici pour apporter
 des explications dans ce rapport.
 
-Un IOCP peut être créé avec la fonction \inltype{CreateIoCompletionPort} en
-passant \inltype{INVALID_HANDLE_VALUE} comme \inltype{FileHandle} et
+Un IOCP peut être créé avec la fonction \inltype{CreateIoCompletionPort}
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/fileio/createiocompletionport}}
+en passant \inltype{INVALID_HANDLE_VALUE} comme \inltype{FileHandle} et
 \inltype{NULL} comme \inltype{ExistingCompletionPort}.
 
-% TODO: https://docs.microsoft.com/en-us/windows/desktop/fileio/createiocompletionport
 \begin{code}{c}{Prototype de CreateIoCompletionPort sur MSDN}
 HANDLE WINAPI CreateIoCompletionPort(
     _In_     HANDLE    FileHandle,
@@ -195,9 +204,10 @@ construction, mais le cas ne nous intéresse pas pour l'implémentation de
 \inltype{vlc_msg_poller_t}.
 
 Une fois les opérations associées au port, on peut utiliser
-\inltype{GetQueuedCompletionStatus} pour récupérer un paquet de complétion.
+\inltype{GetQueuedCompletionStatus}
+\footnote{\url{https://msdn.microsoft.com/en-us/library/Aa364986(v=VS.85).aspx}}
+pour récupérer un paquet de complétion.
 
-% TODO: https://msdn.microsoft.com/en-us/library/Aa364986(v=VS.85).aspx
 \begin{code}{c}{Prototype de GetQueuedCompletionStatus sur MSDN}
 BOOL WINAPI GetQueuedCompletionStatus(
     _In_  HANDLE       CompletionPort,
@@ -214,10 +224,10 @@ la structure \inltype{OVERLAPPED} contenant les données et informations liées
 l'opération effectuée.
 
 Enfin, il sera possible de poster une notification sans effectuer d'opération en
-appelant \inltype{PostQueuedCompletionStatus}, afin de débloquer la boucle
-événementielle par exemple.
+appelant \inltype{PostQueuedCompletionStatus}
+\footnote{\url{https://docs.microsoft.com/en-us/windows/desktop/FileIO/postqueuedcompletionstatus}},
+afin de débloquer la boucle événementielle par exemple.
 
-% TODO: https://docs.microsoft.com/en-us/windows/desktop/FileIO/postqueuedcompletionstatus
 \begin{code}{c}{Prototype de PostQueuedCompletionStatus}
 BOOL WINAPI PostQueuedCompletionStatus(
     _In_     HANDLE       CompletionPort,